@正点原子 悬赏咋弄啊软件定时器 和 任务函数里的 传递参数到底怎么用的例子
*******************************************************************************//创建定时器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,0×80); //显示定时器1的执行次数
LCD_Fill(6,131,114,313,lcd_discolor[tmr1_num%14]);//填充区域
tmr1_num++; //定时器1执行次数加1
}
*******************************************************************************
以下是我的错误程序。周期为1s的定时器,目的:在执行time个周期后,在回调函数里删除此定时器。如何将 变量time作为参数传到回调函数里p>
官方文档描述: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,0×80); //显示定时器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()有自己的回调函数或者函数后面还有语句则不能成功执行。
}
}
********************************************************************************
问题一:如何在回调函数里用这个参数。
问题二:软件定时器的回调函数里关闭此定时器有什么问题。
问题三:实现指定时间的倒计时,并在屏幕显示倒计时的时间。(类似手机倒计时的功能)还有什么其他办法p>
( 这里想的是把软件定时器设置成周期模式(周期1s)。每次回调函数里显示调用次数
单词模式如果倒计时60s。没法每隔1s显示倒计时的数字。)
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux25388 人正在系统学习中 相关资源:软件啊啊啊啊-Android工具类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!