程序中需要定时扫描键盘, 刷新指示灯以及蜂鸣器控制, 但又不想单独开一个任务实现以上的操作, 查看了RTL的帮助文档, 很自然想到了user timer定时器.
OS_ID os_tmr_create (U16 tcnt, U16 info);
创建一个定时器, tcnt是定时器溢出的系统时间(tick), info 是用以区别不同定时器的编号, 返回 OS_ID是定时器的识别号
OS_ID os_tmr_kill (OS_ID timer);
删除一个定时器, timer 是 os_tmr_create 返回的那个值
void os_tmr_call (U16 info);
包含在RTX_Config.c文件中的定时器溢出时调用的函数, 在 os_tmr_call 根据 info 区分不同的定时器. info 是 os_tmr_create 创建时用户给的那个 info.
本来以为定时器可以重复工作, 实现键盘扫描. 实际上只是一个延时处理函数, 定时器溢出后, 会调用 os_tmr_call 函数, 同时系统在定时器队列中将已经溢出的定时器删除. 如果在定时器函数 os_tmr_call 中向任务发送消息等同步信息, 只能调用 isr_开头的函数, 应为从根本上说 os_tmr_call 函数是在系统定时器中断函数中调用的.
现在只能创建一个单独的任务, 来实现定时扫描键盘/指示灯/蜂鸣器控制了.
1.部分资源来自网络,经ET电子归类整理,旨在服务电子爱好者并无商业目的,不保证正确性与完整性.
2.如果您觉得本站资源对您有用,请告知您的好友,用搜索引擎搜"ET电子"即可.

