ucosiii中关于函数OSTimeDlyHMSM的问题。

2019-07-20 14:47发布

我创建了两个任务,task1,task2,两个任务重,主要的代码如下:
[mw_shl_code=applescript,true]    while (DEF_TRUE) {                                          /* Task body, always written as an infinite loop.       */
       BSP_LED_Off(1u);
       BSP_LED_Off(0u);
       OSTimeDlyHMSM(0u, 0u, 1u, 500u,
                      OS_OPT_TIME_HMSM_STRICT,
                      &err);   
}[/mw_shl_code]

[mw_shl_code=applescript,true] while (DEF_TRUE){
       BSP_LED_On(1u);
       BSP_LED_On(0u);
              OSTimeDlyHMSM(0u, 0u, 1u, 500u,
                      OS_OPT_TIME_HMSM_STRICT,
                      &err);
    }[/mw_shl_code]

发现阿波罗上的DS0和DS1常量,但是我用单步调试,在两个任务的led灯操作的地方设置断点,可以发现程序的确在两个任务之间发生着切换,这是什么原因呢?难道是       OSTimeDlyHMSM(0u, 0u, 1u, 500u,
                      OS_OPT_TIME_HMSM_STRICT,
                      &err); 延时在任务切换过程中出现了什么问题,
如果我适用函数       OSTimeDlyHMSM(0u, 0u, 1u, 500u,
                      OS_OPT_TIME_HMSM_STRICT,
                      &err); 在一个任务中,
[mw_shl_code=applescript,true]    while (DEF_TRUE) {                                          /* Task body, always written as an infinite loop.       */
       BSP_LED_Off(1u);
       BSP_LED_Off(0u);
       OSTimeDlyHMSM(0u, 0u, 1u, 500u,
                      OS_OPT_TIME_HMSM_STRICT,
                      &err);   
       BSP_LED_On(1u);
       BSP_LED_On(0u);
              OSTimeDlyHMSM(0u, 0u, 1u, 500u,
                      OS_OPT_TIME_HMSM_STRICT,
                      &err);
    }[/mw_shl_code]
可以发现DS0和DS1可以交替闪烁。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
iysheng
1楼-- · 2019-07-20 15:08
 精彩回答 2  元偷偷看……
iysheng
2楼-- · 2019-07-20 20:20
声明一下,这个ucosiii是我参照原子的移植步骤,移植的,稍微和原子的有点不同,是我哪个地方在移植的时候没有注意到吗?希望得到高手的提示,,,
iysheng
3楼-- · 2019-07-20 23:18
我发现是我创建函数的问题,我是在task1任务的函数中创建的task2,我在创建task1之后创建task2,就可以正常的交替闪烁了,具体细节,有待后续深究.

一周热门 更多>