首页 > 其他分享 >八、FreeRTOS学习笔记-临界段代码保护及调度器挂起与恢复

八、FreeRTOS学习笔记-临界段代码保护及调度器挂起与恢复

时间:2024-06-03 16:11:39浏览次数:21  
标签:FreeRTOS 中断 ISR 代码 临界 CRITICAL 器挂 任务调度

临界段代码保护
什么是临界段:临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段

适用场合如:

问题:什么可以打断当前程序的运行?

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

FreeRTOS 在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断

函数 描述
taskENTER_CRITICAL() 任务级进入临界段 (关中断)
taskEXIT_CRITICAL() 任务级退出临界段 (开中断)
taskENTER_CRITICAL_FROM_ISR() 中断级进入临界段
taskEXIT_CRITICAL_FROM_ISR() 中断级退出临界段

特点:
1.成对使用
2.支持嵌套
3.尽量保持临界段耗时短

临界区是直接屏蔽了中断,系统任务调度靠中断,ISR也靠中断

任务调度器的挂起和恢复

挂起任务调度器, 调用此函数不需要关闭中断

函数 描述
vTaskSuspendAll() 挂起任务调度器
xTaskResumeAll() 恢复任务调度器

1、与临界区不一样的是,挂起任务调度器,未关闭中断;
2、它仅仅是防止了任务之间的资源争夺,中断照样可以直接响应;
3、挂起调度器的方式,适用于临界区位于任务与任务之间;既不用去延时中断,又可以做到临界区的安全

标签:FreeRTOS,中断,ISR,代码,临界,CRITICAL,器挂,任务调度
From: https://www.cnblogs.com/zmq-wj/p/18229087

相关文章

  • 七、FreeRTOS学习笔记-中断管理
    FreeRTOS学习笔记-中断管理中断:让CPU打断正常运行的程序,转而去处理紧急的事件(程序)中断执行机制,可简单概括为三步:1、中断请求:外设产生中断请求(GPIO外部中断、定时器中断等)2、响应中断:CPU停止执行当前程序,转而去执行中断处理程序(ISR)3、退出中断:执行完毕,返回被打断的程序处,继续......
  • 基于FREERTOS的STM32多功能手表(软件设计)
    目录前言程序现象 项目背景项目介绍目前版本实现的功能设计到的freertos知识使用到的硬件硬件连线图实现思路任务调度流程图​编辑 任务具体操作导图      代码讲解freertos初始化按键中断回调函数显示时间任务显示菜单任务其它任务(ShowCalenda......
  • FreeRTOS基础(三):动态创建任务
       上一篇博客,我们讲解了FreeRTOS中,我们讲解了创建任务和删除任务的API函数,那么这一讲,我们从实战出发,规范我们在FreeRTOS下的编码风格,掌握动态创建任务的编码风格,达到实战应用!目录一、任务函数二、动态创建任务的基本步骤2.1使能FreeRTOS的API函数2.2 定义动态创......
  • FreeRTOS基础(四):静态创建任务
       上一篇博客,我们讲解了FreeRTOS中如何动态创建任务,那么这一讲,我们从实战出发,规范我们在FreeRTOS下的编码风格,掌握静态创建任务的编码风格,达到实战应用!目录一、空闲任务和空闲任务钩子函数1.0为什么会有空闲任务?1.1空闲任务(IdleTask)1.2 空闲任务钩子函数(IdleT......
  • 在进程中使用条件量和互斥锁实现线程的同步以及临界资源的互斥访问
    /******************************************************************** author :北极甜虾呦* date :2024/06/01* function:进程中使用条件量和互斥锁实现线程的同步以及临界资源的互斥访问* note :None* CopyRight(c)[email protected]......
  • 使用条件量和互斥锁实现线程的同步以及临界资源的互斥访问
    /********************************************************************** name :* function:主线程需要创建2个子线程之后主线程终止,此时进程中有2个子线程A和B,此时进程中有一个临界资源fag,子线程A获取触摸屏坐标并判断坐标值是否在LCD屏的左上角,如果坐标范围满足......
  • 六、FreeRTOS学习笔记-任务挂起和恢复
    任务的挂起与恢复的API函数介绍API函数描述vTaskSuspend()挂起任务vTaskResume()恢复被挂起的任务xTaskResumeFromISR()在中断中恢复被挂起的任务1、挂起任务类似暂停,可恢复;删除任务,无法恢复2、恢复是恢复被挂起任务3、带FromISR后缀是在中断函数中专用......
  • Proteus8.0仿真应用设计(九十三)基于STM32CubeMX、STM32F103C8T6 、FREERTOS、MCP4151(SP
    一、简介:        MCP4151是一款SPI接口的7位数字电位器。二、主要特性:电阻值(欧姆)5kΩ、10kΩ、50kΩ、100kΩ抽头数257接口类型SPI通道数1供电电压1.8V~5.5V精度±20%温度系数(典型值)150ppm/℃工作温度-40℃~+125℃三、引脚定义:四、内部逻辑框图:五、时序图......
  • 《第二节》一、FreeRTOS学习笔记-任务创建和删除
    FreeRTOS的任务创建和删除1,任务创建和删除的API函数(熟悉)任务的创建和删除本质就是调用FreeRTOS的API函数一、任务创建动态创建任务:任务的任务控制块以及任务的栈空间所需的内存,均由FreeRTOS从FreeRTOS管理的堆中分配静态创建任务:任务的任务控制块以及任务的栈空间所需......
  • FreeRtos进阶——栈保存现场的几种场景
    MCU架构在认识栈的结构前,我们先来认识以下单片机的简单架构。在我们的CPU中有着很重要的一个模块——寄存器(R0-R15),其中R13,R14,R15的别称分别为SP栈顶指针、LR返回地址、PC当前指令地址。外部RAM是单片机的内存(当我们在使用栈时就会在内存中划分一块空间作为栈空间)。Code是......