120 likes | 273 Views
时间管理. os_time.c. 时间管理的主要内容. 时钟节拍的产生 任务延迟与唤醒 维护系统当前时间. 时钟节拍的产生. 硬件必须支持定时中断 可编程的定时中断周期,从而产生操作系统需要的时钟节拍 ISR 中实现时间的维护以及抢占调度和任务延迟 其中抢占调度是在退出 ISR 时候调用 OSIntExit 实现的 其他工作是在 OSTimeTick 函数中实现 发生定时中断 保存现场调用 OSINTEnter 清中断标志调用 OSTimeTick 调用 OSINTExit 恢复现场返回. 任务延时.
E N D
时间管理 os_time.c
时间管理的主要内容 • 时钟节拍的产生 • 任务延迟与唤醒 • 维护系统当前时间 Lzp<bluefeynman@gmail.com>
时钟节拍的产生 • 硬件必须支持定时中断 • 可编程的定时中断周期,从而产生操作系统需要的时钟节拍 • ISR中实现时间的维护以及抢占调度和任务延迟 • 其中抢占调度是在退出ISR时候调用OSIntExit实现的 • 其他工作是在OSTimeTick函数中实现 • 发生定时中断保存现场调用OSINTEnter清中断标志调用OSTimeTick调用OSINTExit恢复现场返回 Lzp<bluefeynman@gmail.com>
任务延时 • UCOS-II提供两个函数实现任务延时:OSTimeDly和OSTimeDlyHMSM • OSTimeDly以tick为单位进行延时 • OSTimeDlyHMSM以时分秒为单位进行延时 Lzp<bluefeynman@gmail.com>
恢复延时的任务 • 处于延时的任务可以有两种方式被唤醒: • 延迟时间到,由OSTimeTick唤醒 • 延迟时间未到,但其他任务决定唤醒它,不再继续延时,由OSTimeDlyResume实现 Lzp<bluefeynman@gmail.com>
获取与设置系统时间 • 可以通过调用OSTimeGet获取系统当前时间,即系统当前的tick计数 • 可以通过调用OSTimeSet设置系统的时间(tick数) Lzp<bluefeynman@gmail.com>
获取时间 Lzp<bluefeynman@gmail.com>
设置时间 Lzp<bluefeynman@gmail.com>