当前位置: 首页 > news >正文

FreeRTOS实时系统 在任务中增加数组等相关操作 导致单片机起不来或者挂掉

在调试串口任务中增加如下代码,发现可以用keil进行仿真,但是烧录程序后,调试串口没有打印,状态灯也不闪烁,单片机完全起不来

博主就纳了闷了,究竟是什么原因,这段代码可是公司永流传的老代码了,我移植过来的可不敢出现问题

初步定位是该任务的运行空间少了,立马查看代码

xTaskCreate( Debug_Uart_Task, (const char*)"UART", 64, ( void * ) NULL, tskUART_PRIORITY, ( TaskHandle_t * ) NULL );

由原函数可知给的堆栈空间为64 * 2 = 128个字节

BaseType_t xTaskCreate(	TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreatedTask ) /*lint !e971 Unqualified char types are allowed for strings and single characters only. */{

才给了区区128个字节,这有点少了,毕竟我增加了很多功能,于是我从64增加到120。烧录打印,板卡单片机还是起不来。既然起不来,那就改回去,减少变量。

死去的调试记忆在攻击我!!!

再次怀疑为FreeRTOS整个堆空间少了,查看代码

尝试加大FreeRTOS整个堆空间,增加0x300,更改后如下

#define configTOTAL_HEAP_SIZE					((size_t)(19*512 + 0x468))     //系统所有总的堆大小

整个单片机的存储空间是固定的,增加了FreeRTOS的堆空间,就要同步减少单片机的栈空间

更改后如下图

再次烧录后单片机可以正常启动。

你以为到这完了,调试过程中总是会出现各种状况。。。

单片机在运行过程中,使用串口指令调试,会使得程序进入错误中断(HardFault_Handler),单片机挂掉,当然这种必现的bug还算比较好找原因的

在仿真调试的时候,初步认为程序没有问题,不太可能导致这样的情况发生,毕竟我在别的项目用这套代码运行的好好的

对比我定位是串口任务运行空间过少导致的,毕竟我这才给了64

xTaskCreate( Debug_Uart_Task, (const char*)"UART", 64, ( void * ) NULL, tskUART_PRIORITY, ( TaskHandle_t * ) NULL );

加大了运行空间后,程序正常运行。

如此调试告一段落

http://www.lryc.cn/news/368379.html

相关文章:

  • CentOS 7基础操作08_Linux查找目录和文件
  • CI/CD实战面试宝典:从构建到高可用性的全面解析
  • NLP实战入门——文本分类任务(TextRNN,TextCNN,TextRNN_Att,TextRCNN,FastText,DPCNN,BERT,ERNIE)
  • MySQL: 表的增删改查(基础)
  • WDF驱动开发-PNP和电源管理(三)
  • Redis集群和高可用性:保障Redis服务的稳定性
  • C# WPF入门学习主线篇(二十一)—— 静态资源和动态资源
  • 出现 Navicat 和 Cmd 下SQL 版本 | 查询不一致的解决方法
  • 31、matlab卷积运算:卷积运算、二维卷积、N维卷积
  • C++青少年简明教程:文件
  • Kimichat使用案例010:快速识别出图片中的表格保存到Excel
  • [大师C语言(第二十四篇)]C语言指针探秘
  • Docker命令总结
  • 把chatgpt当实习生,进行matlab gui程序编程
  • LabVIEW 与组态软件在自动化系统中的应用比较与选择
  • html--万年历
  • 2013年 阿拉斯加巴罗活动层厚度和土壤含水量
  • 超详解——python数字和运算——小白篇
  • LabVIEW图像采集处理项目中相机选择与应用
  • Java——IO流(一)-(2/9):File类的常用方法(判断文件类型、获取文件信息、创建删除文件、遍历文件夹)
  • 电子设计入门教程硬件篇之集成电路IC(二)
  • Unity3D测量面积和角度实现方法(二)
  • vite 配置 typescript 环境
  • ThreadCache线程缓存
  • UE5_加载本地图片(jpg, png) 转 UTexture
  • Linux操作系统:Spark在虚拟环境下的安装及部署
  • 内网安全--隧道技术代理技术
  • 彩虹易支付最新版源码
  • python生成excel数据并实现隔行变色
  • IEEE754 十进制数转32位浮点数格式