本帖最后由 骑着蜗牛狂奔O 于 2022-2-21 19:39 编辑
AT32的看门狗是一个12位递减计数器,当看门狗递减到0时产生系统复位,使用LICK(频率大约为40Khz)作为看门狗时钟,,在应用程序中,需要不断地刷新计数器(俗称喂狗),以防止看门狗发生复位,看门狗虽然是一个很小的外设,功能也相对简单,但是对我们的设备能可靠的运行起到了很大的作用,它可以在一些意外情况(比如干扰,程序bug)导致程序跑飞时,复位mcu
/* 解锁看门狗写保护*/
wdt_register_write_enable(TRUE);
/* 设置分频系数为32*/
wdt_divider_set(WDT_CLK_DIV_32);
/* 设置看门狗的复位时间为250ms. (LickFreq一般等于40000hz)
重载值 = 250ms / (32/LickFreq)
= 0.25s / (32/LickFreq)
= LickFreq/(32 * 4)
= LickFreq/128
*/
wdt_reload_value_set(LickFreq / 128);
/* 重载看门狗计数器*/
wdt_counter_reload();
/* 使能看门狗 */
wdt_enable();
AT32关于看门狗的官方demo见以下路径
project\at_start_f403a\examples\wdt\wdt_reset |