|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
AT32的看门狗是一个12位递减计数器,当看门狗递减到0时产生系统复位,使用LSI(频率大约为40Khz)作为看门狗时钟,,在应用程序中,需要不断地刷新计数器(俗称喂狗),以防止看门狗发生复位,看门狗虽然是一个很小的外设,功能也相对简单,但是对我们的设备能可靠的运行起到了很大的作用,它可以在一些意外情况(比如干扰,程序bug)导致程序跑飞时,复位mcu8 U5 k9 a$ r( C
9 F& h* @/ {; W /* 解锁看门狗写保护*/, e& ^ s2 {4 V0 D# y5 O6 A: p8 S
IWDG_KeyRegWrite(IWDG_KeyRegWrite_Enable);
* [$ O& G6 c1 F( ]/ w. x
1 M1 s a; |7 t+ m/ S; ? /* 设置分频系数为32*/
& @$ s W8 Z4 |5 I1 y1 Q( ] IWDG_SetPrescaler(IWDG_Psc_32);6 K0 ?) W; \, Z5 I
, o) P# p5 j" z, k /* 设置看门狗的复位时间为250ms. (LsiFreq一般等于40000hz)* i2 n$ g, p2 R
重载值 = 250ms / (32/LsiFreq)
- W( [6 ^& k2 C2 C8 G, s = 0.25s / (32/LsiFreq)
1 A5 x+ r; |% ]# e& | = LsiFreq/(32 * 4)
" ~2 w3 b, e3 d( t8 b! `4 v0 v! ^# c = LsiFreq/128
L+ c1 ]8 M. N */
+ v1 l7 r+ \& Y9 A2 T# s. T" Y" t4 N IWDG_SetReload(LsiFreq / 128);
4 V6 f. C4 I# N& n5 f0 D7 f9 f2 ? C6 W
/* 重载看门狗计数器*/- r: d, I# W5 Y: S# ^$ k
IWDG_ReloadCounter();
) | B: U: p8 a1 [5 H7 i/ D$ g- l, l S! W: b5 {. q
/* 使能看门狗 */
6 T/ b( x" H, S; g$ {/ ?) r IWDG_Enable();. S f" B0 l$ l2 p- G/ d( V J
" `, Q8 z7 b# T* w) y' T* m |
|