加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

FreeRTOS任务不是上下文切换

发布时间:2020-12-16 10:52:38 所属栏目:百科 来源:网络整理
导读:我在PIC32MX入门工具包上使用FreeRTOS端口用于PIC32单片机.只是玩任务但任务不是上下文切换.这是我的主要配置设置: #define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 5 )#define configKERNEL_INTERRUPT_PRIORITY 0x01#define configMAX_SYSCALL
我在PIC32MX入门工具包上使用FreeRTOS端口用于PIC32单片机.只是玩任务但任务不是上下文切换.这是我的主要配置设置:

#define configMAX_PRIORITIES    ( ( unsigned portBASE_TYPE ) 5 )
#define configKERNEL_INTERRUPT_PRIORITY         0x01
#define configMAX_SYSCALL_INTERRUPT_PRIORITY    0x03
#define configTICK_RATE_HZ              ( ( portTickType ) 100 )

现在我定义了两个闪烁两个LED的任务.两者的优先级均为4(最高).在正常操作下,LED应该每100个刻度闪烁一次.但这不会发生.第二个LED闪烁100个刻度,控制进入常规异常处理程序.为什么会这样?好像根本没有调度.

解决方法

FreeRTOS是基于优先级的先发制人调度程序,不会产生处理器时间的相同优先级的任务将被循环调度.依靠循环调度很少适合实时任务,并且根据配置的时间片,可能会使您的时间陷入困境.甚至可以禁用时间分片.

您的任务必须进入阻止状态,等待某些事件(例如已用时间)以允许彼此按预期运行.

也就是说,进入异常处理程序而不是简单地一个任务饿死另一个或没有按预期的时间运行是另一回事.为此,您需要发布其他信息,但第一种方法应该是部署调试器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读