FreeRTOS中使用中断的一些注意事项

2023-05-16

1.几个宏定义的解释

  • [configLIBRARY_LOWEST_INTERRUPT_PRIORITY]
    这个宏是可以定义的中断最低优先级,由于STM32中断管理只用了4位来分配抢占优先级和子优先级,并且FreeRTOS使用优先级分组4(没有子优先级),所以该宏设为15

  • configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY
    这个宏是系统可管理的最高中断优先级,即为一个阈值,低于该值的可以调用一些fromISR的函数以及能够通过函数portDISABLE_INTERRUPTS()和portENABLE_INTERRUPTS()进行关闭和打开中断操作。高于该优先级的中断则不响应打开和关断中断(一直都可以进行中断操作)。

  • configKERNEL_INTERRUPT_PRIORITY
    这个宏定义是( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ),实质上就是把15左移4位当作真正的优先级。(因为第四位保留了)

  • configMAX_SYSCALL_INTERRUPT_PRIORITY
    相当于( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ),原因与configKERNEL_INTERRUPT_PRIORITY相同。
    2.关闭与打开中断函数

  • 关闭:portDISABLE_INTERRUPTS()
    这个函数实际上就是vPortRaiseBASEPRI(),不管是打开还是关闭中断,底层操作的都是basepri寄存器。注意: 关闭中断只能关闭优先级低于configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY的中断事件。

  • 打开:portENABLE_INTERRUPTS()
    相当于vPortSetBASEPRI( 0 ),同样是操作basepri寄存器。
    3.一些注意事项

  • 一些fromISR函数不能用在高于阈值的中断函数中。

  • portDISABLE_INTERRUPTS()不能关闭高于阈值的中断函数。

  • 系统延时,会进行任务调度,任务调度可能会打开关闭的中断。

  • Free RTOS尽量少用中断。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FreeRTOS中使用中断的一些注意事项 的相关文章

  • 详解FreeRTOS中的软件定时器

    软件定时器用于让某个任务定时执行 或者周期性执行 比如设定某个时间后执行某个函数 或者每隔一段时间执行某个函数 由软件定时器执行的函数称为软件定时器的回调函数 参考资料 Mastering the FreeRTOS Real Time Ke
  • FreeRTOS例程4-串口DMA收发不定长数据

    FreeRTOS例程4 串口DMA收发不定长数据 知乎 zhihu com
  • 【FreeRTOS 信号量】互斥信号量

    互斥信号量与二值信号量类似 但是互斥信号量可以解决二值信号量出现的优先级翻转问题 解决办法就是优先级继承 普通互斥信号量创建及运行 参阅安富莱电子demo 互斥信号量句柄 static SemaphoreHandle t xMutex NU
  • FreeRTOS记录(七、FreeRTOS信号量、事件标志组、邮箱和消息队列、任务通知的关系)

    我们在前面单独介绍过FreeRTOS的任务通知和消息队列 但是在FreeRTOS中任务间的通讯还有信号量 邮箱 事件组标志等可以使用 这篇文章就这些成员与消息队列和任务通知的关系进行说明分析 增加邮箱部分 任务通知发送消息 Demo 202
  • 一文教你学会keil软件仿真

    仿真在我们调试代码中是非常重要的 通过仿真 我们可以快速定位到错误代码 或者错误逻辑的地方 这里我就以上一篇博客为例 教大家如何软件仿真 软件仿真不需要单片机 直接通过keil软件进行代码调试 一 打开工具 二 选择软件仿真 三 开始仿真
  • FreeRTOS记录(九、一个裸机工程转FreeRTOS的实例)

    记录一下一个实际项目由裸机程序改成FreeRTOS 以前产品的平台还是C8051单片机上面的程序 硬件平台改成了STM32L051 同时使用STM32CubeMX生成的工程 使用FreeRTOS系统 EEPROM数据存储读取函数修改更新 2
  • 【FreeRTOS(三)】任务状态

    文章目录 任务状态 任务挂起 vTaskSuspend 取消任务挂起 vTaskResume 挂起任务调度器 vTaskSuspendAll 取消挂起任务调度器 xTaskResumeAll 代码示例 任务挂起 取消任务挂起 代码示例 挂起
  • freeRTOS使用uxTaskGetStackHighWaterMark函数查看任务堆栈空间的使用情况

    摘要 每个任务都有自己的堆栈 堆栈的总大小在创建任务的时候就确定了 此函数用于检查任务从创建好到现在的历史剩余最小值 这个值越小说明任务堆栈溢出的可能性就越大 FreeRTOS 把这个历史剩余最小值叫做 高水位线 此函数相对来说会多耗费一点
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • FreeRTOS学习(三)开关中断

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 背景知识 Cotex M3的NVIC最多支持240个IRQ 中断请求 1个不可屏蔽 NMI 1个Systick 滴答定时器 Cortex M处理
  • Arduino IDE将FreeRTOS用于STM32

    介绍 适用于STM32F103C8的FreeRTOS STM32F103C是一种能够使用FreeRTOS的ARM Cortex M3处理器 我们直接在Arduino IDE中开始使用STM32F103C8的FreeRTOS 我们也可以使用K
  • [FreeRTOS入门学习笔记]定时器

    定时器的使用步骤 1 定义一个handle xTimerCreate创建 2 启动定时器 在Task1中调用 通过队列通知守护任务来执行定时器任务 要再config头文件中定义守护任务相关配置 虽然定时器是在task1中启动 但是定时器的任
  • freeRTOS出现任务卡死的情况。

    最近在做一个产品二代升级的项目 代码是上一任工程师留下的 很多BUG 而且融合了HAL库和LL库 以及github上下载的GSM源码 很不好用 我这边是将2G模块换成了4G 且添加了单独的BLE模块 因此只在源码的基础上 去除2G和BLE代
  • FreeRTOS轻量级同步--任务通知

    1 简介 在FreeRTOS的配置参数中的configUSE TASK NOTIFICATIONS宏打开 一般RTOS会默认打开 如图1所示 图1 notify宏开关 RTOS在创建任务时 会创建一个32位的通知值ulNotifiedVal
  • FreeRTOS实时操作系统(三)任务挂起与恢复

    系列文章 FreeRTOS实时操作系统 一 RTOS的基本概念 FreeRTOS实时操作系统 二 任务创建与任务删除 HAL库 FreeRTOS实时操作系统 三 任务挂起与恢复 FreeRTOS实时操作系统 四 中断任务管理 FreeRTO
  • 再论FreeRTOS中的configTOTAL_HEAP_SIZE

    关于任务栈和系统栈的基础知识 可以参考之前的随笔 FreeRTOS 任务栈大小确定及其溢出检测 这里再次说明 define configTOTAL HEAP SIZE size t 17 1024 这个宏 官方文档解释 configTOTA
  • FreeRTOSConfig.h 配置优化及深入

    本篇目标 基于上一篇的移植freertos stm32f4 freertos 上 修改 FreeRTOSConfig h 文件的相关配置来优化辅助 FreeRtos 的使用 并且建立一些基本功能 信号量 消息地列等 的简单应用位于 stm3
  • 小型 ARM 微控制器的 RTOS 内核之间的可量化差异 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 有许多不同的 RTOS 可用于微控制器 我专门寻找支持 ARM Cortex M 处理器的 RTOS 另外 我对闭源解决方案不感兴趣 试图从网站
  • 有关 CMake 错误的问题:没有为目标提供源

    我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中 但出现错误 我运行的是 debian 10 我的 cmake 版本是 3 13 4 cmake 的文件可以在以下位置找到这个 git 仓库 https
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J

随机推荐

  • Docker - docker build 命令详解

    docker build 命令原理 docker build 命令从 Dockerfile 和上下文构建镜像构建的上下文 xff1a 位于指定 PATH 或 URL 中的一组文件构建过程可以引用上下文中的任何文件 xff0c 例如 xff0
  • RealSense二次开发

    转载 xff1a librealsense2查看相机设备信息 JavaShuo 文章目录 1 librealsense2设备信息读取 xff12 xff0e realsense 投影函数和反投影函数3 深度相机与彩色相机的坐标变换 1 li
  • 大规模MIP的精确算法和实现

    大规模MIP的精确算法和实现 大规模MIP的精确算法和实现 xff1a 目录第1部分 xff1a CPLEX的Java API详解1 CPLEX简介2 构建简单的模型3 CPLEX的高级应用 第2部分 xff1a Gurobi的Python
  • 两种Dockerfile文件配置

    注意 xff1a xxx是您的项目名称 xff01 Xmx xff1a 堆最大值 xff1b Xms xff1a 堆初始值 COPY指令只能从执行docker build所在的主机上读取资源并复制到镜像中 而ADD指令还支持通过URL从远程
  • 网络编程-----在线词典项目(服务器)

    服务器端 span class token macro property span class token directive keyword include span span class token string lt stdio h
  • 模型的图优化

    图优化 最近在整理之前的一些工作内容 记录下来温故而知新 在各种开源推理框架中 xff0c 我们总能看到有一种graph optimizer技术 xff0c 主要是对用户想要运行的网络模型进行一种网络结构层面的优化 xff0c 剔除不需要的
  • 学C++有多难,你知道吗?

    都2020年了 xff0c 还要学C 43 43 吗 xff1f C 43 43 好多理工科大学里面都有 xff0c 它的学习难度比其他编程语言比如Python Javascript 和Java等等难 那为什么呢 xff1f C 43 43
  • Ubuntu-KCF/DSST算法无人机跟踪仿真/实物保姆级教程

    KCF算法无人机跟踪 介绍 自己搭建的无人机跟踪实验 xff0c 主要讲软件 xff0c 硬件的需要等等 基础知识准备 整个系统需要两部分 xff0c 识别程序和控制无人机运动的程序 xff0c 都是Python脚本 xff0c 但运行需要
  • Linux基础入门:单片机和Linux有什么不同吗

    我发现很多初学者只有单片机基础 xff0c 甚至没有单片机基础 在学习Linux时 xff0c 对很多概念比较陌生 xff0c 导致不知道学什么 xff0c 也不知道学了之后有什么用 所以小编在此分享此文 第1章 单片机和Linux的区别
  • 为什么都说代码改变世界?是因为这五位程序员创造了未来!

    致敬那些为软件开发奠定坚实基础的计算机科学先驱 从 1 和 0 开始 xff0c 编程经历了很长一段路 xff0c 才达到了现在的抽象状态 过去的程序员用伟大的发明 xff0c 为现代程序员轻松地完成工作奠定了坚实的基础 如果我们研究某个软
  • C语言丨关键字enum用法详解,看这篇就够了

    一 关键字enum的定义 enum是C语言中的一个关键字 xff0c enum叫枚举数据类型 xff0c 枚举数据类型描述的是一组整型值的集合 xff08 这句话其实不太妥当 xff09 xff0c 枚举型是预处理指令 define的替代
  • Ubuntu下cmake使用入门

    CMake是一个跨平台的安装 xff08 编译 xff09 工具 xff0c 可以用简单的语句来描述所有平台的安装 编译过程 他能够输出各种各样的makefile或者project文件 其包含自己的语法结构 xff0c 只要按照其语法编写成
  • Windows与Linux双系统设置默认引导项与删除引导项

    当电脑中安装了Windows和Linux双系统 xff0c 但是每次开机默认自动进入Linux系统时 xff0c 有时根本来不及选择 xff0c 平时常用的系统却是Windows xff0c 于是我们需要让电脑默认选择Windows系统启动
  • 统招非全日制研究生就业受歧视的回应文件

    根据教育部办公厅等五部门 关于进一步做好非全日制研究生就业工作的通知 教研厅函 2019 1号 以及教育部办公厅印发 关于统筹全日制和非全日制研究生管理工作的通知 教研厅函 2016 2号 文件 xff0c 明确自2017年起 xff0c
  • IOTDB集群部署

    背景 IOTDB单节点的数据插入性能不是很好 xff0c 所以 xff0c 想看看集群的效果 xff0c 那么就需要搭建集群的环境 文件获取 下载地址 选择集群版本 文件目录 完成IoTDB Cluster安装后 xff0c 默认会在IoT
  • 全球超1850万条POI数据获取方法

    POI是 Point of Interest 的缩写 xff0c 中文可以翻译为 兴趣点 在地理信息系统中 xff0c 一个POI可以是一栋房子 一个商铺 一个邮筒 一个公交站等 数据获取 xff1a 数据分享 全球超1850万条 POI数
  • 百度网盘普通用户如何上传单文件最大4G文件。window split命令如何分割文件上传。

    普通用户使用百度网盘Web端上传文件时 xff0c 单文件最大支持1G大小 xff1b 使用网盘PC客户端上传文件时 xff0c 单文件最大支持4G xff1b 如果您需要上传大于4G文件 xff0c 可充值百度网盘会员 xff0c 其中
  • FreeRTOS 框架

    官网 章节目录规划 Kernel taskmemory managementqueue mutex semaphoretime managesoftware timerinterrupt process FreeRTOS plus Free
  • 飞行器设计之界限线图

    推重比与翼载荷约束分析 主要性能要求可以表示为最小起飞推重比T W和起飞翼载荷W S的函数 xff0c 每一项性能要求可以在起飞推重比T W 起飞翼载荷W S坐标中构成一条约束曲线 采用能量守恒方程 xff0c 推导出飞机性能约束的一般主管
  • FreeRTOS中使用中断的一些注意事项

    1 几个宏定义的解释 configLIBRARY LOWEST INTERRUPT PRIORITY 这个宏是可以定义的中断最低优先级 xff0c 由于STM32中断管理只用了4位来分配抢占优先级和子优先级 xff0c 并且FreeRTOS