找回密码
 立即注册
搜索
查看: 8856|回复: 5

【FreeRTOS任务调度】想请教下关于FreeRTOS的任务调度

[复制链接]

55

主题

266

帖子

476

积分

中级会员

Rank: 3Rank: 3

积分
476
发表于 2021-9-10 17:54:31 | 显示全部楼层 |阅读模式
各位老师好,我想请教下关于FreeRTOS的任务调度,比如下图中的MPU6050_task 任务,是100HZ,每10ms运行一次。  那么在每个周期每次运行的时候,他是从1处开始运行,还是从2处开始运行?  如果从1处开始运行,似乎不应该加while(1)这个循环体?   如果是从2处开始运行,那么 lastWakeTime这个变量值在第一次被赋值后,以后就再也没有被更新了?

图片2.png
回复

使用道具 举报

66

主题

263

帖子

533

积分

高级会员

Rank: 4

积分
533

热心会员

发表于 2021-9-10 17:55:18 | 显示全部楼层
从1开始运行,要获取上一次退出任务的时间,这个执行频率实测过是没有问题的,while(1)这个循环写法是参考官方例程的,你将你需要执行的内容写在2处之后就可以了
回复

使用道具 举报

55

主题

266

帖子

476

积分

中级会员

Rank: 3Rank: 3

积分
476
 楼主| 发表于 2021-9-10 17:55:28 | 显示全部楼层
testttt 发表于 2021-9-10 17:55
从1开始运行,要获取上一次退出任务的时间,这个执行频率实测过是没有问题的,while(1)这个循环写法是参考 ...

从1处开始执行,然后进入while死循环,那么这个task始终在运行,好像无法退出这个task嘛?
回复

使用道具 举报

66

主题

263

帖子

533

积分

高级会员

Rank: 4

积分
533

热心会员

发表于 2021-9-11 08:33:11 | 显示全部楼层
jun501389541 发表于 2021-9-10 17:55
从1处开始执行,然后进入while死循环,那么这个task始终在运行,好像无法退出这个task嘛?

从1处开始执行,lastWakeTime这个变量值赋值以后不再更新
1处的函数作用是获取当前进入函数的时间
while(1)循环体的意思是循环执行,因为任务之间的调度,这个任务在不执行的时候是出于休眠状态(可以这么理解虽然这个描述不严谨),等到时间到了他又会重新执行这个任务。task的运行是系统调度的
回复

使用道具 举报

55

主题

266

帖子

476

积分

中级会员

Rank: 3Rank: 3

积分
476
 楼主| 发表于 2021-9-11 08:34:36 | 显示全部楼层
testttt 发表于 2021-9-11 08:33
从1处开始执行,lastWakeTime这个变量值赋值以后不再更新
1处的函数作用是获取当前进入函数的时间
whil ...

那么  FreeRTos的系统调度会让这个任务(主要就是while循环体)在一个周期10ms内运行多长时间呢?或者说while体里面的函数会执行好几遍?陀螺仪的数据可能会被读取几遍?
回复

使用道具 举报

66

主题

263

帖子

533

积分

高级会员

Rank: 4

积分
533

热心会员

发表于 2021-9-11 08:35:09 | 显示全部楼层
jun501389541 发表于 2021-9-11 08:34
那么  FreeRTos的系统调度会让这个任务(主要就是while循环体)在一个周期10ms内运行多长时间 ...

这个主要是看优先级了,详细的您可以去查一下FreeRTos的资料。看一下FreeRTos的使用指南吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

粤ICP备20017043号|小黑屋|手机版|Archiver|轮趣科技(东莞)有限公司  

GMT+8, 2024-12-23 03:55 , Processed in 0.070273 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表