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/…

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…

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的使用以及知识点不太熟悉的同学,可往前查看本专栏前面…

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的头文件声明,有如下信号:…

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

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

扩容一个新节点

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语言,结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本村委会管理系统主要包括个人中心、村民管理、村委会管理、村民信息管理、土地变更管理、农业补贴管理、党员信息管理等多个模块。它帮助村委会管理实现了信息化、网络化&#xf…

初学Flutter:swiper实现

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

css 图片好玩的一个属性,添加滤镜

鼠标经过效果对比: 上图是改变了图片的饱和度,代码如下: .img-box .v-image:hover {filter: saturate(1.75); }其他滤镜说明如下图:

R语言爬虫代码模版:技术原理与实践应用

目录 一、爬虫技术原理 二、R语言爬虫代码模板 三、实践应用与拓展 四、注意事项 总结 随着互联网的发展,网络爬虫已经成为获取网络数据的重要手段。R语言作为一门强大的数据分析工具,结合爬虫技术,可以让我们轻松地获取并分析网络数据。…

office2024下载详细安装教程

简单的说 Office 是一款由Microsoft 开发的一套办公软件,里面包含了常用的办公组件而其中就包含了Word、Excel、PowerPoint、Access等! 并且office是目前最常用的一类办公软件,使用它可以解决日常生活和工作中遇到的很多问题。 熟练掌握offi…

Java医院HIS系统源码

Java医院HIS系统源码 项目描述 该项目是用springbootlayuishiro写的医院管理系统,该系统的业务比较复杂,数据库一共有36张表。项目的视频业务参考文档,都在百度云盘中。可以先看看视频和参考文档。 运行环境 jdk8mysqlIntelliJ IDEAmaven…

shell script 的默认变量$0,$1,$2...,参数偏移的shift

简单来说,在scirpt脚本里面,$0表示文件名,$1表示第一个参数,以此类推,还有 $# 后面接参数的个数 $ 代表"$1","$2","$3",每个都是独立的,用双引号括起来 $* 代…

register_parameter和register_buffer 详解

在参考yolo系列代码或其他开源代码,经常看到register_buffer和 register_parameter的使用,接下来将详细对他们进行介绍。 1. 前沿 在搭建网络时,我们 自定义的参数,往往不会保存到模型权重文件中,或者成为模型可学习…

软件测试之BUG篇(定义,创建,等级,生命周期)

目录 1. BUG 的定义 2. 如何创建 BUG 3. BUG 等级 4. BUG 生命周期 高频面试题: 1. BUG 的定义 当且仅当产品规格书存在且正确时,程序的实现和规格书的要求不匹配时,那就是软件错误。当产品规格说明书没有提到的功能时,以用户…