STM32——UCOSIII 简介

  • Post author:
  • Post category:其他



目录


UCOSIII简介


UCOSIII中的任务


组成


任务堆栈


任务控制块


任务函数


任务函数模板


UCOSIII系统任务


组成


空闲任务


时钟节拍任务


统计任务


定时任务


中断服务管理任务


UCOSIII任务状态


组成及状态概念


UCOSIII中的delay


UCOSIII中的uart



UCOSIII简介

  • UCOSIII是一个

    可剥夺的多任务系统


    具有多任务处理能力


UCOSIII中的任务



组成


  • 任务堆栈
  • 任务控制块
  • 任务函数


任务堆栈

  • 上下切换的时候用来

    保存任务工作环境

    (STM32内部寄存器)


任务控制块


  • 记录任务



    各个属性


任务函数

用户编写的

任务处理代码(干活的)


任务函数模板

   void XXX_task(void *p_arg)
   {
       while(1)
       {
        。。。。。//任务处理过程
        }
    }



UCOSIII系统任务




组成



  • 空闲任务

  • 时钟节拍任务

  • 统计任务

  • 定时任务

  • 中断服务管理任务

空闲任务

  • UCOSIII创建的第一个任务,UCOSIII

    必须创建的任务

    ,此任务由

    UCOSIII自动创建

时钟节拍任务

  • 必选任务

统计任务

  • 可选任务

  • 作用:

    统计

    CPU使用率和各个任务的堆栈使用量


  • OS_CFG_STAT_TASK_EN控制

定时任务

  • 可选任务

  • 作用:

    提供

    定时服务


  • OS_CFG_TMR_EN控制

中断服务管理任务

  • 可选任务


  • OS_CFG_ISR_POST_DEFERRED_EN控制


UCOSIII任务状态



组成及状态概念




  • 休眠态 :



    任务


    已在CPU的flash中


    了,但是


    不受UCOSIII管理





  • 就绪态






    系统


    为任务分配了任务控制块


    ,并且


    任务已经在就绪表中登记


    ,这时这个任务就


    具有了运行的条件


    ,此时任务的状态就是


    就绪态





  • 运行态






    任务


    获得CPU的使用权





    正在运行





  • 等待态








    正在运行的任务需要等待一段时间


    ,或者等待某个事件,这个任务就进入了等待态,


    此时系统就会把CPU使用权转交给别的任务





  • 中断服务态









    发送中断


    ,当前


    正在运行的任务会被挂起





    CPU


    转而去


    执行中断服务函数


    ,此时任务的任务状态


    叫做中断服务态





UCOSIII中的delay



函数

描述

delay_osschedlock()


任务调度器加锁


delay_osschedunlock()


任务调度解锁


delay_ostimedly()


按照节拍数延时


SysTick_Handler()

滴答定时器中断服务函数

delay_init()

滴答定时器与延迟函数初始化

delay_us()


不会引发任务调动


delay_ms()


最小ms延时时间为UCOS系统心跳时间



UCOSIII中的uart


Void USART1_IRQHandler(void)
{
   #if SYSTEM_SUPPORT_OS  	//使用UCOS操作系统
	OSIntEnter();     
   #endif

   //中间处理函数,和不是用UCOS时相同

   #if SYSTEM_SUPPORT_OS  
	OSIntExit();    	//退出中断
   #endif
}



版权声明:本文为m0_58600162原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。