打印
[Kinetis]

飞思卡尔kinetis L系列芯片之最简单模块watchdog

[复制链接]
566|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vigous1|  楼主 | 2015-2-8 22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

Kinetis L是飞思卡尔32位微控制器/单片机,基于ARM® Cortex®-M0+内核,集成了丰富的功能和特性,具有出类拔萃的低功耗性能和扩展性。



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;

...........


相关帖子

沙发
vigous1|  楼主 | 2015-2-8 22:28 | 只看该作者
PS:
1.SIM_COPT寄存器在系统启动后只能写一次,之后再写该寄存器并不生效,所以最好将需要设定的值一次写进去。
2.在一些低功耗模式下看门狗近进入static状态,计数器停止计数,退出该低功耗模式后继续计数,看门狗在各个模式下的功能如下图,引自KL16第七章电源管理章节
VLPRVLPWStopVLPSLLSVLLSx
watchdog正常工作,
CPO中停止工作
正常工作停止工作,
在PSTOP2中正常工作
停止工作停止工作关闭

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

88

主题

427

帖子

15

粉丝