完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在使用FinSH时,一上电之后,可以正常打印,但是过一会就不能打印了。好像是进入初始化操作系统就停止了,不能再使用了,咨询一下什么问题? |
|
相关推荐
8个回答
|
|
先看一下是不是你创建的线程没有释放CPU,导致FinSH的线程得不到运行,或者直接提高FinSH线程的优先级试试
|
|
|
|
我降低了线程的优先级,变成200与201,FinSH优先级21,还是没有修改; 释放CPU是什么意思,我的程序一直在跑,什么时候释放CPU |
|
|
|
释放CPU就是在线程中调用rt_thread_mdelay(或者其他能使线程挂起)能让其他线程得到运行
你最大优先级配置的多少(rtconfig.h中的RT_THREAD_PRIORITY_MAX这个宏),一般默认是32,你这个200/201有点极端了 |
|
|
|
你创建的两个线程确定都有在正常运行吗
|
|
|
|
我把线程优先级改成29 30问题依旧存在
|
|
|
|
是,我创建的两个线程都正常运行
|
|
|
|
如果不调用这个初始化函数,就一切正常?
看一下这两个线程有没有影响到调试串口,再尝试一下初始化后还能不能打印调试信息(用rt_kprintf),或者直接断点调试看串口有么有收到数据 |
|
|
|
最终第一个答案是正确的,我提高了FinSH的优先级解决问题。默认RT_THREAD_PRIORITY_MAX 32(最大优先级为32),FINSH_THREAD_PRIORITY的优先级是21(好像是默认的,我自己线程优先级10),我改到8就好了。
同时RT_MAIN_THREAD_PRIORITY的主函数MAIN优先级为(RT_THREAD_PRIORITY_MAX / 3)也就是说它是10.6,我把线程创建放在MAIN里面,所以我定义的两个线程大于10就不工作了。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1039 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3425 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1465 浏览 0 评论
2146 浏览 0 评论
1640 浏览 0 评论
75324 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 12:03 , Processed in 0.704286 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号