1. WWDG配置步骤
2. 相关HAL库函数介绍
3.编程实战
WWDG_HandleTypeDef g_wwdg_handle;
/* 窗口看门狗初始化函数 */
void wwdg_init(uint8_t tr, uint8_t wr, uint32_t fprer)
{
g_wwdg_handle.Instance = WWDG;//寄存器基地址
g_wwdg_handle.Init.Counter = tr; //计数器的初始值
g_wwdg_handle.Init.Window = wr; //窗口上限值
g_wwdg_handle.Init.Prescaler = fprer; //分频系数
g_wwdg_handle.Init.EWIMode = WWDG_EWI_ENABLE; //Early Wakeup Interrupt Mode enable
HAL_WWDG_Init(&g_wwdg_handle);
}
/* WWDG MSP回调函数 */
//像在MSP中设置的这些内容,可能换一块板子,由于硬件的不同,就需要重新配置,我们将这样的内容放到MSP中进行配置
//HAL_WWDG_MspInit函数系统默认定义的是__weak,即允许用户进行重定义,这个地方有点中断服务回调函数的味道。
void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg)
{
__HAL_RCC_WWDG_CLK_ENABLE(); //开时钟
HAL_NVIC_SetPriority(WWDG_IRQn, 2, 3); //设置中断优先级
HAL_NVIC_EnableIRQ(WWDG_IRQn); //使能中断
}
/* WWDG中断服务函数 */
void WWDG_IRQHandler(void)
{
//HAL库的公共处理函数,在这里面会调用中断回调函数HAL_WWDG_EarlyWakeupCallback
//该函数的内容是需要我们自己实现的
HAL_WWDG_IRQHandler(&g_wwdg_handle);
}
/* WWDG提前唤醒回调函数 */
void HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg)
{
HAL_WWDG_Refresh(&g_wwdg_handle); //喂狗,否则会reset
LED1_TOGGLE();
}
标签:HAL,步骤,void,15,Init,WWDG,handle,wwdg From: https://www.cnblogs.com/-glb/p/17538079.html