测试发现用rt_thread_create()创建两个相同优先级的线程,若此优先级小于10(两个线程优先级相同)时rt_thread_yield()函数不起作用测试代码:
priority<10时运行结果:
priority<10
priority>=10时运行结果:OS版本:
priority>=10
用的STM32F103CBT6代码见附件
查看更多
main线程优先级在components.c内定义
tid = rt_thread_create("main", main_thread_entry, RT_NULL, RT_MAIN_THREAD_STACK_SIZE, RT_THREAD_PRIORITY_MAX / 3, 20);
tid = rt_thread_create("main", main_thread_entry, RT_NULL,
RT_MAIN_THREAD_STACK_SIZE, RT_THREAD_PRIORITY_MAX / 3, 20);
而RT_THREAD_PRIORITY_MAX默认为32,故RT_THREAD_PRIORITY_MAX / 3=10
RT_THREAD_PRIORITY_MAX
RT_THREAD_PRIORITY_MAX / 3=10
原因在群友帮助下找到了,是因为main线程的优先级为10,如果新创建的线程优先级比main高就会造成这种现象
欢迎发表与嵌入式相关的技术分享、开发技巧、工具介绍、技术设想、职业心得、行业评论等对他人有启发,排版优雅的文章
回到 顶部
发布 问题
分享 好友
手机 浏览
投诉 建议
回到 底部
感谢,折磨了一周