目录
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 版权协议,转载请附上原文出处链接和本声明。