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

FREERTOS必备知识-喂狗-死机相关推荐

  1. Java高级工程师必备知识!华为java机试题库社招

    前言 对Java开发的知识点进行深入的学习,并打算做成系列,先从基础常用的重点**(面试点)**知识开始,后续会陆续扩展,加油! 涉及到底层的可能代码块会多点,但要学习底层不看代码看啥?代码说明一切! ...

  2. STM32复位死机(无法启动)

    STM32复位死机(无法启动) 嗯,不知道怎么说,stm32的看门狗死机了,下面是仿真时报错信息: The processor has escalated a configurable-priorit ...

  3. 单片机为什么会“死机”?看门狗来帮助你。

    我玩单片机的过程中大大小小肯定都会遇到一些问题,不遇到问题是不可能的,出现问题肯定是板子某一个部分出了问题:单片机出现死机的情况也分为很多种,电压的地不稳定.元器件干扰.短路.断路等都会导致单片机故障 ...

  4. FreeRTOS+STM32F103中断中发送任务通知单片机死机问题

    最近在调试FreeRTOS系统遇到了一个比较奇怪的问题,在STM32F103最小系统上调试任务通知模拟事件标志组功能时,中断一触发,单片机就会死机.通过查询方式发送任务通知没任何问题,一旦用按键触发外 ...

  5. 0. crash和kdump 死机问题解决-x86_64-基础知识

    背景知识: x86_64体系结构的通用寄存器 32位x86的通用寄存器:8个通用寄存器 eax 一般用作累加器(add) ebx 一般作为基地址寄存器(base) ecx 一般作为计数寄存器(coun ...

  6. STM32最彻底的死机是什么?看门狗也挂了?

    STM32最彻底的死机是什么?看门狗也挂了? https://www.amobbs.com/thread-5677587-1-1.html (出处: amoBBS 阿莫电子论坛)

  7. 串口服务器通讯中断不流畅,在FreeRTOS下串口中断不正常工作,一中断就死机为何?...

    CPU: UC3A0512 AVR32Studio 2.1.1 + Tool 2.1.6 中断处理程序如下: 问题描述: 系统跑FreeRTOS系统,开几个任务. 运行正常. 但串口有数据进来的时候立 ...

  8. freertos程序死机原因

    一.开机死机原因 1.一般是某任务栈溢出所致 栈溢出一般有两个原因: 1).此任务函数的代码量太大,或调用了某个比较大的函数. 2).此任务的函数内有比较大的局部变量的数组 调试方法: 1.先关闭所有 ...

  9. 解决T400死机的问题!

    终于解决这几天突然出现的t400 vista假死问题! 原来罪魁祸首是 ThinkPad -- Intel Matrix Storage Manager驱动程序(Windows XP/vista 32 ...

最新文章

  1. Uva 10305 给任务排序
  2. linux c 函数 link symlink unlink 链接相关功能
  3. 回文树笔记(转自quack_quack)
  4. jupyter 方框 汉字,jupyter画图中文显示乱码问题解决办法
  5. flock lock ex php,php – flock有可能用LOCK_EX返回false吗?
  6. java配置文件工具类,java项目加载配置文件的工具类
  7. ssms没有弹出服务器验证_powerbi报表服务器搭建链接
  8. 【做题】CSA49F - Card Collecting Game——思维dp
  9. [转]IIS的各种身份验证详细测试
  10. layui监听radio点击事件
  11. E680手机内存已满终极解决方案
  12. MATLAB连接API接口
  13. Civil3D创建装配集合
  14. python scikit learn 关闭开源_Scikit Learn安装教程
  15. 大数据查询工具HBase读写设计与实践
  16. 模式识别基本概念小结(学习笔记)
  17. html设置ie9兼容性视图,ie9浏览器设置兼容性视图在哪里设置
  18. 关于泰勒展开的细节-《三体》读后感的读后感
  19. 通过ADB命令行卸载或删除你的Android设备中的应用
  20. 2020 年我学习到的 20 条软件工程准则

热门文章

  1. 单烤FPU怎么操作 单烤FPU多少度可以稳定使用
  2. 不可错过的年度AI学术盛会 2021新一代人工智能院士高峰论坛暨启智开发者大会议程惊喜发布~
  3. 2012伦敦奥运会垃圾邮件大战提前上演
  4. 风靡全球3500万用户!realme真我8款潮玩新品亮相
  5. 1.3一摞烙饼的问题
  6. java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw
  7. Unity DOTS 学习笔记1 - ECS 0.50介绍和安装
  8. 介绍arxiv.org的文献更新管理工具arxiv-sanity
  9. 黑马JAVA P163 字节缓冲流的性能分析
  10. 满屏飞舞的心HTML动画,CSS3制作蝴蝶飞舞动画