STM32-FreeRTOS使用独立看门狗实现多任务监护

问题:如何实现多任务下,存在一个或者多个任务异常时,触发看门狗。

环境: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

你可能感兴趣的:(STM32,stm32,单片机,arm)