飞思卡尔kinetis L系列芯片之最简单模块watchdog
来源:互联网 发布:淘宝助理mac版本 编辑:程序博客网 时间:2024/05/17 22:58
Kinetis L是飞思卡尔32位微控制器/单片机,基于ARM® Cortex®-M0+内核,集成了丰富的功能和特性,具有出类拔萃的低功耗性能和扩展性。
官网链接:freescale kinetis L serial
watchdog用来监控系统跑飞,程序跑飞后通过引起复位来重启程序。
飞思卡尔kinetis系列芯片对于新手来讲还是有些门槛的,MCU内多大几十个IP模块,不消说低功耗管理中设计多个模块一起协作,单说ADC采用,ADC ip里寄存器多的一塌糊涂。kinetis复杂的设计也给了程序设计者更多的灵活性。
用了一年的kinetis K/L系列芯片,发现watchdog可以算是其最简单的模块了,只需要两组语句即可实现开启看门狗和喂狗(其他采用默认设置)。
开启看门狗在SIM模块中,SIM_COPT寄存器第2、3位不仅用来开启看门狗,通过写数值可以设置看门狗的超时时间。
开启看门狗:
SIM_COPT = 3<<2;//开启看门狗,并设置timeout为1024ms
SIM_COPT[2,3]
00b:禁能看门狗
01b: 开启看门狗,并设置timeout为32ms
10b:开启看门狗,并设置timeout为256ms
11b:开启看门狗,并设置timeout为1024ms
喂狗:
SIM_SRVCOP = 0x55;
SIM_SRVCOP = 0xAA;
设计程序时,要记住经常喂狗,不能超过设置的1024ms,如果超过,就会导致重启复位,达不到检测程序跑飞目的。尤其是调用一些延迟函数时,大家要注意,如果要延迟5000ms,可以将5000ms分为多个短时间延迟,每次延迟后喂下狗。
delay(5000);
改为
delay(1000ms);
SIM_SRVCOP = 0x55;
SIM_SRVCOP = 0xAA;
delay(1000);
SIM_SRVCOP = 0x55;
SIM_SRVCOP = 0xAA;
...........
PS:
1.SIM_COPT寄存器在系统启动后只能写一次,之后再写该寄存器并不生效,所以最好将需要设定的值一次写进去。
2.在一些低功耗模式下看门狗近进入static状态,计数器停止计数,退出该低功耗模式后继续计数,看门狗在各个模式下的功能如下图,引自KL16第七章电源管理章节
CPO中停止工作正常工作停止工作,
在PSTOP2中正常工作停止工作停止工作关闭
- 飞思卡尔kinetis L系列芯片之最简单模块watchdog
- 飞思卡尔kinetis L系列芯片之security
- 飞思卡尔kinetis L系列芯片之debug
- 飞思卡尔kinetis L系列芯片之电源管理
- 飞思卡尔kinetis L系列MCU bootloader引导程序
- 飞思卡尔kinetis L系列MCU之中断5扇门
- 飞思卡尔Kinetis芯片中NVIC模块的中断寄存器的介绍及其应用举例
- Kinetis K系列(飞思卡尔)
- 初识飞思卡尔芯片-imx6系列
- 飞思卡尔Kinetis系列单片机被锁住后,怎么解锁
- 飞思卡尔Kinetis 60(K60)时钟系统分析
- 飞思卡尔Kinetis 60(K60)时钟…
- ARM Cortex-M0+Kinetis L系列学习笔记_MCG模块简介
- 飞思卡尔XS128系列(二) PWM模块
- ARM Cortex-M0+Kinetis L系列学习笔记_Common.c
- ARM Cortex-M0+Kinetis L系列学习笔记_MKL25Z4.h
- 飞思卡尔PWM模块
- 飞思卡尔ATD模块
- HDU 5090 Game with Pearls(二分匹配)
- POJ 2386 动态规划
- (三)张正友标定法 【计算机视觉学习笔记--双目视觉几何框架系列】
- Swift_基础语法1
- c/c++基础(八) 函数指针
- 飞思卡尔kinetis L系列芯片之最简单模块watchdog
- 在vmware中安装ubuntu server后,无法显示共享目录的解决方案
- Linux文件系统及操作
- 堆 栈 大小端
- PHP正则表达式 /i, /s, /x,/u, /U, /A, /D, /S等模式修饰符
- Java 基础易错点总结1
- Perl正则表达式
- Android Dalvik虚拟机内存分配问题
- 基于scrapy的小爬虫