完善资料让更多小伙伴认识你,还能领取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)
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
超强算力+实时响应!米尔发布基于STM32MP25x核心板Debian系统
2299 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:边缘端设备的局域网视频流传输方案
1771 浏览 0 评论
1748 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
6934 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1944 浏览 0 评论
80788 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-15 07:25 , Processed in 0.644510 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191