ucosII 软件定时器启动之后没反应

2019-07-20 08:17发布

我测试了一下ucosII的软件定时器,
void MyCallback (OS_TMR *ptmr, void *p_arg)
{
gPM_MsgStartRouter(ECO_TRUE);
return;
}

void Test(void)
{
INT8U Per;
OS_TMR* Tmer1;

Tmer1=OSTmrCreate(20,20,OS_TMR_OPT_PERIODIC,(OS_TMR_CALLBACK)MyCallback,0,"Timer",&er);
OSTmrStart(Tmer1,&er);
}
debug发现OSTmrCreate和OSTmrStart 中Per都为0,说明创建和启动都成功了,但MyCallback 函数一直未执行。程序的线程并没有死,一直在跑着。不明白这是怎么回事?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
龙之谷
1楼-- · 2019-07-20 12:47
per能这样直接检查吗,对UCOSII不熟,帮顶
mthgh0818
2楼-- · 2019-07-20 16:29
回复【2楼】龙之谷:
---------------------------------
函数注释上是这样写的
*              perr          Is a pointer to an error code.  '*perr' will contain one of the following:
*                               OS_ERR_NONE
*                               OS_ERR_TMR_INVALID_DLY     you specified an invalid delay
*                               OS_ERR_TMR_INVALID_PERIOD  you specified an invalid period
*                               OS_ERR_TMR_INVALID_OPT     you specified an invalid option
*                               OS_ERR_TMR_ISR             if the call was made from an ISR
*                               OS_ERR_TMR_NON_AVAIL       if there are no free timers from the timer pool
*                               OS_ERR_TMR_NAME_TOO_LONG   if the timer name is too long to fit
其中 OS_ERR_NONE为0。按注释说的使用Per应该是可以的吧?
龙之谷
3楼-- · 2019-07-20 19:23
 精彩回答 2  元偷偷看……
mthgh0818
4楼-- · 2019-07-21 01:07
 精彩回答 2  元偷偷看……
雨山
5楼-- · 2019-07-21 01:18
ucosii 里边有一个定时器的滴答  分频也是  这里延时是20*20=400  是400ms还是400s呢
mthgh0818
6楼-- · 2019-07-21 02:02
 精彩回答 2  元偷偷看……

一周热门 更多>