stm32 独立看门狗学习
2015-01-26 12:43
513 查看
STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障。
独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。
我们的实验这样设计,主函数开始的时候,向串口输出“Hello World”,然后启动看门口(溢出时间设定为3秒钟)。在按下按键的时候喂狗,同时串口打印“喂狗”。
预期结果:如果不按按键,则约每三秒重启一次,现象是串口隔三秒就会打印“Hello World”;如果在启动后的3秒内按键,则显示“喂狗”,再在3秒内按键……这样保证不重启。
看一下代码吧。
独立看门狗的初始化:
PRER 就是表格中的PR[2:0],取值范围是0-7;
RLR就是表格中的RL[11:0],取值范围是0x000-0xFFF;
注意:这里的时间是粗略计算的,不是那么准确。
溢出时间 = 2^PR*(RL+1)/10
单位:ms
如果我们定时3秒钟,那么应该是:
IWDG_Init(4,1874); // 2^4 * (1874+1) / 10 (ms)= 16*1875/10 (ms)= 3000(ms) = 3s
主函数代码:
喂狗的操作是:
我们在按键中断处理中喂狗:
实验结果如图。
如果不喂狗,那么大约3秒钟就会重启。
如果喂狗,效果如下。
独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。
我们的实验这样设计,主函数开始的时候,向串口输出“Hello World”,然后启动看门口(溢出时间设定为3秒钟)。在按下按键的时候喂狗,同时串口打印“喂狗”。
预期结果:如果不按按键,则约每三秒重启一次,现象是串口隔三秒就会打印“Hello World”;如果在启动后的3秒内按键,则显示“喂狗”,再在3秒内按键……这样保证不重启。
看一下代码吧。
独立看门狗的初始化:
void IWDG_Init(u8 prer,u16 rlr) { IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对寄存器 IWDG_PR 和 IWDG_RLR的写操作 IWDG_SetPrescaler(prer); //设置预分频值 IWDG_SetReload(rlr); //设置重装载值 IWDG_ReloadCounter(); //按照重装载值装载IWDG计数器 IWDG_Enable(); //看门狗使能 }这个函数有两个参数:prer 和 rlr
PRER 就是表格中的PR[2:0],取值范围是0-7;
RLR就是表格中的RL[11:0],取值范围是0x000-0xFFF;
注意:这里的时间是粗略计算的,不是那么准确。
溢出时间 = 2^PR*(RL+1)/10
单位:ms
如果我们定时3秒钟,那么应该是:
IWDG_Init(4,1874); // 2^4 * (1874+1) / 10 (ms)= 16*1875/10 (ms)= 3000(ms) = 3s
主函数代码:
int main(void) { delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); uart_init(9600); //串口初始化 printf("Hello World ! \r\n"); IWDG_Init(4,1874); // 看门狗初始化并使能 key_init(); //按键IO初始化 EXTIX_Init(); // 按键中断初始化 while(1) { ; } }
喂狗的操作是:
void IWDG_Feed(void) { IWDG_ReloadCounter();//reload }
我们在按键中断处理中喂狗:
void EXTI0_IRQHandler(void) { delay_ms(10); //消除抖动 if(KEY3==1) //WK_UP { printf("喂狗......\r\n"); IWDG_Feed(); } EXTI_ClearITPendingBit(EXTI_Line0); //清除中断标志位 }
实验结果如图。
如果不喂狗,那么大约3秒钟就会重启。
如果喂狗,效果如下。
相关文章推荐
- cortex_m3_stm32嵌入式学习笔记(七):独立看门狗&窗口看门狗
- STM32学习——STM32 独立看门狗的使用
- stm32 独立看门狗学习
- stm32 窗口看门狗学习(一)
- STM32 独立看门狗IWDG 与窗口看门狗WWDG
- 资料学习:STM32之看门狗
- STM32待机模式唤醒测试以及独立看门狗测试
- cortex_m3_stm32嵌入式学习笔记(二):独立按键实验(IO输入)
- 分频计数器STM32F10x 学习笔记7(独立看门狗IWDG 模块)
- STM32之独立看门狗和窗口看门狗定时器
- stm32 窗口看门狗学习(二)
- STM32窗口看门狗_原子战舰WWDG例程学习笔记
- STM32 独立看门狗简介
- STM32学习-理解窗口看门狗
- stm32 独立看门狗[操作寄存器+库函数]
- stm32_独立看门狗
- STM32F10x 学习笔记7(独立看门狗IWDG 模块)
- STM32F10x 学习笔记7(独立看门狗IWDG 模块)
- STM32之------独立看门狗(IWDG)和窗体看门狗(WWDG)
- STM32F0xx_看门狗(独立+窗口)配置详细过程