OpenEdv-开源电子网

标题: 延时函数与同优先级线程切换相关的问题 [打印本页]

作者: glazedFOX    时间: 2019-7-27 15:43
标题: 延时函数与同优先级线程切换相关的问题
下面是其中一个线程的代码,其中有一个延时函数,时间片小于这个延时的时间,因此在优先级线程之间切换的时候一定会出现正在延时的时候切换到另一个线程的情况,我想问一下,这样会对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);       
    }
}  


作者: jiuhao2019    时间: 2019-7-27 15:43
glazedFOX 发表于 2019-7-27 16:26
这里的5000us只是一个例子,我就是想ms级别的就用vtaskdelay那个了,但是我这个可能会更小。就是我想问一 ...

切换回来是从断点处继续运行; 至于是不是继续延时,要看自定义延时的方式;如果采用空循环,那计时继续延时,如果是定时器的,那就跟其他时间没关系,只是定时器计时到了还要等切换回来,继续运行;
作者: jiuhao2019    时间: 2019-7-27 16:16
有影响,另外还要看晶振频率,看同优先级任务个数; 另外,这都5000us,何不直接用ms级来延时呢.或者用系统自带延时函数;
作者: glazedFOX    时间: 2019-7-27 16:26
jiuhao2019 发表于 2019-7-27 16:16
有影响,另外还要看晶振频率,看同优先级任务个数; 另外,这都5000us,何不直接用ms级来延时呢.或者用系统自带 ...

这里的5000us只是一个例子,我就是想ms级别的就用vtaskdelay那个了,但是我这个可能会更小。就是我想问一下假如延时到一半断了,切换到下一个线程了,那么再切换回来是重新延时,还是会继续从这个点开始延时,还是会再原来延时的基础上加上延时的时间,在从这个点开始延时
作者: luqing79    时间: 2019-11-13 16:47
使用delay_us忙等待,任务切换回来后,肯定 会继续从这个点开始延时 !
作者: luqing79    时间: 2019-11-13 16:47
使用delay_us忙等待,任务切换回来后,肯定 会继续从这个点开始延时 !




欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com:80/) Powered by Discuz! X3.4