完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
@发烧友 悬赏咋弄啊软件定时器 和 任务函数里的 传递参数到底怎么用???????
教程的例子 ******************************************************************************* //创建定时器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显示倒计时的数字。) |
|
相关推荐
2个回答
|
|
定时器回调函数的参数p_arg就是你创建定时器的时候传递进来的参数!你要操作的是p_arg!!
|
|
|
|
那我是要写void tmr1_callback(void *p_tmr,void *p_arg){
tmr1_num=*p_arg} }呢? 还是void tmr1_callback(void *p_tmr,&time){ tmr1_num=time } 这两种我都试过,好像都报错 |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1071浏览 3评论
194浏览 2评论
456浏览 2评论
369浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
454浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:52 , Processed in 1.069337 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号