OpenEdv-开源电子网

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

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

[复制链接]

13

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-9-11
在线时间
15 小时
发表于 2015-10-9 17:09:40 | 显示全部楼层 |阅读模式
5金钱
我测试了一下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 函数一直未执行。程序的线程并没有死,一直在跑着。不明白这是怎么回事?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-9 17:13:51 | 显示全部楼层
per能这样直接检查吗,对UCOSII不熟,帮顶
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

13

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-9-11
在线时间
15 小时
 楼主| 发表于 2015-10-9 17:19:22 | 显示全部楼层
回复【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应该是可以的吧?
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-9 17:28:04 | 显示全部楼层
回复【3楼】mthgh0818:
---------------------------------
你的per没有初始化,可能他本来就是0,没对它进行操作,始终是0而已
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

13

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-9-11
在线时间
15 小时
 楼主| 发表于 2015-10-10 08:43:50 | 显示全部楼层
回复【4楼】龙之谷:
---------------------------------
不是这个原因,我把per初始化为1之后per在经过OSTmrCreate和OSTmrStart操作之后都为0,
回复

使用道具 举报

21

主题

124

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
260
金钱
260
注册时间
2013-1-10
在线时间
10 小时
发表于 2015-10-10 15:57:40 | 显示全部楼层
ucosii 里边有一个定时器的滴答  分频也是  这里延时是20*20=400  是400ms还是400s呢
个人博客www.xiaovdiy.cn
https://shop100764513.taobao.com/
回复

使用道具 举报

13

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
193
金钱
193
注册时间
2014-9-11
在线时间
15 小时
 楼主| 发表于 2015-10-11 19:13:25 | 显示全部楼层
回复【6楼】雨山:
---------------------------------
是ms,应该不是20*20吧,仅仅是20个tick吧
回复

使用道具 举报

7

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
487
金钱
487
注册时间
2017-12-25
在线时间
105 小时
发表于 2018-3-27 09:51:14 | 显示全部楼层
貌似应该把OS_TMR* Tmer1;定义成全局变量
回复

使用道具 举报

22

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2013-10-9
在线时间
73 小时
发表于 2018-5-9 11:08:46 | 显示全部楼层
LZ 咋解决的,碰到一样的问题了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 07:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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