问题:如何实现多任务下,存在一个或者多个任务异常时,触发看门狗。
环境:STM32F407VET6,IWDG,FreeRTOS。
思路:任务内部进行对事件组操作,看门狗任务来维护事件组,当超过设定的最大喂狗时间还没有喂狗的话,程序会重启。
辅助代码:
typedef struct __BIT32
{
uint8_t bit0:1;
uint8_t bit1:1;
uint8_t bit2:1;
uint8_t bit3:1;
uint8_t bit4:1;
uint8_t bit5:1;
uint8_t bit6:1;
uint8_t bit7:1;
uint8_t bit8:1;
uint8_t bit9:1;
uint8_t bit10:1;
uint8_t bit11:1;
uint8_t bit12:1;
uint8_t bit13:1;
uint8_t bit14:1;
uint8_t bit15:1;
uint8_t bit16:1;
uint8_t bit17:1;
uint8_t bit18:1;
uint8_t bit19:1;
uint8_t bit20:1;
uint8_t bit21:1;
uint8_t bit22:1;
uint8_t bit23:1;
uint8_t bit24:1;
uint8_t bit25:1;
uint8_t bit26:1;
uint8_t bit27:1;
uint8_t bit28:1;
uint8_t bit29:1;
uint8_t bit30:1;
uint8_t bit31:1;
}BIT32;
typedef union __UINT32_BT
{
BIT32 Bit;
uint32_t uStatus;
}UINT32_BT;
// 事件
EventGroupHandle_t EventGroupHandler;