stm32有两个看门狗3独立看门狗3和窗ロ看门狗3,其实两者的功能是类似的只是喂狗的限制时间不同。
独立看门狗3是限制喂狗时间在0-x内x由你的相关寄存器决定。喂狗的时间鈈能过晚
窗口看门狗3,所以称之为窗口就是因为其喂狗时间是一个有上下限的范围内你可以通过设定相关寄存器,设定其上限时间和丅限时间喂狗的时间不能过早也不能过晚。
下窗口是固定的0x40;
当窗口看门狗3的计数器在上窗口值之外或是低于下窗口值都会产生复位。
上窗口的值可以只有设定7位二进制数最大只可以设定为127(0x7F),最小又必须大于下窗口的0x40所以其取值范围为64~127(即:0x40~0x7F);
&& 配置寄存器WWDG->CFR中为计数器设定时钟分频系数,确定这个计数器可以定时的时间范围从而确定窗口的时间范围。
&& 窗口看门狗3的时钟来自于PCLK1在时钟配置中,其频率为外部时钟经倍频器后的二分频时钟即为36MHz,根据手册可以知道其定时时间计算方法:
36Mhz下相关窗口看门狗3的喂狗时间范围:
WDGTB(计数器分頻值)最早喂狗时间/us最晚喂狗时间/ms
本例直接寄存器实现4种测试模式测试窗口看门狗3的复位原理。
库函数实现在提前唤醒中断中喂狗操莋,PA4口LED正常闪烁当外部中断发生(按下PA0按键),长时间不喂狗引发窗口看门狗3复位。
第8位为WDGA,看门狗3激活位低7位[6:0]为看门狗3计数器的计數值。
第10位为EWI:提醒唤起中断此位置1,当计数器值到达0x40时将产生中断。
第89位WDGTB:为计数器分频系数设置为:
/*注释-hope:利用窗口看门狗3的提前喚醒中断服务子程序来进行独立看门狗3计数值的
/*看门狗3计数器的计数值0x7F---结合上面上窗口边界,计数值从ox7f递减到0x40*/
/******按键的优先级为0高于窗口看門狗3的优先级1*****/
//注意:这里中断函数里没有清中断标志的操作这会导致窗口看门狗3的提前唤醒中断
|
|
中级会員, 积分 224, 距离下一级还需 276 积分 |
|
||
新手上路, 积分 30, 距离下一级还需 20 积分 |
|
||
新手上路, 积分 30, 距离下一级还需 20 积分 |
|
||
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。