【摘要】:表4.15IWDG库函数使用IWDG的一般配置步骤如下。设置IWDG_PR的值:设置看门狗的分频系数。向IWDG_KR中写入OxAAAA:以使STM32F103重新加载IWDG_RLR的值到看门狗计数器中。向IWDG_KR中写入OxCCCC:以启动STM32F107的看门狗。编程实例例4.13读下面的程序,分析看门狗使用的方法。从程序可以看出,看门狗“喂狗”一般在while循环体中,“喂狗”对应的时间必须大于while循环体循环一次的时间,否则程序将被复位。由于看门狗时钟不是很精确,设置重装载值时要留出一定的余量。
IWDG库函数为stm32f10x_iwdg.c,头文件为stm32f10x_iwdg.h。IWDG库函数包含如表4.15所示的函数。
表4.15 IWDG库函数
使用IWDG的一般配置步骤如下。
(1)向IWDG_KR中写入0x5555:以取消IWDG_PR和IWDG_RLR的写保护,使后面可以操作这两个寄存器。
(2)设置IWDG_PR的值:设置看门狗的分频系数。
(3)设置IWDG_RLR的值:设置看门狗的重装载的值。
(4)向IWDG_KR中写入OxAAAA:以使STM32F103重新加载IWDG_RLR的值到看门狗计数器中。
(5)向IWDG_KR中写入OxCCCC:以启动STM32F107的看门狗。(www.daowen.com)
注意:IWDG有自己独立的时钟,所以不需要像其他外设那样另外开启时钟。
编程实例
例4.13读下面的程序,分析看门狗使用的方法。
从程序可以看出,看门狗“喂狗”一般在while(1)循环体中,“喂狗”(重装载值)对应的时间必须大于while(1)循环体循环一次的时间,否则程序将被复位。
对于本例while(1)循环体循环一次的时间约为1s,“喂狗”(重装载值)对应的时间为1.6s。由于看门狗时钟不是很精确,设置重装载值时要留出一定的余量。
将while(1)循环体中IWDG_ReloadCounter();语句注释掉,比较两次运行结果。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关基于物联网的STM32单片机应用与实践的文章