完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
刚开始学习FreeRTOS,用的是STM32F103RCT6,目前创建了三个任务,运行指示灯、按键、显示。其中显示任务里是暂时还没有具体的代码,按键任务准备使用队列传递按键值。现在的问题是这样的,如果我不创建按键队列,则运行指示灯任务可以正常运行,每0.5s闪烁一次。但是如果创建按键队列的话,任务运行就不正常了(队列可以创建成功),仿真发现指针一直停留在这个函数prvCheckTasksWaitingTermination(),或者是这个函数的前一级函数,即static portTASK_FUNCTION( prvIdleTask, pvParameters );这个好像是空闲任务吧?另外补充一下,复位后每个任务后执行一遍
附件是代码,请各位前辈给指导一下。看看问题出在什么地方。 STM32F103RCT6_FreeRTOS.zip (8.37 MB ) |
|
相关推荐
6个回答
|
|
|
问题已经定位了。但是不明白为什么。
在我的任务函数里有这么一句 err = xQueueSend(Key_Queue,&KeyBuf,portMAX_DELAY); //发送队列,一直等待 如果有消息就发送,并且是一直等待。但是我还没有写消息队列接收的函数。但是依然有一个问题不明白。这种带任务切换的等待应该不会有类似裸跑的那种死循环吧,就算一直等待也应该有任务切换吧?为什么别的任务执行不了呢?我设置的按键任务的优先级是比运行指示灯任务优先级要低的。 |
|
|
|
|
|
|
|
|
你的按键任务优先级要高于指示灯
|
|
|
|
|
|
谢谢,可是为什么呢?
|
|
|
|
|
|
数字越小,优先级越低,感觉你弄反了。
|
|
|
|
|
|
数字越小,优先级越低。这个我是知道的。但是不管优先级怎么样,按键任务的while(1)里面是有延时的,10ms的时间,这个时间足够去执行别的任务了吧。可是总是在执行空闲任务。这一点儿我不明白。
有时间的话能不能跑一下我的代码给看看问题所在啊。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
1053 浏览 1 评论
1874 浏览 0 评论
1853 浏览 1 评论
3277 浏览 5 评论
3606 浏览 9 评论
1055浏览 1评论
1877浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1385浏览 1评论
1875浏览 0评论
1200浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-9 03:29 , Processed in 0.625624 second(s), Total 56, Slave 46 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
930