此次看门狗实验用了按键中断、LED、系统定时器、串口、看门狗定时器。 实验的内容:利用系统定时器触发LED每30ms闪烁一次,每2s清一次狗,看门狗的中断周期时3s,当BP2按键按下之后,程序进入死循环中,模拟系统死机状态,这是看门狗定时器不能即使清狗,进入看门狗中断函数,同时串口发出相关的信息。 下面说明一下看门狗定时器。 看门狗定时器用来防止系统进入死循环,一旦进入死循环,看门狗中断重启系统初始化相关系统参数。看门狗有一个12位的减计数器,接入时钟是32.768 kHz进过128分频后的时钟,所以最高可以计时16s。在处理器重启后,看门狗计数器的默认值是0xFFF。 为了阻止软件进入死循环进入看门狗中断,就必须每个一段时间重载一次看门狗定时器,重载看门狗定期器有一个窗口,就是[0,MDD],MDD在看门狗模式寄存器中有定义。看门狗计数器装载的初值在MDV中,当MDV的值减到0时,产生中断。在这里,有两个值,一个是MDV,一个是MDD,当计数器中的大于MDD时清狗,将会是无效的,在一般情况下,MDD和MDV两个值是相等的,这样在计数器任何时刻都可清狗。 如果WDT_SR被读或者RESET生成,相关的状态位将重启,中断将被清除,WDT_MR重载,重启减计数器。 下图是看门狗定时器的图解。
接着说明以下程序中的相关函数。 系统定时器中断函数,在主函数中, SysTick_Config(SystemCoreClock/1000); 这个是配置系统时钟的配置函数,配置的定时器初值是系统时钟4M/1000,也就是每1ms触发一次中断。 看门狗中断函数,看门狗模式里中断时只有处理器重启,在调试状态和闲事状态,看门狗中断停止。
这个是看门狗中断函数。
配置LED的函数。
串口初始化函数,有比特率的设置,奇偶校验设置。
按键中断设置,这个在我的按键中断帖子中有详细的介绍。
按键中断函数。下图是我的串口显示结果,另外在我的视频中也有实验结果。就写到这了!谢谢各位,希望大家支持!本人水平有限,又不对,希望谅解!!
|