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 );

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

如此调试告一段落

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/667753.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

戴尔向“数”而行,以“质”致远,做新质生产力的躬耕者

【全球存储观察 | 热点关注】 自1984年戴尔成立,一路走来,戴尔科技集团40年长期持续的技术创新,一直引领全球科技行业的技术趋势。 到如今,AIGC风行一时,在重塑千行百业的同时,也加速了科技行业…

解决安装 WP Super Cache 插件提示 Advanced-Cache.Php 是另一个插件创建的

昨天晚上一个站长求助明月,说是安装 WP Super Cache 插件的时候提示 advanced-cache.php 被占用了,无法完成安装,收到截图看了才明白原来提示的是“advanced-cache.php 文件,由另一个插件或者系统管理员创建的”,如下图…

java属性重写

介绍 关于,属性没有重写只能是编译类型的 代码 package b;public class main_ {public static void main(String[] args) {//向上转型,父类的引用转向了子类的fathetr fatnew son();System.out.println("编译类型是father时的sum属性是"fat.…

如何理解央行买卖国债?

浙商证券覃汉认为,央行对长债的风险持续关注,30年国债收益率较难突破2.5%,区间底部已经多次印证,在学习效应影响下,长端利率预计继续以震荡调整为主。 1、央行买卖国债的政策要求、历史经验、优势 2023年中央金融工作…

实现音乐创作梦想的利器——Cockos Reaper for Mac/win

在当今数字音频制作领域,专业人士和业余爱好者都在寻找一款功能强大、易于操作的软件来实现他们的音乐创作梦想。而Cockos Reaper作为一款跨平台的数字音频工作站软件,既适用于Mac系统,也适用于Windows系统,成为众多音乐制作人心目…

每日一题——Python实现PAT乙级1020 月饼(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 专业点评: 时间复杂度分析: 空间复杂度分析&#…

小邪大佬最新版微信hook

目前小邪大佬已经更新到最新版本微信hook了。 /发送文件 BOOL SendCdnFilePbMsg(string sendId, string cdnkey, string aes_key,string file_name,string md5, int size, string syncKey) {FileMessage sfm;sfm.set_file_id(cdnkey);sfm.set_size(size);sfm.set_aes_key(aes_…

【计算机毕业设计】基于SSM++jsp的在线云音乐系统【源码+lw+部署文档】

目录 摘 要 ABSTRACT 第1章 绪论 1.1背景及意义 1.2 国内外研究概况 1.3 研究的内容 第2章 相关技术 2.1 JSP技术介绍 2.2 JAVA简介 2.3 MyEclipse开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 2.6 SSM三大框架 第3章 系统分析 3.1 需求分析 3.2 系统可行性分析 3.2.1技术可行性…

CANDela studio基础使用

ECU Information 可以修改ECU的名称 里面有个Supported Interfaces,可以在CDDT里面选择支持的通讯接口 可以在tools下面新建internface,也可以从其他CDDT文件里面复制过来,复制的时候注意要另外将里面的参数再复制一次。 也可以在这里点击新…

云原生架构相关技术_4.服务网格

1.技术特点 服务网格(ServiceMesh)是分布式应用在微服务软件架构之上发展起来的新技术,旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。这个解耦意味着开发者无需…

多输入多输出 | MATLAB实现PSO-SVM粒子群优化支持向量机多输入多输出

多输入多输出 | MATLAB实现PSO-SVM粒子群优化支持向量机多输入多输出 目录 多输入多输出 | MATLAB实现PSO-SVM粒子群优化支持向量机多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 多输入多输出 | MATLAB实现PSO-SVM粒子群优化支持向量机多输入多输出…

Ethercat设备 转 成profinet IO协议项目案例

1 案例说明 设置网关采集EtherCAT设备数据把采集的数据转成profinet IO协议转发给其他系统。 2 准备工作 3. 仰科网关。支持采集EtherCAT设备数据,profinet IO协议转发。 4. 电脑。IP设置成192.168.1.198,和网关在同一个网段。 5. 网线、12V电源。 3 …

Qt xml学习之calculator-qml

1.功能说明:制作简易计算器 2.使用技术:qml,scxml 3.项目效果: 4.qml部分: import Calculator 1.0 //需要引用对应类的队友版本 import QtQuick 2.12 import QtQuick.Window 2.12 import QtQuick.Controls 1.4 import QtScxml…

shopee签名x-sap-ri、x-sap-sec算法还原

最新版签名,免账号登录成功率百分百,需要可d 两种方式base64 MTQzMDY0OTc3OA QXVndXN0MjItZnF4

内存取证例题及Volatility2.6的使用(含命令详细解析)

文章目录 一、背景二、什么是内存取证?三、参考文章四、工具及题目五、解析1、哪个Volatility配置文件最适合这台机器?拓展1.1 2、获取镜像时有多少个进程在运行?拓展1.2 3、cmd.exe的进程ID是什么?4、最可疑的进程名称是什么&…

轻松实现PDF文件的在线浏览

福昕软件最近发布了一款名为Cloud API的产品,通过几行代码即可轻松实现PDF文件的在线浏览。先一睹为快吧。 简介 先看看产品官网:福昕 Cloud API Cloud API包括两个形态产品,一个是在线的PDF查看工具,叫PDF Embed API,另外一个…

面试题 17.05. 字母与数字(前缀和)

给定一个放有字母和数字的数组,找到最长的子数组,且包含的字母和数字的个数相同。 返回该子数组,若存在多个最长子数组,返回左端点下标值最小的子数组。若不存在这样的数组,返回一个空数组。 示例 1: 输入: ["…

【并发程序设计】13.信号机制

13.信号机制 概念: 信号机制是Unix、类Unix以及其他POSIX兼容的操作系统中的一种进程间通讯方式,它允许进程在发生特定事件时接收通知。 信号机制是操作系统中的一个重要概念,它提供了一种异步的通知机制,用于在进程之间传递消…

每日一题——Python实现PAT甲级1042 Shuffling Machine(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 功能分析 时间复杂度 空间复杂度 总结 代码点评 我要更强 优化方向 …

数据库开发-Mysql03

目录 1. 多表查询 1.1 概述 1.1.1 数据准备 1.1.2 介绍 1.1.3 分类 1.2 内连接 1.3 外连接 1.4 子查询 1.4.1 介绍 1.4.2 标量子查询 1.4.3 列子查询 1.4.4 行子查询 1.4.5 表子查询 1.5 案例 2. 事务 2.1 介绍 2.2 操作 2.3 四大特性 3. 索引 3.1 介绍 3…