1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
楼主的程序是基于freeRTOS的,划分成了几个任务。为了方便调试,在一些地方增加了一些从串口输出debug信息的代码,同时为了方便在编译时去掉这些代码,我是用宏定义的方法在头文件里面使用串口输出函数:
[C] 纯文本查看 复制代码 #ifdef USER_DEBUG #define UserDebug(message) do{ UARTprintf(message); }while(0) #else #define UserDebug(message) UARTprint函数就大概相当于printf() 这么干在裸跑的非抢占式的程序里面不会出现什么问题,不过在抢占式内核里面,偶尔会出现一条以上的debug信息交错到一起的现象。 于是我又添加了另一种输出的方式: 为debug输出额外创建一个进程专用于输出,并创建一个与之相关的消息队列。如果需要串口打印一个字符串,就把字符串的指发送到队列里面。这样确实可以完全消除输出时的冲突,不过这么用就只能输出字符串,而不能像printf函数那样把多个参数也放进去用了。 有没有前辈指点一下,像这种把数目不定的参数(例如printf里的参数)用队列怎么发送出去? |
|
相关推荐
3个回答
|
|
我也不是很懂 我是用UCOS 没用FREERTOS
|
|
|
|
使用 sprintf 可以顺利解决这个问题.. 先使用sprintf 把要打印的内容放到一个指针或者数组里,再把他的内容填充到打印列队.
|
|
|
|
你的想法是正确的. 只是不用把指针加到列队,而是把指针指向的内容复制到列队. 列队本身有独立的缓冲区.
|
|
|
|
只有小组成员才能发言,加入小组>>
788 浏览 0 评论
1151 浏览 1 评论
2527 浏览 5 评论
2860 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1068浏览 3评论
193浏览 2评论
455浏览 2评论
368浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
453浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 15:06 , Processed in 1.279557 second(s), Total 81, Slave 62 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号