从零开始一起学stm32(十五)---UCOS-II中断和时间管理

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当前时间

 

猜你喜欢

转载自blog.csdn.net/qq_38639426/article/details/88634593