技术笔记!
1.WWDG(窗口看门狗)简介
本质:能产生系统复位信号和提前唤醒中断的计数器。
特性:
递减的计数器;
 当递减计数器值从 0x40减到0x3F时复位(即T6位跳变到0);
 计数器的值大于W[6:0]值时喂狗会复位;
 提前唤醒中断 (EWI):当递减计数器等于 0x40 时可产生;
喂狗:在窗口期内重装载计数器的值,防止复位。
作用:软件异常,精准时间把控

2. WWDG工作原理(掌握)

3. WWDG框图

4. WWDG寄存器(熟悉)
4.1 控制寄存器(WWDG_CR)

4.2 配置寄存器(WWDG_CFR)

4.3 状态寄存器(WWDG_SR)

5. WWDG超时时间计算(掌握)

6. WWDG配置步骤(掌握)

7. 相关HAL库函数

8. IWDG和WWDG主要的区别

9. 窗口看门狗实验
wdg.c
WWDG_HandleTypeDef g_wwdg_handle;                           //句柄
/* WWDG初始化函数 */
void wwdg_init(uint8_t tr, uint8_t wr, uint16_t prep)
{
   g_wwdg_handle.Instance = WWDG;                           //基地址
   g_wwdg_handle.Init.Counter = tr;                         //计数值
    g_wwdg_handle.Init.Window = wr;                         //窗口值
    g_wwdg_handle.Init.Prescaler = prep;                    //预分频系数
    g_wwdg_handle.Init.EWIMode = WWDG_EWI_ENABLE;           //提前中断使能
    
}
/*msp回调函数*/
void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg)
{
    __HAL_RCC_WWDG_CLK_ENABLE();            //WWDG使能
    HAL_NVIC_SetPriority(WWDG_IRQn, 2, 3);        //中断优先级
    HAL_NVIC_EnableIRQ(WWDG_IRQn);                  //中断使能
}
/* WWDG中断服务函数 */
void WWDG_IRQHandler(void)
{
    HAL_WWDG_IRQHandler(&g_wwdg_handle);
}
/* WWDG提前唤醒回调函数 */
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)
{
    HAL_WWDG_Refresh(&g_wwdg_handle);
    LED1_TOGGLE();
}main.c
int main(void)
{
    HAL_Init();                             /* 初始化HAL库 */
    sys_stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟为72Mhz */
    delay_init(72);                         /* 延时初始化 */
    usart_init(115200);                     /* 串口初始化为115200 */
    led_init();                             /*初始化led*/
    
    if(__HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST) != RESET)
    {
        printf("窗口看门狗复位\r\n");
        __HAL_RCC_CLEAR_RESET_FLAGS();
    }
    else
    {
        printf("外部复位\r\n");
    }
    
    delay_ms(500);
    printf("请在窗口期内喂狗\r\n\r\n");
    wwdg_init(0x7f, 0x5f, WWDG_PRESCALER_8);
    
    while(1)
    {
        delay_ms(90);
        HAL_WWDG_Refresh(&g_wwdg_handle);
        LED0_TOGGLE();
    }
   
}实验小结:
本次实验主要是为了熟悉WWDG的使用,首先对窗口看门狗句柄相关成员基地址以及初始化变量赋值,然后通过MSP回调函数对相关时钟以及中断使能,最后通过重定义中断服务函数WWDG_IRQHandler进行操作。
















![[BLE] Heart Rate Protocol - Sensor](https://img-blog.csdnimg.cn/direct/74dcd9cd28584837b10ea1fe10768151.png)


