前言
本文记录了我学习STM32CubeMX的过程,方便以后回忆。我们使用的开发板是基于STM32F103C6T6的。本章记录了独立看门狗的使用配置。要学习的话,注意流程一说的,省略的内容。
基础
- 独立看门狗(WWDG)开启后,复位自动开启。
- 独立看门狗(WWDG)的时钟源为独立的RC振荡器LSI(40MHz)提供,软件配置分频系数最大为256。
- 看门狗被激活后,递减计数器,则在计数器计数至0x000时产生复位,值的寄存器为12位,所以最大值为4096(0xFFF)。
- 喂狗行为,在键寄存器中写入喂狗指令(0xAAAA),就会把重装载寄存器的数值重装给计数值。
- 预分频寄存器和重装载寄存器有写保护,修改数值时,先向键寄存器发送指令。
流程
独立看门狗 实验目的:检测独立看门狗超时后,复位有没有被触发。
-
以下省略LED引脚(PC13)的配置。工程文件输出keil工程配置省略。这个就不讲了,其它文章讲过了。独立看门狗(WWDG)的时钟源为独立的RC振荡器LSI(40MHz)提供,在下图有标注。
-
独立看门狗的配置
配置一个超时时间为40ms:
(主频/分频系数)*计数值=(40KHz/4)*(400-1+1)=40ms (应该要减1吧,大概大概)
配置完成后,生成工程。下面有,官方手册配置参数介绍
-
keil中打开,生成的工程。
喂狗超时时间为40ms,两个测试:
测试1:不加喂狗程序。主程序,延时20ms后点灯,40ms后被复位。现象,小灯不断闪烁。
测试2:加喂狗程序。主程序,延时40ms后点灯,并加喂狗程序。现象,小灯一直亮。
上述两个测试我都以实验过,代码和现象是对的,下述是介绍代码。
-
测试1
//关键代码,主函数中加上 //现象,小灯不断闪烁。(LED上电默认高电平) HAL_Delay(20); //延时20ms HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); //点亮LED
-
测试2
//关键代码,主函数中加上 //现象,小灯一直亮(LED上电默认高电平) HAL_Delay(20); //延时20ms HAL_IWDG_Refresh(&hiwdg); //喂狗(重装40ms) HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); //点亮LED
-