硬件看门狗实际上就是一个定时器,有一个输入和输出,它的功能是定期检查芯片内部的情况,一旦发生错误就向芯片发出重启信号。使用硬件看门狗,可以预防程序发生死循环。应用看门狗电路后单片机可以在无人状态下连续工作。硬件看门口电路,利用一个定时器来监控主程序的运行。
1.硬件看门狗原理图
2.TPL5010时序图
///硬件看门狗初始化。需要将WAKE引脚设置为输入模式,DONE引脚设置输出模式
#define WD_DOWN_Pin GPIO_PIN_11
#define WD_DOWN_GPIO_Port GPIOD
#define WD_WAKE_Pin GPIO_PIN_12
#define WD_WAKE_GPIO_Port GPIOD
#define WD_DOWN_PIN_SET HAL_GPIO_WritePin(GPIOD, WD_DOWN_Pin, GPIO_PIN_SET)
#define WD_DOWN_PIN_RESET HAL_GPIO_WritePin(GPIOD, WD_DOWN_Pin, GPIO_PIN_RESET)
#define WD_DOWN_PIN HAL_GPIO_ReadPin(GPIOD, WD_WAKE_Pin)
static void rt_watchdog_thread_entry(void* parameter)
{
rt_thread_delay(50); //等待稳定下来
WD_DOWN_PIN_SET;
rt_thread_delay(1); //输出一个脉冲喂狗
WD_DOWN_PIN_RESET;
while(1)
{
if(WD_DOWN_PIN ==1) //拉升高电平持续时间是20ms左右
{
rt_thread_delay(50); //等待WAKE拉低电平
WD_DOWN_PIN_SET;
rt_thread_delay(1); //大于100ns高电平脉冲喂狗
WD_DOWN_PIN_RESET;
}
//app_comm_door_motor_tx_process();
rt_thread_delay(5); //间隔采样时间需要小于20ms
}
}
主要根据TPL5010芯片手册的时序图,编写相应控制代码。
https://download.csdn.net/download/weixin_43211055/88737506?spm=1001.2014.3001.5503