1.任务的延时
2.中断
3.UCOS-II系统时钟节拍
1.任务的延时
Delay_ms();
2.中断:
中断:由异步事件请求而中止当前任务,转而去执行这个事件请求的任务的过程
中断服务子程序:执行中断请求的程序;
中断的执行过程:
接收到中断请求,系统会中止当前运行的任务,去运行中断服务子程序,运行结束后会根据情况返回被中止的任务继续运行,或者是运行更高优先级的就绪任务;
1、响应中断 -- CPU寄存器的值和临时变量保存于堆栈中
2、执行中断 - 中断服务函数
3、结束中断 - 从堆栈中读取保存的值。
1、OSIntEnter();
-- 中断嵌套层次加1 -- 已经进入中断
2、OSIntExit();
-- 中断嵌套层次减1 -- 要退出中断
中断服务函数的编写格式:
OSIntEnter();
中断服务函数程序
OSIntExit(); -- 如果中断嵌套层次为0,执行任务调度--找到里面任务优先级最高的执行
OSIntCtxSw() -- 中断中的任务切换
3.UCOS-II系统时钟节拍
时钟:供操作系统处理与时间有关的事件所需的一个周期性的信号源
时钟节拍: 由硬件定时器产生的MS级周期的中断;
两次中断之间的时间间隔--Time Tick---5ms或者10ms
时钟服务函数:
通过调用OSTimeTick()函数完成系统在每个时钟节拍的工作
OSTimeTick()--时钟节拍服务函数
工作:
1.给计数器OSTime加1
2.让每个任务中OSTCBDly不为0的数全部减1.
3.如果有任务减到了0,那么把该任务注册到就绪表中--就绪态
作业:1、理解中断过程和函数使用
2、串口中断接收字符数据--控制蜂鸣器和led
3、理解时钟节拍在UCOS-II的工作过程
4、利用中断唤醒和挂起函数 -- 实现LCD屏图片滚动和RTC时间显示
任务1:LCD屏显示图片滚动
任务2:当有按键按下后,停止LCD屏图片滚动,显示RTC当前时间