OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5666|回复: 4

昨天领了书,今天学习下。请问delay_xms()延时,不会引起任务调度?

[复制链接]

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
发表于 2018-10-21 16:40:07 | 显示全部楼层 |阅读模式
1金钱
delay_xms()延时,不会引起任务调度的意思应该是:这个函数不会主动引起任务调度,但是在延时时间里,也是会有SYSTICK中断引起的任务调度的对吧?也就是这个延时时间内,也是可能会去执行高优先级任务的吧?
新人,不是很清晰。
昨天喜领二等奖,真是感谢原子公司。
报了名没去的抽中大奖的真可惜。
昨天会不会有没抽中也上去领了奖的呢,哈哈,每个奖品都有没人领的呢。

最佳答案

查看完整内容[请看2#楼]

xms 延时途中不会主动让出cpu,但是可能被迫让出,这和设计有关,注意, systick中断是给了任务切换的一个机会。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2017-11-29
在线时间
135 小时
发表于 2018-10-21 16:40:08 | 显示全部楼层
xms 延时途中不会主动让出cpu,但是可能被迫让出,这和设计有关,注意, systick中断是给了任务切换的一个机会。
回复

使用道具 举报

22

主题

203

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
378
金钱
378
注册时间
2017-11-29
在线时间
135 小时
发表于 2018-10-21 22:44:19 来自手机 | 显示全部楼层
本帖最后由 wen619 于 2018-10-21 22:48 编辑

xms延时函数是通过us延时函数实现,不会发生调度;ms延时函数里面如果超过1ms使用的是系统的延时函数实现,会引发调度,低于1ms延时仍是使用us延时函数实现,不引起调度。假设心跳1000hz。
回复

使用道具 举报

29

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
170
金钱
170
注册时间
2018-8-3
在线时间
48 小时
 楼主| 发表于 2018-10-22 17:25:41 | 显示全部楼层
wen619 发表于 2018-10-21 22:44
xms延时函数是通过us延时函数实现,不会发生调度;ms延时函数里面如果超过1ms使用的是系统的延时函数实现, ...

谢谢,不过我的意思是用xms延时期间,一定不会发生调度吗,会去执行别的高优先级的任务吗?比如延时10S,这段时间内系统不会执行别的任务吗?另外,是不是每个SYSTICK中断都会引发一次调度呢?听别人说是的。
回复

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2018-10-22 19:23:56 | 显示全部楼层
三十岁大叔 发表于 2018-10-22 17:25
谢谢,不过我的意思是用xms延时期间,一定不会发生调度吗,会去执行别的高优先级的任务吗?比如延时10S, ...

如果更高优先级别的任务不是处于阻塞或挂起, 是会被调度的

但建议不要用这类delay_xms, 它百害而无一利
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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