第24章软件定时器
OSInit()中调用OS_TmrIni()来配置定时器频率与创建软件定时器任务OS_TmrTask()。
软件定时器创建函数OSTmrCreate()将定时器添加到双向调试链表。
启动软件定时器函数 OSTmrStart()
定时器任务OS_TmrTask()
1.OSTaskSemPend()等待信号量(在 SysTick 中断服务函数中OSTmrUpdateCtr减为0时,发送信号量给软件定时器任务 OS_TmrTask() )
2.通过哈希算法找到对应时间唤醒的列表并获取列表头部的定时器。
2.判断定时器是否定时到
...2.1达到了,先OS_TmrUnlink 移除,如是周期性的则重新按照唤醒时间插入定时器列表 OS_TmrLink ,执行回调函数,继续判断下个定时器,直到找到定时没到的定时器退出。
...2.2定时未到,退出
3.测量定时器任务的执行时间