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
FREERTOS必备知识-喂狗-死机相关推荐
- Java高级工程师必备知识!华为java机试题库社招
前言 对Java开发的知识点进行深入的学习,并打算做成系列,先从基础常用的重点**(面试点)**知识开始,后续会陆续扩展,加油! 涉及到底层的可能代码块会多点,但要学习底层不看代码看啥?代码说明一切! ...
- STM32复位死机(无法启动)
STM32复位死机(无法启动) 嗯,不知道怎么说,stm32的看门狗死机了,下面是仿真时报错信息: The processor has escalated a configurable-priorit ...
- 单片机为什么会“死机”?看门狗来帮助你。
我玩单片机的过程中大大小小肯定都会遇到一些问题,不遇到问题是不可能的,出现问题肯定是板子某一个部分出了问题:单片机出现死机的情况也分为很多种,电压的地不稳定.元器件干扰.短路.断路等都会导致单片机故障 ...
- FreeRTOS+STM32F103中断中发送任务通知单片机死机问题
最近在调试FreeRTOS系统遇到了一个比较奇怪的问题,在STM32F103最小系统上调试任务通知模拟事件标志组功能时,中断一触发,单片机就会死机.通过查询方式发送任务通知没任何问题,一旦用按键触发外 ...
- 0. crash和kdump 死机问题解决-x86_64-基础知识
背景知识: x86_64体系结构的通用寄存器 32位x86的通用寄存器:8个通用寄存器 eax 一般用作累加器(add) ebx 一般作为基地址寄存器(base) ecx 一般作为计数寄存器(coun ...
- STM32最彻底的死机是什么?看门狗也挂了?
STM32最彻底的死机是什么?看门狗也挂了? https://www.amobbs.com/thread-5677587-1-1.html (出处: amoBBS 阿莫电子论坛)
- 串口服务器通讯中断不流畅,在FreeRTOS下串口中断不正常工作,一中断就死机为何?...
CPU: UC3A0512 AVR32Studio 2.1.1 + Tool 2.1.6 中断处理程序如下: 问题描述: 系统跑FreeRTOS系统,开几个任务. 运行正常. 但串口有数据进来的时候立 ...
- freertos程序死机原因
一.开机死机原因 1.一般是某任务栈溢出所致 栈溢出一般有两个原因: 1).此任务函数的代码量太大,或调用了某个比较大的函数. 2).此任务的函数内有比较大的局部变量的数组 调试方法: 1.先关闭所有 ...
- 解决T400死机的问题!
终于解决这几天突然出现的t400 vista假死问题! 原来罪魁祸首是 ThinkPad -- Intel Matrix Storage Manager驱动程序(Windows XP/vista 32 ...
最新文章
- Uva 10305 给任务排序
- linux c 函数 link symlink unlink 链接相关功能
- 回文树笔记(转自quack_quack)
- jupyter 方框 汉字,jupyter画图中文显示乱码问题解决办法
- flock lock ex php,php – flock有可能用LOCK_EX返回false吗?
- java配置文件工具类,java项目加载配置文件的工具类
- ssms没有弹出服务器验证_powerbi报表服务器搭建链接
- 【做题】CSA49F - Card Collecting Game——思维dp
- [转]IIS的各种身份验证详细测试
- layui监听radio点击事件
- E680手机内存已满终极解决方案
- MATLAB连接API接口
- Civil3D创建装配集合
- python scikit learn 关闭开源_Scikit Learn安装教程
- 大数据查询工具HBase读写设计与实践
- 模式识别基本概念小结(学习笔记)
- html设置ie9兼容性视图,ie9浏览器设置兼容性视图在哪里设置
- 关于泰勒展开的细节-《三体》读后感的读后感
- 通过ADB命令行卸载或删除你的Android设备中的应用
- 2020 年我学习到的 20 条软件工程准则
热门文章
- 单烤FPU怎么操作 单烤FPU多少度可以稳定使用
- 不可错过的年度AI学术盛会 2021新一代人工智能院士高峰论坛暨启智开发者大会议程惊喜发布~
- 2012伦敦奥运会垃圾邮件大战提前上演
- 风靡全球3500万用户!realme真我8款潮玩新品亮相
- 1.3一摞烙饼的问题
- java毕业生设计畜牧场信息管理系统计算机源码+系统+mysql+调试部署+lw
- Unity DOTS 学习笔记1 - ECS 0.50介绍和安装
- 介绍arxiv.org的文献更新管理工具arxiv-sanity
- 黑马JAVA P163 字节缓冲流的性能分析
- 满屏飞舞的心HTML动画,CSS3制作蝴蝶飞舞动画