STM32,FreeRTOS,Tracealyzer,J-link RTT流模式,无数据上传问题解决

最近在STM32上用FreeRTOS开发程序,集成了Tracealyzer,使用J-LINK RTT流模式监控,程序在板子上能正常跑,任务可以通过串口和LED等观察到都正常运行调度。但是Tracealyzer上就是没有数据上来,编译都OK,运行也没啥报错。
在这里插入图片描述

1、反复核对集成Tracealyzer的步骤,没问题
2、反复核对相关头文件配置,没问题
3、反复检查Tracealyzer的配置,没问题
4、我的J-LINK一直提示clone,但能正常使用,我为了排除硬件原因,新买了一个,还是不行。
无果,反复折腾了两三天,没办法,只能静下心来好好读Tracealyzer的文档,里面以后Troubleshooting的内容,对着文字,一条一条的排查,最后发现一段:
在这里插入图片描述
突然想起,在官方的文档里要求把#include “trcRecorder.h” 放在FreeRTOSConfig.h的最后。我移植的时候,有抱语法错误,当时换了个地方放就没有错误了,就这样把这个错误放过了。

回过头来,从新解决报错的问题。由于是STM32CubeMX生产的代码环境,集成了CMSIS_OS,其中有一条报错说 SysTick_Handler() 这个中断函数在PORT.C和CMSIS_OS2.C两个文件中重定义了。查看代码发现:
1、此函数是在CMSIS_OS2.C中定义,且调用了一个xPortSysTickHandler()函数。
2、xPortSysTickHandler()函数在PORT.C中定义
3、FreeRTOSConfig.h文件中却定义#define xPortSysTickHandler SysTick_Handler

哈,xPortSysTickHandler()和SysTick_Handler()的这两个函数都是systick 的中断处理函数,为了保险起见,在工程中搜索这两个函数,发现没有任何其他引用,果断注释掉FreeRTOSConfig.h文件中#define xPortSysTickHandler SysTick_Handler。再试,问题完美解决。至于为什么FreeRTOSConfig.h中会这么定义,下次再研究,晚上12点了,睡觉!!!
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值