FreeRTOS--中断管理

2023-05-16

异常是指任何打断处理器正常执行,并且迫使处理器进入一个由有特权的特殊指令执 行的事件。
内部事件(像处理器指令运行产生的事件)引起的异常称为同步异常。
异步异常主要是指由于外部异常源产生的异常,是一个由外部硬件装置产生的事件引 起的异步异常。
同步异常和异步异常的区别:同步异常触发后,系统必须立刻进行处理而不能够依然执行原有的程序指令步骤;而异步异常则可以延缓处理甚至是忽 略,例如按键中断异常,虽然中断异常触发了,但是系统可以忽略它继续运行。
FreeRTOS 的中断管理支持
  1. /关中断。 
  2. 恢复中断。
  3. 中断使能。
  4. 中断屏蔽。
  5. 可选择系统管理的中断优先级。

与中断相关的硬件:

  1. 外设:当外设需要请求 CPU 时,产生一个中断信号,该信号连接至中断控制器。
  2. 中断控制器:中断控制器是 CPU 众多外设中的一个,它一方面接收其他外设中断信号 的输入,另一方面,它会发出中断信号给 CPU。可以通过对中断控制器编程实现对中断源的优先级、触发方式、打开和关闭源等设置操作。Cortex-M 系列控制器中常用的中断控制器是 NVIC(内嵌向量中断控制器 Nested Vectored Interrupt Controller
  3. CPUCPU 会响应中断源的请求,中断当前正在执行的任务,转而执行中断处理程序。NVIC 最多支持 240个中断,每个中断最多 256 个优先级。

中断管理的运作机制

当中断产生时,处理机将按如下的顺序执行:
1. 保存当前处理机状态信息
2. 载入异常或中断处理函数到 PC 寄存器
3. 把控制权转交给处理函数并开始执行
4. 当处理函数执行完成时,恢复处理器状态信息
5. 从异常或中断中返回到前一个程序执行点

中断延迟是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。也就是:系统接收到中断信号到操作系统作出响应,并完成换到转入中断服务程序的时间。 也可以简单地理解为:(外部)硬件(设备)发生中断,到系统执行中断服务子程序 ISR )的第一条指令的时间。

外界硬件发生了中断后, CPU 到中断处理器读取中断向量,并且查找中断向量表,找到对应的中断服务子程序( ISR )的首地址,然后跳转到对应的 ISR 去做相应处理。这部分时间,我称之为:识别中断时间

 

中断延迟 = 识别中断时间 + [ 等待中断打开时间 ] + [ 关闭中断时间 ]
在嵌入式系统中合理利用中断,能更好利用 CPU 的资源。
中断管理:
    FreeRTOS 中的中断使用其实跟裸机差不多的,需要我们自己配置中断, 并且使能中断,编写中断服务函数,在中断服务函数中使用内核 IPC 通信机制,一般建议 使用信号量、消息或事件标志组等标志事件的发生,将事件发布给处理任务,等退出中断 后再由相关处理任务具体处理中断。
实验:
 
中断管理实验是在 FreeRTOS 中创建了两个任务分别获取信号量与消息队列,并且定义了两个按键 KEY1 KEY2 的触发方式为中断触发,其触发的中断服务函数则跟裸机一 样,在中断触发的时候通过消息队列将消息传递给任务,任务接收到消息就将信息通过串 口调试助手显示出来。

 

 

 

 

 

中断服务函数:

 

 

 

 

实验现象:

 

 

 

 

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

FreeRTOS--中断管理 的相关文章

  • 心跳跟随的心形灯(STM32(HAL)+WS2812+MAX30102)

    文章目录 前言 介绍 系统框架 原项目地址 本项目开发开源地址 硬件PCB 软件功能 详细内容 硬件外壳制作 WS2812级联及控制 MAX30102血氧传感器 0 96OLED FreeRTOS 效果视频 总结 前言 在好几年前 我好像就
  • 详解FreeRTOS中的软件定时器

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

    FreeRTOS例程4 串口DMA收发不定长数据 知乎 zhihu com
  • 【FreeRtos学习笔记】STM32 CubeMx——Timers(定时器)

    目录 1 软件定时器 2 示例程序 2 1 例程功能 2 2 步骤 2 3 实验结果 2 4 函数讲解 1 软件定时器 定时器是MCU常用的外设 我们在学习各种单片机时必然会学习它的硬件定时器 但是 MCU自带的硬件定时器资源是有限的 而且
  • FreeRTOS软件定时器创建、复位、开始和停止(备忘)

    目录 一 简介 1 1 开发环境 1 2 摘要 二 STM32CubeIDE配置 三 创建定时器 3 1 头文件声明 3 2 工程文件定义 3 3 创建定时器 3 4 开启 复位 和关闭定时器 四 定时器回调函数 一 简介 1 1 开发环境
  • FreeRTOS学习(八) 延时函数

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 FreeRTOS延时函数有两个 分别是 vTaskDelay vTaskDelayUntil 1 vTaskDelay 任务相对延时 函数原型
  • FreeRTOS系列

    1 RTOS简介 RTOS全称为 Real Time Operation System 即实时操作系统 RTOS强调的是实时性 又分为硬实时和软实时 硬实时要求在规定的时间内必须完成操作 不允许超时 而软实时里对处理过程超时的要求则没有很严
  • 【FreeRTOS】队列的使用

    作者主页 凉开水白菜 作者简介 共同学习 互相监督 热于分享 多加讨论 一起进步 专栏资料 https pan baidu com s 1nc1rfyLiMyw6ZhxiZ1Cumg pwd free 点赞 收藏 再看 养成习惯 订阅的粉丝
  • FreeRTOS临界区

    FreeRTOS临界区是指那些必须完整运行 不能被打断的代码段 比如有的外设的初始化需要严格的时序 初始化过程中不能被打断 FreeRTOS 在进入临界区代码的时候需要关闭中断 当处理完临界区代码以后再打开中断 FreeRTOS 系统本身就
  • FreeRTOS记录(九、一个裸机工程转FreeRTOS的实例)

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

    文章目录 任务状态 任务挂起 vTaskSuspend 取消任务挂起 vTaskResume 挂起任务调度器 vTaskSuspendAll 取消挂起任务调度器 xTaskResumeAll 代码示例 任务挂起 取消任务挂起 代码示例 挂起
  • Error: L6218E: Undefined symbol vApplicationGetIdleTaskMemory (referred from tasks.o).

    我用的是F103ZET6的板子 移植成功后 编译出现两个错误是关于stm32f10x it c 里 void SVC Handler void void PendSV Handler void 两个函数的占用问题 随后编译出现以下两个问题
  • STM32F103移植FreeRTOS必须搞明白的系列知识---2(FreeRTOS任务优先级)

    STM32F103移植FreeRTOS必须搞明白的系列知识 1 Cortex CM3中断优先级 STM32F103移植FreeRTOS必须搞明白的系列知识 2 FreeRTOS任务优先级 STM32F103移植FreeRTOS必须搞明白的系
  • stm32f103zet6移植标准库的sdio驱动

    sdio移植 st官网给的标准库有给一个用于st出的评估板的sdio外设实现 但一是文件结构有点复杂 二是相比于国内正点原子和野火的板子也有点不同 因此还是需要移植下才能使用 当然也可以直接使用正点原子或野火提供的实例 但为了熟悉下sdio
  • FreeRTOS学习(三)开关中断

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

    这个笔记主要依据韦东山freertos快速入门系列记录 感谢韦东山老师的总结 什么是实时操作系统 操作系统是一个控制程序 负责协调分配计算资源和内存资源给不同的应用程序使用 并防止系统出现故障 操作系统通过一个调度算法和内存管理算法尽可能把
  • [FreeRTOS入门学习笔记]定时器

    定时器的使用步骤 1 定义一个handle xTimerCreate创建 2 启动定时器 在Task1中调用 通过队列通知守护任务来执行定时器任务 要再config头文件中定义守护任务相关配置 虽然定时器是在task1中启动 但是定时器的任
  • FreeRTOSConfig.h 配置优化及深入

    本篇目标 基于上一篇的移植freertos stm32f4 freertos 上 修改 FreeRTOSConfig h 文件的相关配置来优化辅助 FreeRtos 的使用 并且建立一些基本功能 信号量 消息地列等 的简单应用位于 stm3
  • FreeRTOS 配置TICK_RATE_HZ

    我使用的是带有 5 4 版 FreeRTOS 的 MSP430f5438 我有一个有趣的问题 我无法弄清楚 基本上 当我将 configTICK RATE HZ 设置为不同的值时 LED 闪烁得更快或更慢 它应该保持相同的速率 我将 con
  • 有关 CMake 错误的问题:没有为目标提供源

    我正在尝试使用 cmake 和 eclipse 将 FreeRtos 添加到我的项目中 但出现错误 我运行的是 debian 10 我的 cmake 版本是 3 13 4 cmake 的文件可以在以下位置找到这个 git 仓库 https

随机推荐

  • linux/mm/memory.c/int share_page(unsigned long address)

    share page tries to find a process that could share a page with the current one Address is the address of the wanted pag
  • sumo教程 Hello World

    sumo教程 Hello World 注意事项 确保安装的sumo版本至少为1 4 0 以便能够使用本教程中显示的所有功能 要求 sumo gui和netedit的版本大于等于1 4 0 介绍 这个教程服务于第一次使用sumo的人员 我们准
  • 教程——OSMWebWizard

    教程 OSMWebWizard 有关事宜 osm web wizard提供一种最简单的方式开始sumo 基于一种openstreetmap的摘抄 你可以配置随机流量需求和可视化一种场景在sumo gui 这个教程可以指导你一步步从选择地图类
  • sumo-绕圈行驶

    绕圈行驶 在本教程中 xff0c 我们将使用 netedit 构建一个简单的圆形网络 xff0c 并使用重路由器使车辆绕圈行驶 所有定义文件都可以在 lt SUMO HOME gt docs tutorial circles 目录中找到 本
  • 教程——sumolympics

    SUMOlympics 本教程针对不同的交通模式设置了比赛 xff08 集体 100 米冲刺 xff09 您将学习如何在 netedit 中创建特殊车道和 xff08 非常简单的 xff09 红绿灯 xff0c 使用不同的车辆类别来定义车辆
  • sumo 教程——高速公路

    本教程涵盖了在多车道高速公路上创建异构流以及修改和保存视图设置的非常基本的元素 修建高速公路 编辑几何点 打开 netedit 创建一个虚构的高速公路 我们一开始就保持这个非常简单 xff0c 并考虑一个没有入口或出口的路段 按e进入边创建
  • sumo教程——Manhattan

    介绍 本教程介绍了如何在 SUMO 中构建曼哈顿移动模型 在这个模型中 xff0c 固定数量的车辆在曼哈顿电网网络上随机行驶 所有文件也可以在 lt SUMO HOME gt docs tutorial manhattan 目录中找到 创建
  • 基于51单片机的双通道DHT11温湿度显示器(LCD1602)

    基于STC89C51单片机的双通道DHT11实时温湿度显示系统 xff08 LCD1602 xff09 前言题目要求实现的功能思路介绍 代码部分注意事项驱动部分LCD1602驱动按键驱动 主要模块初始化DHT11驱动中断服务程序显示函数主函
  • 【21-7-25笔记】SR(Segment Routing)详解

    第一卷 第一章 简介 1 11 SRv6 SRv6 将SR框架应用到IPv6数据平面 SRv6对IPv6的价值至关重要 xff0c 将极大地影响未来的IP基础设施部署 xff0c 无论是在数据中心 xff0c 大规模汇聚网络 xff0c 还
  • javascript编写学生,查询学校学生

    lt DOCTYPE html gt lt head gt lt head gt lt style gt table width 400px height 400px border 1px solid red div float left
  • A-Frame基础用法

    简介 x1f170 Frame 是一个用来构建虚拟现实 xff08 VR xff09 应用的网页开发框架 由WebVR的发起人Mozilla VR 团队所开发 xff0c 是当下用来开发WebVR内容主流技术方案 WebVR是一个完全开源的
  • 双色球小程序(关于对数组的使用)

    span class token keyword package span 双色球 span class token punctuation span span class token keyword import span java sp
  • IDEA: 遇到问题Error during artifact deployment. See server log for details,解决

    目录 一 jar 包有有些没能识别 xff0c tomcat没有配置好 xff01 二 这个一般代码错了 xff1a 三 使用更低一点版本的Tomcat 在学习JavaWeb的时候 xff0c 遇到一个著名的报错 xff1a Error d
  • VNC死机的处理方法

    目录 1 打开MobaXterm并登录 2 连续输入以下命令 xff1a 1 打开MobaXterm并登录 2 连续输入以下命令 xff1a conda deactivate 回车 vncserver kill 3 回车 vncserver
  • js异步操作

    一 异步操作概述 单线程模型 单线程模型指的是 xff0c JavaScript 只在一个线程上运行 也就是说 xff0c JavaScript 同时只能执行一个任务 xff0c 其他任务都必须在后面排队等待 程序里面所有的任务 xff0c
  • 【写sql时遇到的bug:org.xml.sax.SAXParseException; lineNumber: 1; columnNumber】

    报错 xff1a org xml sax SAXParseException lineNumber 1 columnNumbe 修改后的代码片段 在使用 64 Select 注解编写sql的时候 xff0c 原先写的 gt 61 和 lt
  • @Scheduled 定时任务不执行

    一 排查代码中添加的定时任务步骤是否正确 启动类上加 64 EnableScheduling 注解定时任务类上加 64 Component定时方法上加 64 Scheduled span class token annotation pun
  • (09)Linux命令【mkdir命令】

    09 Linux命令 mkdir命令 1 1 目录 1 目录 2 Linux系统介绍 3 Linux 应用领域 4 Linux命令 mkdir命令 5 结语 1 2 Linux系统介绍 Linux 全称GNU Linux 是一种免费使用和自
  • 银河麒麟高级服务器操作系统V10上基于Docker、x11vnc-desktop打造基于容器的在线IDEA arm64开发环境方案

    前言 在线IDE目前表现比较好的有云效 xff0c 其功能主要还是以Web方式提供在线vscode集成开发环境 xff0c 启动编辑环境初步推断为内部启动一个专用语言的虚拟机或者容器 xff0c clone源码 优点是客户端只需要一个浏览器
  • FreeRTOS--中断管理

    异常是指任何打断处理器正常执行 xff0c 并且迫使处理器进入一个由有特权的特殊指令执 行的事件 内部事件 xff08 像处理器指令运行产生的事件 xff09 引起的异常称为同步异常 异步异常主要是指由于外部异常源产生的异常 xff0c 是