µCOS-III从入门到精通 第六章(µC/OS-III临界区代码保护及任务调度锁)

参考教程:【正点原子】手把手教你学UCOS-III实时操作系统_哔哩哔哩_bilibili

一、临界段代码保护

1、临界段代码保护简介

(1)临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段。

(2)临界段适合于需严格按照时序的场合,如软件通信协议的实现,如果其实现过程中被中断打断,将会扰乱时序,从而引发通讯错误。

(3)临界区外,中断与任务调度可以打断当前程序的运行,而临界区内直接屏蔽了中断(实际上,任务调度也是依靠中断实现的)。

2、临界段代码保护函数介绍

(1)µC/OS-III在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断。

函数

描述

CPU_CRITICAL_ENTER( )

进入临界段

CPU_CRITICAL_EXIT( )

退出临界段

(2)临界段代码保护函数使用方法:

CPU_SR_ALLOC();	
/* 非临界区代码 */ 
CPU_CRITICAL_ENTER() ;
{
        … …	/* 临界区代码 */ 
}
CPU_CRITICAL_EXIT()	;
/* 非临界区代码 */ 

(3)以上两个函数需要成对使用,且不支持嵌套使用。

二、任务调度锁

1、任务调度锁简介

(1)任务调度锁用于对调度器上锁以及解锁,当调度器上锁时则禁止任务调度(也即挂起任务调度器),当解锁时则允许任务调度(也即恢复任务调度器)。

(2)调度锁只是将调度器关闭,并不影响中断的执行,中断依旧正常触发,只是不会执行任务切换。

2、任务调度函数介绍

(1)函数概览:

函数

描述

OSSchedLock(OS_ERR *p_err)

挂起任务调度器

OSSchedUnlock (OS_ERR *p_err)

恢复任务调度器

(2)任务调度器挂起和恢复函数使用方法:

OS_ERR 	err ;
OSSchedLock(&err);	   /* 调度器上锁 */ 
{
        /* 操作代码 */
}
OSSchedUnlock(&err);     /* 调度器解锁 */ 
	

(3)以上两个函数需要成对使用,且支持嵌套使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值