STM32H750之FreeRTOS学习--------(四)中断管理

四、FreeRTOS中断管理

中断的概念不再过多叙述,学习过逻辑的都知道

中断的执行过程
  1. 中断请求 外设产生中断请求(GPIO外部中断、定时器中断等)
  2. 响应中断 CPU停止执行当前程序,转而去执行中断处理程序(ISR)
  3. 退出中断 执行完毕,返回被打断的程序处,继续往下执行
中断的优先级分组
  • ARM Cortex-M 使用了 8 位宽的寄存器来配置中断的优先等级

  • stm32只用了中断优先级配置寄存器的高4位 [7 : 4],四位最多16级中断优先级

image-20231101090500830

  • STM32 的中断优先级可以分为抢占优先级和子优先级
  • 分为两类优先级
    • 抢占优先级: 抢占优先级高的中断可以打断正在执行但抢占优先级低的中断
    • 子优先级:当同时发生具有相同抢占优先级的两个中断时,子优先级数值小的优先执行
  • 中断优先级数值越小越优先
设置中断优先级分组

共4位所以只有这5种分组方式

image-20231101090751406

  • 在Hal库中通过调用函数HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)即可完成设置
  • HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)在在HAL_Init()调用
中断优先级分组特点
  1. 只有低于configMAX_SYSCALL_INTERRUPT_PRIORITY优先级的中断里才允许调用FreeRTOS 的API函数
  2. 建议将所有优先级位指定为抢占优先级位,方便FreeRTOS管理(调用函数HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4)
  3. 中断优先级数值越小越优先,任务优先级数值越大越优先

image-20231101091046355

中断相关的寄存器
  • SHPR1寄存器地址:0xE000ED18
  • SHPR2寄存器地址:0xE000ED1C
  • SHPR3寄存器地址:0xE000ED20

image-20231101143243192

FreeRTOS配置PendSV和Systick中断优先级

image-20231101143413419

中断屏蔽寄存器

image-20231101143441104

  • FreeRTOS所使用的中断管理就是利用的BASEPRI这个寄存器
  • BASEPRI:屏蔽优先级低于某一个阈值的中断
  • BASEPRI设置为0x50,代表中断优先级在515内的均被屏蔽,04的中断优先级正常执行
  • BASEPRI屏蔽优先级低于某一个阈值的中断,当设置为0时,则不关闭任何中断

image-20231101143554542

  • 中断优先级在5 ~ 15的全部被关闭

当BASEPRI设置为0x50时:

image-20231101143829207

在中断服务函数中调度FreeRTOS的API函数需注意:

  1. 中断服务函数的优先级需在FreeRTOS所管理的范围内
  2. 在中断服务函数里边需调用FreeRTOS的API函数,必须使用带“FromISR”后缀的函数

*设置为0x50,代表中断优先级在515内的均被屏蔽,04的中断优先级正常执行

  • BASEPRI屏蔽优先级低于某一个阈值的中断,当设置为0时,则不关闭任何中断
  • 中断优先级在5 ~ 15的全部被关闭

当BASEPRI设置为0x50时:

[外链图片转存中…(img-h5ZWihIx-1698820880665)]

在中断服务函数中调度FreeRTOS的API函数需注意:

  1. 中断服务函数的优先级需在FreeRTOS所管理的范围内
  2. 在中断服务函数里边需调用FreeRTOS的API函数,必须使用带“FromISR”后缀的函数

image-20231101143947527

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/130197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux centos7安装colmap

centos安装colmap 一、安装依赖 sudo yum install \gflags-devel \glog-devel \glew-devel \atlas \atlas-devel \lapack-devel \blas-devel \flann-devel \lz4-devel \sqlite-devel \metis-devel \qt5-qtbase-devel二、编译安装colmap git clone https://github.com/colmap/…

WPF的TextBox控件中启用拖放操作

首先,在XAML中为TextBox添加以下属性:AllowDrop"True"。这将启用TextBox的拖放功能。 public MainWindow() {InitializeComponent();textBox.AllowDrop true;textBox.PreviewDragOver TextBox_PreviewDragOver;textBox.PreviewDrop TextBo…

nvm 下载 nodejs 速度慢问题解决

1、找到 nvm 的下载目录,在目录下找到 settings.txt 文件 2、打开 settings.txt 文件 ,添加以下代码: node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/添加完成后再去下载即可。

Webpack的入口(entry)和出口(output)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

Windows 下编译 TensorFlow 2.9.1 CC库

参考 Intel 的 tensorflow 编译指导,不过项目还是可以用 TF原本的,不是一定要选择Intel 的TF版本。 安装 MSVC 2019 安装 Intel OneDNN OneMKL 似乎也可以不安装 ( & ) https://www.intel.cn/content/www/cn/zh/developer/articles/tool/one…

6 MySQL常用的数据类型

1、整型 -- TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好;2、浮点数 -- 1.FLOAT 和 DOUBLE 为浮点类型,DECIMAL 为高精度小数类型。CPU 原生支持浮点运算,但是不支持 DECIMAl…

Redis主从复制基础概念

Redis主从复制:提高数据可用性和性能的策略 一、概述 Redis主从复制是一种常用的高可用性策略,通过将数据从一个Redis服务器复制到另一个或多个Redis服务器上,以提高数据的可用性和读取性能。当主服务器出现故障时,可以快速地切…

VUE组件间通信的七种方式

目录 1、 props / $emit (1)父组件向子组件传值(props的用法) (2)子组件向父组件传递数据($emit的用法) 2、ref / $refs 用法: 3、eventBus事件总线($e…

Technology strategy Pattern 学习笔记1-Context: Architecture and Strategy

Context: Architecture and Strategy 1 Architect and Strategist 1.1 three primary concerns of the architect 1.1.1 Contain entropy(熵-混乱程度,不确定性,惊奇程度,不可预测性,信息量等等) The architect wh…

Python|Pyppeteer获取威科先行文章链接(21)

前言 本文是该专栏的第21篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 本文以“威科先行”的信息库为例,笔者将详细介绍使用pyppeteer“自动滑动页面并翻页”获取威科先行的文章链接。如果对pyppeteer的使用以及知识点不太熟悉的同学,可往前查看本专栏前面…

UML 2.0包括14种图

UML 2.0包括14种图,分别如下: (1)类图(class diagram)。类图描述一组类、接口、协作和它们之间的关系。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。 (2…

Modelsim 使用教程(5)——Analyzing Waveforms

一、概述 Wave窗口允许我们以HDL波形和数据的形式查看仿真结果。Wave窗口被划分为多个窗格。通过单击并在任意两个窗格之间拖动该条,可以调整路径名窗格、值窗格和波形窗格的大小。 二、加载一个设计(Loading a Design) 1、打开modelsim 2、…

SQL左连接实战案例

要求:用表df1和表df2的数据,得到df3 一、创建表 CREATE TABLE df1 (姓名 varchar(255) DEFAULT NULL,年龄 int DEFAULT NULL,部门 varchar(255) DEFAULT NULL,id int DEFAULT NULL );CREATE TABLE df2 (部门 varchar(255) DEFAULT NULL,年龄 int DEFAU…

C++ Qt QLineEdit如何响应回车事件

在Qt开发中,回车键的处理很常见,本篇博客介绍在QLineEdit里回车键的处理方法,例如下面的界面: QLineEdit回车键的处理有方式,一是链接returnPressed信号,二是用事件过滤。下面分别介绍这两种方式。 一、returnPressed信号 可以查看QLineEdit的头文件声明,有如下信号:…

elementUI 轮播图 ----Carousel 走马灯笔记

在有限空间内&#xff0c;循环播放同一类型的图片、文字等内容 用法&#xff1a; <el-carousel :interval"5000" arrow"always"><el-carousel-item v-for"item in 4" :key"item"><h3>{{ item }}</h3></e…

洗地机哪个品牌好?家用洗地机选购攻略

随着家用洗地机的普及和市场的广泛认可&#xff0c;进入洗地机行业的制造商也越来越多。在面对众多洗地机品牌时&#xff0c;消费者常常感到困惑&#xff0c;不知道如何选择。面对众多选择&#xff0c;选择有良好保障的知名洗地机品牌是明智之举。知名品牌在质量、售后服务等方…

扩容一个新节点

1.删除nodes rm -rf nodes/ 2.挂载本地文件与创建节点 bash build_chain.sh -f ipconf -e /root/tools/fisco-bcos 3.部署节点 bash nodes/127.0.0.1/start_all.sh 4.把共享的gen_node_cert.sh文件下载到本地 cp /root/Desktop/共享文件夹/tools/gen_node_cert.sh ./…

java毕业设计基于springboot+vue的村委会管理系统

项目介绍 采用JAVA语言&#xff0c;结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本村委会管理系统主要包括个人中心、村民管理、村委会管理、村民信息管理、土地变更管理、农业补贴管理、党员信息管理等多个模块。它帮助村委会管理实现了信息化、网络化&#xf…

初学Flutter:swiper实现

效果展示&#xff1a; flutter swiper 1、安装 card_swiper 2、引入card_swiper import package:card_swiper/card_swiper.dart;3、使用 这里我主要是对官网例子进行实践&#xff0c;主要是5种常用的swiper 1、普遍的swiper //custom swiper class CustomSwiper extends S…

P1037 [NOIP2002 普及组] 产生数

Portal. 注意到数与数之间的转换关系是连续的&#xff0c;即若有 i → j , j → k i\rightarrow j,j\rightarrow k i→j,j→k&#xff0c;就有 i → k i\rightarrow k i→k。 发现和传递闭包很像&#xff0c;可以用 Floyd 算法解决。 由于数据范围 n < 1 0 30 n<10…