OpenEdv-开源电子网

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

延时函数与同优先级线程切换相关的问题

[复制链接]

3

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-7-26
在线时间
5 小时
发表于 2019-7-27 15:43:02 | 显示全部楼层 |阅读模式
2金钱
下面是其中一个线程的代码,其中有一个延时函数,时间片小于这个延时的时间,因此在优先级线程之间切换的时候一定会出现正在延时的时候切换到另一个线程的情况,我想问一下,这样会对delay_us这个函数延时产生什么影响吗?
void DAC_task(void *pvParameters)
{
    while(1)
    {
                 DAC_SetChannel1Data(DAC_Align_12b_R,1000);
                 delay_us(5000);               
                 DAC_SetChannel1Data(DAC_Align_12b_R,0);                 
                 delay_us(5000);       
    }
}  

最佳答案

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

切换回来是从断点处继续运行; 至于是不是继续延时,要看自定义延时的方式;如果采用空循环,那计时继续延时,如果是定时器的,那就跟其他时间没关系,只是定时器计时到了还要等切换回来,继续运行;
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2019-4-23
在线时间
84 小时
发表于 2019-7-27 15:43:03 | 显示全部楼层
glazedFOX 发表于 2019-7-27 16:26
这里的5000us只是一个例子,我就是想ms级别的就用vtaskdelay那个了,但是我这个可能会更小。就是我想问一 ...

切换回来是从断点处继续运行; 至于是不是继续延时,要看自定义延时的方式;如果采用空循环,那计时继续延时,如果是定时器的,那就跟其他时间没关系,只是定时器计时到了还要等切换回来,继续运行;
回复

使用道具 举报

4

主题

44

帖子

0

精华

高级会员

Rank: 4

积分
635
金钱
635
注册时间
2019-4-23
在线时间
84 小时
发表于 2019-7-27 16:16:00 | 显示全部楼层
有影响,另外还要看晶振频率,看同优先级任务个数; 另外,这都5000us,何不直接用ms级来延时呢.或者用系统自带延时函数;
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-7-26
在线时间
5 小时
 楼主| 发表于 2019-7-27 16:26:34 | 显示全部楼层
jiuhao2019 发表于 2019-7-27 16:16
有影响,另外还要看晶振频率,看同优先级任务个数; 另外,这都5000us,何不直接用ms级来延时呢.或者用系统自带 ...

这里的5000us只是一个例子,我就是想ms级别的就用vtaskdelay那个了,但是我这个可能会更小。就是我想问一下假如延时到一半断了,切换到下一个线程了,那么再切换回来是重新延时,还是会继续从这个点开始延时,还是会再原来延时的基础上加上延时的时间,在从这个点开始延时
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-8-20
在线时间
6 小时
发表于 2019-11-13 16:47:13 | 显示全部楼层
使用delay_us忙等待,任务切换回来后,肯定 会继续从这个点开始延时 !
回复

使用道具 举报

0

主题

11

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-8-20
在线时间
6 小时
发表于 2019-11-13 16:47:24 | 显示全部楼层
使用delay_us忙等待,任务切换回来后,肯定 会继续从这个点开始延时 !
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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