当前位置: 首页 > news >正文

FreeRTOS 中断管理介绍和实操

目录

中断定义

中断优先级

相关注意

中断相关函数

1.队列

2.信号量

3.事件标志组

4.任务通知

5.软件定时器

中断管理实操


中断定义

中断是指在程序执行的过程中,突然发生了某种事件,需要立即停止当前正在执行的程序,并转而处理这个事件,处理完后再回到原来的程序执行点继续执行的过程。

中断可以是硬件中断(由硬件设备触发)或软件中断(由程序执行中断指令触发)。

中断可以提高计算机的响应速度和效率,使得计算机可以同时处理多个任务。

中断优先级

任何中断的优先级都大于任务!

在我们的操作系统,中断同样是具有优先级的,并且我们也可以设置它的优先级,但是他的优先 级并不是从 0~15 ,默认情况下它是从 5~15 ,0~4 这 5 个中断优先级不是 FreeRTOS 控制的(5是 取决于 configMAX_SYSCALL_INTERRUPT_PRIORITY)。

相关注意

1. 在中断中必需使用中断相关的函数;

2. 中断服务函数运行时间越短越好。

中断相关函数

1.队列

xQueueReceiveFromISR()

  • 在中断中从队列头部读取消息,并删除消息

xQueuePeekFromISR()

  • 在中断中从队列头部读取消息

2.信号量

xSemaphoreGiveFromISR()

  • 在中断中释放信号量

xSemaphoreTakeFromISR()

  • 在中断中获取信号量

3.事件标志组

xEventGroupClearBitsFromISR()

  • 在中断中清零事件标志位

xEventGroupSetBitsFromISR()

  • 在中断中设置事件标志位

4.任务通知

xTaskNotifyFromISR()

  • 在中断中发送任务通知

xTaskNotifyAndQueryFromISR()

  • 在中断中发送任务通知

vTaskNotifyGiveFromISR()

  • 在中断中发送任务通知

5.软件定时器

xTimerStartFromISR()

  • 在中断中开启软件定时器定时

xTimerStopFromISR()

  • 在中断中停止软件定时器定时

xTimerResetFromISR()

  • 在中断中复位软件定时器定时

xTimerChangePeriodFromISR()

  • 在中断中更改定时超时时间

中断管理实操

创建一个队列及一个任务,按下按键 KEY1 触发中断,在中断服务函数里向队列里发送数据,任 务则阻塞接收队列数据。

打开CubeMX

1.将FreeRTOS移植到STM32F103C8T6,具体看我之前写过的文章

将FreeRTOS移植到STM32F103C8T6

2.在NVIC中使能中断

3.中断代码示例:

用到的中断函数

  • xQueueSendFromISR()

stm32f1xx_it.c

#include "cmsis_os.h" // 增加CubeMX封装好的头文件extern osMessageQId myQueue01Handle;void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{uint32_t snd = 1;xQueueSendFromISR(myQueue01Handle, &snd, NULL);
}

4.主程序代码示例:

freertos.c

void StartDefaultTask(void const * argument)
{uint32_t rev = 0;for(;;){if (xQueueReceive(myQueue01Handle, &rev, portMAX_DELAY) == pdTRUE)printf("rev = %d\r\n", rev);osDelay(1);}
}

5.打开串口助手,查看结果

相关文章:

FreeRTOS 中断管理介绍和实操

目录 中断定义 中断优先级 相关注意 中断相关函数 1.队列 2.信号量 3.事件标志组 4.任务通知 5.软件定时器 中断管理实操 中断定义 中断是指在程序执行的过程中,突然发生了某种事件,需要立即停止当前正在执行的程序,并转而处理这个…...

性能测试 —— Jmeter 常用三种定时器!

1、同步定时器 位置:HTTP请求->定时器->Synchronizing Timer 当需要进行大量用户的并发测试时,为了让用户能真正的同时执行,添加同步定时器,用户阻塞线程,知道线程数达到预先配置的数值,才开始执行…...

ROS自学笔记十七:Arbotix

ArbotiX 是一个基于 ROS(Robot Operating System)的机器人控制系统,它旨在为小型机器人提供硬件控制和传感器接口,以便于机器人的运动和感知。以下是有关 ROS 中 ArbotiX 的简介和安装步骤: ArbotiX 简介 ArbotiX 主…...

Mac电脑窗口管理Magnet中文 for mac

Magnet是一款Mac窗口管理工具,它可以帮助用户轻松管理打开的窗口,提高多任务处理效率。以下是Magnet的一些主要特点和功能: 分屏模式支持:Magnet支持多种分屏模式,包括左/右/顶部/底部 1/2 分屏、左/中/右 1/3 分屏、…...

Centos7 部署 Stable Diffusion

参考:https://www.jianshu.com/p/ff81bb76158a 遇到的问题: 1、git clone 比较慢 解决办法:设置代理 https://blog.csdn.net/dszgf5717/article/details/130735389 2、pip install 比较慢 解决办法:更换源或设置代理 https:/…...

【Python】一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格

题目要求:一个句子中也许有多个连续空格,过滤掉多余的空格,只留下一个空格 例:(为了方便观看,以 ▢ 代替空格) 输入:123▢▢abc▢▢▢python 输出:123▢abc▢python 参考…...

嵌入式项目电灯

1、原理,电灯有个正负极,当正确接入电源正负极就能点亮(如正极5v,负极0v),单两边同时接入正极,就不会亮(两端都是5v),所以通过控制电平,来实现控制led等的亮暗 cpu通过给…...

[ubuntu系统下的文本编辑器nano,vim,gedit,文件使用,以及版本更新问题]

文本编辑器概要 在Ubuntu系统下,有许多文本编辑器可供选择,每个编辑器都有其独特的特性和用途。以下是一些常见的文本编辑器: Gedit: 这是Ubuntu默认的文本编辑器,它简单易用,适合基本的文本编辑任务。 安…...

C#WinformListView实现缺陷图片浏览器

C#&Winform&ListView实现缺陷图片浏览器 功能需求图像浏览行间距调整悬浮提示 功能需求 机器视觉检测系统中特别是缺陷检测系统,通常需要进行对已经检出的缺陷图片进行浏览查阅。主要是通过条件筛选查询出所需要的数据,进行分页再展示到界面中。…...

C- qsort()

qsort() 是 C 语言标准库中的一个函数,用于进行数组的排序。其名字“qsort”代表“快速排序”(Quick Sort),这是因为它通常使用快速排序算法进行排序,但具体实现可能因库而异。 以下是 qsort() 的详细介绍&#xff1a…...

【Apache Flink】基于时间和窗口的算子-配置时间特性

文章目录 前言配置时间特性将时间特性设置为事件时间时间戳分配器周期性水位线分配器创建一个实现AssignerWithPeriodicWatermarks接口的类,目的是为了周期性生成watermark 定点水位线分配器示例 参考文档 前言 Apache Flink 它提供了多种类型的时间和窗口概念&…...

数组的优点和缺点

数组的优点和缺点: 优点: 随机访问:数组支持常量时间的随机访问,即通过索引可以直接访问元素。这使得数组在查找特定元素时非常高效。内存连续性:数组的元素在内存中是连续存储的,这可以减少缓存未命中的…...

接口返回响应,统一封装(ResponseBodyAdvice + Result)(SpringBoot)

需求 接口的返回响应&#xff0c;封装成统一的数据格式&#xff0c;再返回给前端。 依赖 对于SpringBoot项目&#xff0c;接口层基于 SpringWeb&#xff0c;也就是 SpringMVC。 <dependency><groupId>org.springframework.boot</groupId><artifactId&g…...

苹果cms模板MXone V10.7魔改版源码 全开源

苹果cms模板MXone V10.7魔改版源码 全开源 苹果cms模板MXone魔改版短视大气海报样式 安装模板教程说明&#xff1a; 1、将模板压缩包上传到苹果CMS程序/template下解压 2、网站模板选择mxone 模板目录填写html 3、网站模板选择好之后一定要先访问前台&#xff0c;然后再进…...

ArcGIS笔记13_利用ArcGIS制作岸线与水深地形数据?建立水动力模型之前的数据收集与处理?

本文目录 前言Step 1 岸线数据Step 2 水深地形数据Step 3 其他数据及资料 前言 在利用MIKE建立水动力模型&#xff08;详见【MIKE水动力笔记】系列&#xff09;之前&#xff0c;需要收集、处理和制作诸多数据和资料&#xff0c;主要有岸线数据、水深地形数据、开边界潮位驱动数…...

一些k8s集群操作命令

参考&#xff1a; 【K8S系列】Pod重启策略及重启可能原因_k8s查看pod重启原因-CSDN博客 #查看加入集群命令 kubeadm token create --print-join-command #kubeadm重置k8s kubeadm reset -f ipvsadm --clear systemctl stop kubelet rm -rf /etc/kubernetes/* reboot …...

pycharm运行R语言脚本(win10环境下安装)

文章目录 简介1. pycharm安装插件2. 安装R语言解释器2.1下载安装包2.2具体安装过程 3.编辑环境变量4 检验是否安装成功&#xff1a;5.安装需要的library6.pycharm中配置安装好的R语言解释器 简介 pycharm 安装 R language for Intellij R language for Intellij 是一个插件&am…...

Java进击框架:Spring-Test(六)

Java进击框架&#xff1a;Spring-Test&#xff08;六&#xff09; 前言单元测试模拟对象 集成测试上下文管理和缓存事务管理集成测试的支持类执行SQL脚本WebTestClientMockMvc JDBC测试支持其它注释 前言 Spring团队提倡测试驱动开发(TDD)。Spring团队发现&#xff0c;控制反转…...

微软:Octo Tempest是最危险的金融黑客组织之一

导语 最近&#xff0c;微软发布了一份关于金融黑客组织Octo Tempest的详细报告。这个组织以其高级社交工程能力而闻名&#xff0c;专门针对从事数据勒索和勒索软件攻击的企业。Octo Tempest的攻击手段不断演变&#xff0c;目标范围也不断扩大&#xff0c;成为了电缆电信、电子邮…...

JS加密/解密之逻辑运算符加密进阶篇

前言 ​ 前篇给大家介绍了运算符不为人知的基础知识。他们的各种表达形式&#xff0c;今天我们从这个基础上&#xff0c;继续进一步告诉大家&#xff0c;如何对字符串进行加密处理。还是那句话&#xff0c;技术人不废话&#xff0c;直接晒代码。 示例源代码 // 字符串加密示…...

中国民办高职教育的未来10年发展趋势(2025-2035)年度深度战略研究报告

陈天伟 &#xff08;四川城市职业学院&#xff0c;四川 成都 610110&#xff09; 宏观战略背景&#xff1a;教育现代化2035与职业教育的定位转型 在迈向2035年基本实现社会主义现代化的征程中&#xff0c;中国职业教育正经历着从“补充教育”向“类型教育”的根本性转变。根…...

告别手动输入:用快马ai自动化mathtype公式生成,效率提升300%

作为一名经常需要写技术文档的开发者&#xff0c;数学公式的输入一直是个头疼的问题。传统的方式要么是手动在Mathtype里点选符号&#xff0c;要么得记住各种LaTeX语法&#xff0c;效率实在太低。最近尝试用InsCode(快马)平台开发了一个自动化工具&#xff0c;终于解决了这个痛…...

GigE Vision 多相机同步终极检查清单(可直接用于项目部署)

GigE Vision 多相机同步终极检查清单&#xff08;可直接用于项目部署&#xff09;&#x1f4cb; GigE Vision 多相机同步终极检查清单一、网络基础设施二、PTP 配置三、硬件触发四、相机参数一致性五、软件数据处理六、验证手段&#x1f4cb; GigE Vision 多相机同步终极检查清…...

Qwen3-VL-8B-Instruct-GGUF效果展示:同一张餐厅菜单图,模型准确识别菜品+价格+辣度标签

Qwen3-VL-8B-Instruct-GGUF效果展示&#xff1a;同一张餐厅菜单图&#xff0c;模型准确识别菜品价格辣度标签 1. 模型效果惊艳亮相 今天要给大家展示的是一个让人眼前一亮的多模态模型——Qwen3-VL-8B-Instruct-GGUF。这个模型最厉害的地方在于&#xff0c;它能在普通的硬件设…...

SiameseUIE模型Git使用进阶:团队协作开发指南

SiameseUIE模型Git使用进阶&#xff1a;团队协作开发指南 1. 开篇&#xff1a;为什么团队开发需要Git规范 咱们做AI项目开发时&#xff0c;经常遇到这样的场景&#xff1a;几个人同时修改代码&#xff0c;结果合并时冲突不断&#xff1b;或者某位同事的代码把整个项目搞崩了&…...

终极指南:5步彻底解决显卡驱动残留问题

终极指南&#xff1a;5步彻底解决显卡驱动残留问题 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller 你是否曾经…...

5步搭建你的私人云游戏服务器:Sunshine开源串流方案详解

5步搭建你的私人云游戏服务器&#xff1a;Sunshine开源串流方案详解 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的游戏串流服务器软件&#xff0c;专为Moon…...

5个理由让你选择LAV Filters:解决媒体播放兼容性问题的全能解码方案

5个理由让你选择LAV Filters&#xff1a;解决媒体播放兼容性问题的全能解码方案 【免费下载链接】LAVFilters LAV Filters - Open-Source DirectShow Media Splitter and Decoders 项目地址: https://gitcode.com/gh_mirrors/la/LAVFilters 在数字媒体爆炸的时代&#x…...

使用Visio绘制Graphormer模型系统架构图与数据流图

使用Visio绘制Graphormer模型系统架构图与数据流图 1. 引言 作为一名系统架构师或技术文档工程师&#xff0c;能够清晰表达复杂系统的架构设计是一项核心技能。当我们需要展示基于Graphormer的分子属性预测平台时&#xff0c;一张精心设计的系统架构图往往比千言万语更有说服…...

YOLOv10实战:用官方镜像5分钟搭建智能监控原型系统

YOLOv10实战&#xff1a;用官方镜像5分钟搭建智能监控原型系统 想快速验证一个智能监控的想法&#xff0c;却卡在繁琐的环境配置和模型部署上&#xff1f;从安装CUDA、配置Python环境&#xff0c;到调试各种依赖库&#xff0c;可能半天时间就过去了&#xff0c;真正的业务逻辑…...