FREERTOS必备知识-喂狗-死机

FREERTOS必备知识:

MUST修改地方:D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\Inc\FreeRTOSConfig.h

#define configASSERT( x ) if ((x) == 0) {taskDISABLE_INTERRUPTS();printf(">>>>>>>>>>>>>>>>freertos config assert %s<<<<<<<<<<<<<<<<<\n",__func__);  for( ;; );}


此后可以找到问题!!!

>>>>>>>>>>>>>>>>freertos config assert creat_mqtt_send_task<<<<<<<<<<<<<<<<<


找到问题:需要修改如下

configMINIMAL_STACK_SIZE*15--->10 OK

给他一个比较小的 内存才可以!!!


优先级也很重要!!
我现在事件组喂狗 比如在喂狗里面有最高优先级 其他的都是比他低!

喂狗:

/* 每个任务的喂狗 */

#define TASK_BLE_BIT           0x0001
#define TASK_KEY_BIT           0x0002
#define TASK_NET_BIT           0x0004

#define TASK_ALL_BIT            (TASK_BLE_BIT|TASK_KEY_BIT|TASK_NET_BIT)  
 

 

/* 每个任务的喂狗 */

#define TASK_BLE_BIT           0x0001
#define TASK_KEY_BIT           0x0002
#define TASK_NET_BIT           0x0004



#define TASK_ALL_BIT            (TASK_BLE_BIT|TASK_KEY_BIT|TASK_NET_BIT)  


EventGroupHandle_t   xWatchdogEventGroup;

configASSERT((xWatchdogEventGroup = xEventGroupCreate()));
	
	
	task_keep_alive(TASK_BLE_BIT);
void task_keep_alive( uint32_t taskBit)
{
    log(DEBUG , "任务喂狗:");
    if( (taskBit & TASK_BLE_BIT ) )
    {
        printf("蓝牙 ");
    }
    
    if( (taskBit & TASK_KEY_BIT ))
    {
        printf("按键 ");
    }
    
    if( (taskBit & TASK_NET_BIT))
    {
        printf("网络  ");
    }
    printf("\r\n");
    xEventGroupSetBits(xWatchdogEventGroup, taskBit);
}

		
void show_no_feed_task( uint32_t taskBit )
{
	    log(DEBUG , "任务没有喂狗:");
        if( (taskBit & TASK_BLE_BIT ) ==0)
        {
            printf("蓝牙 ");
        }
        
        if( (taskBit & TASK_KEY_BIT )==0)
        {
            printf("按键 ");
        }
        
        if( (taskBit & TASK_NET_BIT)==0)
        {
            printf("网络  ");
        }
        printf("\r\n");
}


/* 集中喂狗 需要很高的优先级 --软定时器*/  osThreadDef(main, main_task, osPriorityRealtime, 0, 216);
        EventBits_t uxBits;

        uxBits = xEventGroupWaitBits(xWatchdogEventGroup,TASK_ALL_BIT, pdTRUE,pdTRUE,2500);
        if((uxBits & TASK_ALL_BIT) == TASK_ALL_BIT)
        {
            HAL_IWDG_Refresh(&hiwdg);
            xEventGroupClearBits(xWatchdogEventGroup, uxBits);
        }
		else
		{
			log(INFO,"ubits = %x " , uxBits);
            show_no_feed_task(uxBits);
		}
		
		

 

 

具体:

Searching for '\bosThreadDef\b'...
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\Src\freertos.c(156) :   osThreadDef(main, main_task, osPriorityRealtime, 0, configMINIMAL_STACK_SIZE*8);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GMODES\GW5500\gw5500_mode.c(145) : 	osThreadDef( w5500NULL, w5500_task_entry , osPriorityRealtime, 0, configMINIMAL_STACK_SIZE*15);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GMODES\GSIM800C\Gsim800c_task.c(161) :     osThreadDef( GSMNULL, gsm_task_entry , osPriorityRealtime, 0, configMINIMAL_STACK_SIZE*20);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GAPP\GTaskUP\GTaskup.c(161) : 	osThreadDef( upNULL, up_task_entry , osPriorityLow, 0, configMINIMAL_STACK_SIZE*10);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GAPP\Gmqtt\mqtt\mqtt_client.c(191) :     osThreadDef( mqtt_send, mqtt_send_task , osPriorityNormal, 0, configMINIMAL_STACK_SIZE*10);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GAPP\Gmqtt\GTaskMQTTRecv.c(316) : 	osThreadDef( MQTTRECVNULL, mqtt_recv_entry , osPriorityNormal, 0, configMINIMAL_STACK_SIZE*10);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GAPP\Gmqtt\GTaskMQTT.c(299) :     osThreadDef( MQTTNULL, mqtt_task_entry , osPriorityHigh , 0, configMINIMAL_STACK_SIZE*20);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GAPP\GKEY\Gkey.c(177) :     osThreadDef( KEYNULL, KEY_task_entry , osPriorityHigh, 0, configMINIMAL_STACK_SIZE*3);  
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GAPP\Gappw5500\appw5500.c(51) :     osThreadDef( w5500NULL, w5500_task_entry , osPriorityHigh, 0, configMINIMAL_STACK_SIZE*10); w5500Taskname = osThreadCreate(osThread(w5500NULL), NULL);
D:\GKOSON_BACK_GARDEN\TOUCH_CLASS\TOUCH-KING\KEIL\GAPP\GAPPBLE\GTaskBLE.c(56) :     osThreadDef( BLENULL, BLE_task_entry , osPriorityHigh, 0, configMINIMAL_STACK_SIZE*7);
Lines matched: 15      Files matched: 11      Total files searched: 408

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值