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; ...........
|