完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
在程序中使用了RT-Thread中的软件定时器,初始化时候设定了一个超时时间为10S。我目前想实现的功能为:
1.在10S之内,发生了特定的事件,则将定时器复位重新开始计数直到超时;(假如一直有特定事件发生,则超时触发函数一直不会执行) 我实际调试发现:在特定事件发生时候,调用了rt_timer_control()函数重新设定超时函数定时时间。 rt_timer_control(&System_Updates_Hz_Timer,RT_TIMER_CTRL_SET_TIME, &Change_Timer); //重新设定定时器时间,重新开始定时。检测缓冲数组2是否超时时刻还未接收满数据 可时间软件定时器触发超时函数的时间似乎一直没有改变,计算时间是从软件定时器初始化时候开始计算的。请问,该使用什么方法重新设定软件定时器的定时时间呢? |
|
相关推荐
5个回答
|
|
|
补充说明:
//重新设定定时器时间,重新开始定时。检测缓冲数组2是否超时时刻还未接收满数据 中的Change_Timer变量定义为 rt_tick_t Change_Timer=Syste_Updates_Hz_Timeout; Syste_Updates_Hz_Timeout是被定义为1000的宏。 |
|
|
|
|
|
重新设置定时器时间后是否重新start呢?
rt_timer_control(&(thread->thread_timer), RT_TIMER_CTRL_SET_TIME, &time); rt_timer_start(&(thread->thread_timer)); |
|
|
|
|
|
按我的理解,如果调用rt_timer_delete(timer1);
< timer1应该自动设为RT_NULL,可是事实不是这样的,这样写程序时需要检查rt_timer_delete()==RT_EOK,然后再手动设timer1=RT_NULL,希望版主能改进一下,包括其他rt_objcet,都是这样,这不符合一般OS的惯例。 |
|
|
|
|
|
如果要清成RT_NULL,就需要传递进去指针的指针了,对API的更改将十分庞大。
|
|
|
|
|
|
这里的timer1本来不就是指向struct rt_timer的指针吗?(rt_timer_t timer1)
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1502 浏览 0 评论
4647 浏览 0 评论
图腾柱PFC无法上升至400V,且电感电流为正弦波形,但是幅值极小
9661 浏览 0 评论
飞凌嵌入式ElfBoard-Vim编辑器之静态链接和动态链接
2939 浏览 0 评论
使用 LinkBoy 将程序导出为 C 语言代码并烧录至 Arduino ESP32 开发板
2353 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 09:06 , Processed in 0.756952 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2920