linux应用层定时器参数传递,软件定时器 和 任务函数里的 传递参数到底怎么用??...

本帖最后由 976657271 于 2017-6-29 11:27 编辑

@正点原子 悬赏咋弄啊软件定时器 和 任务函数里的  传递参数到底怎么用???????教程的例子

*******************************************************************************//创建定时器1

OSTmrCreate((OS_TMR                *)&tmr1,                //定时器1

(CPU_CHAR        *)"tmr1",                //定时器名字

(OS_TICK         )20,                        //20*10=200ms

(OS_TICK         )100,          //100*10=1000ms

(OS_OPT                 )OS_OPT_TMR_PERIODIC, //周期模式

(OS_TMR_CALLBACK_PTR)tmr1_callback,//定时器1回调函数

(void            *)0,                        //参数为0

(OS_ERR            *)&err);                //返回的错误码

//定时器1的回调函数

void tmr1_callback(void *p_tmr, void *p_arg)

{

static u8 tmr1_num=0;

LCD_ShowxNum(62,111,tmr1_num,3,16,0x80); //显示定时器1的执行次数

LCD_Fill(6,131,114,313,lcd_discolor[tmr1_num%14]);//填充区域

tmr1_num++;                //定时器1执行次数加1

}

*******************************************************************************

以下是我的错误程序。周期为1s的定时器,目的:在执行time个周期后,在回调函数里删除此定时器。如何将 变量time作为参数传到回调函数里?

官方文档描述:pcallbackarg是一个参数(一个指针),当它被调用时,它被传递给回调函数。

********************************************************************************

u8 time;

time=60;

//创建定时器1

OSTmrCreate(  (OS_TMR                *)&tmr1,                //定时器1

(CPU_CHAR        *)"tmr1",                //定时器名字

(OS_TICK         )0,                        //100*10=200ms

(OS_TICK         )100,          //100*10=1000ms

(OS_OPT                 )OS_OPT_TMR_PERIODIC, //周期模式

(OS_TMR_CALLBACK_PTR)tmr1_callback,//定时器1回调函数

(void            *)&time,                        //参数为0

(OS_ERR            *)&err);                //返回的错误码

//定时器1的回调函数

void tmr1_callback(void *p_tmr,void *p_arg)

{

static u8 tmr1_num=0;

OS_ERR err;

tmr1_num++;                //定时器1执行次数加1

LCD_ShowxNum(62,111,tmr1_num,3,16,0x80); //显示定时器1的执行次数

LCD_Fill(6,131,114,313,lcd_discolor[tmr1_num%14]);//填充区域

if(tmr1_num==time)

{

LED0=1;

OSTmrStop(&tmr1,OS_OPT_TMR_NONE,0,&err);        //在定时器1的回调函数里关闭定时器1,会产生回调函数还没执行完毕就强制结束了,

//若这里OSTmrStop()有自己的回调函数或者函数后面还有语句则不能成功执行。

}

}

********************************************************************************

问题一:如何在回调函数里用这个参数。

问题二:软件定时器的回调函数里关闭此定时器有什么问题。

问题三:实现指定时间的倒计时,并在屏幕显示倒计时的时间。(类似手机倒计时的功能)还有什么其他办法?

( 这里想的是把软件定时器设置成周期模式(周期1s)。每次回调函数里显示调用次数

单词模式如果倒计时60s。没法每隔1s显示倒计时的数字。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值