STM32 中断

news/发布时间2024/5/15 22:48:41

中断的意义:高效处理紧急程序,不会一直占用CPU资源。

NVIC基本概念

Nested vectored interrupt controller,嵌套向量中断控制器,属于内核(M3/M4/M7)。

NVIC支持:256个中断(16个内核+240外部),支持:256个优先级,允许裁剪。

在这里插入图片描述

中断向量表

定义一块固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址

中断向量表定义在启动文件,当发生中断,CPU会自动执行对应的中断服务函数

在这里插入图片描述
在这里插入图片描述
DCD 定义以4字节对齐的内存

NVIC相关寄存器介绍

在这里插入图片描述

中断优先级

  1. 抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断
  2. 响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断
  3. 抢占和响应都相同的情况下,自然优先级越高的,先执行

自然优先级:中断向量表的优先级
数值越小,表示优先级越高

中断优先级分组

在这里插入图片描述

STM32 NVIC的使用

  1. 设置中断分组:HAL_NVIC_SetPriorityGrouping
  2. 设置中断优先级:HAL_NVIC_SetPriority()
  3. 使能中断:HAL_NVIC_EnableIRQ()

一般中断分组在HAL_Init()函数中设置

stm32f1xx_hal_cortex.c文件就是对core_cm3.h文件的再次封装

EXTI基本概念

External(Extended)interrupt/event Controller,外部(扩展)中断事件控制器

包含20个产生事件/中断请求的边沿检测器,即总共:20条EXTI线(F1)

  • 中断:要进入NVIC,有相应的中断服务函数,需要CPU处理
  • 事件:不进入NVIC,仅用于内部硬件自动控制,如TIM、DMA、ADC

在这里插入图片描述

每条EXTI线都可以单独配置:选择类型(中断或者事件)、触发方式(上升沿,下降沿或者双边沿触发)、支持软件触发、开启/屏蔽、有挂起状态位

在这里插入图片描述
在这里插入图片描述

中断屏蔽寄存器(EXTI_IMR)

在这里插入图片描述

挂起寄存器(EXTI_PR)

在这里插入图片描述
EXTI线0-15:对应GPIO PIN 0-15

AFIO

Alternate Function IO,即复用功能IO,主要用于重映射和外部中断映射配置

  1. 调试IO配置:AFIO_MAPR[26:24],配置JTAG/SWD的开关状态
  2. 重映射配置:AFIO_MAPR,部分外设IO重映射配置
  3. 外部中断配置:配置EXTI中断线0~15对应到哪个具体IO口

配置AFIO寄存器之前要使能AFIO时钟

在这里插入图片描述

SYSCFG简介

System configuration controller,即系统配置控制器,用于外部中断映射配置等。

通过SYSCFG_EXTICR1~4,配置EXTI中断线0-15对应到哪个具体IO口

配置SYSCFG寄存器之前要使能SYSCFG时钟,方法为__HAL_RCC_SYSCFG_CLK_ENABLE()

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

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

相关文章

安全防御-第六次

内容安全 攻击可能只是一个点,防御需要全方面进行 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包(数据包分片,分段需要重组),之后对数据包的内容进行识别。(应用层&…

SpringBoot源码解读与原理分析(三十六)SpringBoot整合WebMvc(一)@Controller控制器装配原理

文章目录 前言第12章 SpringBoot整合WebMvc12.1 SpringBoot整合WebMvc案例12.2 整合WebMvc的组件自动装配12.3 WebMvc的核心组件12.3.1 DispatcherServlet12.3.2 Handler12.3.3 HandlerMapping12.3.4 HandlerAdapter12.3.5 ViewResolver 12.4 Controller控制器装配原理12.4.1 初…

当你使用ChatGPT时,选择合适的提示(prompt)是引导对话方向的关键

马斯克曾说,人生中最重要的事情,就是提出真正的好问题。 因此,我要开始接触某个新领域,并且开始要自主学习的时候,我首先要问自己这个问题: 我为什么要学这个,学这个的目的是为了创造什么&#…

kubernetes负载均衡部署

目录 1.新master节点的搭建 对master02进行初始化配置(192.168.88.31) 将master01的配置移植到master02 修改master02配置文件 2.负载均衡的部署 两台负载均衡器配置nginx 部署keepalived服务 所有node节点操作 总结 实验准备: k8s…

Day04:APP架构小程序H5+Vue语言Web封装原生开发Flutter

目录 常见APP开发架构 APP-开发架构-原生态-IDEA APP-开发架构-Web封装-平台 APP-开发架构-H5&Vue-HBuilderX WX小程序-开发架构-Web封装-平台 WX小程序-开发架构-H5&Vue-HBuilderX 思维导图 章节知识点: 应用架构:Web/APP/云应用/三方服…

python 基础知识点(蓝桥杯python科目个人复习计划54)

今日复习内容:做题 例题1:可凑成的最大花束数 问题描述: 情人节到了,妮妮学姐的追求者实在是太多了,她一共有n个追求者,第i个追求者送了ai朵颜色相同的花。每个追求者赠送的花朵颜色都不同。为了卖掉这些…

测试开发(6)软件测试教程——自动化测试selenium(自动化测试介绍、如何实施、Selenium介绍 、Selenium相关的API)

接上次博客:测试开发(5)测试分类标准 :按测试对像划分、按是否查看代码划分、按开发阶段划分、按测试实施组织、按是否运行划分、按是否手工划分、按测试地域划分-CSDN博客 目录​​​​​​​ 什么是自动化测试 自动化测试介绍…

pycharm安装Amazon CodeWhisperer 免费AI辅助编程插件教程

一、github copilot 和 Amazon CodeWhisperer区别 Copilot非常易于使用,并与所有主要的代码编辑器进行了简化集成。GitHub Copilot针对七种主要的编程语言进行了优化(详见下表),但也可以生成其他语言和各种框架的建议。 Copilot…

网络初识(概念入门)

目录 1.局域网VS广域网 1.1局域网 1.2广域网 2.五元组 2.1 IP和端口 2.1.1 IP 2.1.2端口号 2.2协议 3.协议分层 4. TCP/IP五层模型 5.封装和分用 5.1封装 5.2分用 1.局域网VS广域网 1.1局域网 简单介绍:指在某一特定区域内由多台计算机组成的互联网组…

nginx 模块 高级配置

目录 一、高级配置 1.1. 网页的状态页 1.2.Nginx 第三方模块 ehco 模块 打印 1.3.变量 1.3.1 内置变量 1.3.2自定义变量 1.4.Nginx压缩功能 1.5.https 功能 1.6.自定义图标 一、高级配置 1.1. 网页的状态页 基于nginx 模块 ngx_http_stub_status_module 实现&…

腾讯云4核8G服务器申请费用多少?性能如何?支持几个人?

腾讯云4核8G服务器支持多少人在线访问?支持25人同时访问。实际上程序效率不同支持人数在线人数不同,公网带宽也是影响4核8G服务器并发数的一大因素,假设公网带宽太小,流量直接卡在入口,4核8G配置的CPU内存也会造成计算…

黑马程序员——接口测试——day03——Postman断言、关联、参数化

目录: Potman断言 Postman断言简介Postman常用断言 断言响应状态码断言包含某字符串断言JSON数据Postman断言工作原理Postman关联 简介实现步骤核心代码创建环境案例1案例2Postman参数化 简介数据文件简介编写数据文件 CSV文件JSON文件导入数据文件到postman读取数…

微信小程序(3)- 小程序样式和组件

1. 介绍 官网地址: WXML WXSS Image 小程序提供了 WXML 进行页面结构编写,同时提供了 WXSS 进行页面的样式编写。 WXML 提供了 view、text 、image、navigator 等标签来构建页面结构,只不过在小程序中将标签称为 组件。WXSS 对 CSS 扩充和…

基于ChatGPT4+Python近红外光谱数据分析及机器学习与深度学习建模

2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在…

Mysql 的高可用详解

Mysql 高可用 复制 复制是解决系统高可用的常见手段。其思路就是:不要把鸡蛋都放在一个篮子里。 复制解决的基本问题是让一台服务器的数据与其他服务器保持同步。一台主库的数据可以同步到多台备库上,备库本身也可以被配置成另外一台服务器的主库。主…

git配置SSH

gitLab在Cenos7中安装,在Cenos7系统中执行以下操作 1.生成SSH ssh-keygen -t rsa -C xxxxxx.com 然后一路回车,直到出现以下界面为止(-C 参数是邮箱地址) 2.复制SSH 打开/root/.ssh/id_rsa.pub文件,复制其中的内容 在Linux系统中,/root/.…

Android Gradle 开发与应用 (一) : Gradle基础

1. Gradle是什么 Gradle是一个通用的构建工具,支持诸多主要的 IDE,包括 Android Studio、IntelliJ IDEA、Visual Studio 等 Gradle 的底层实现(核心引擎和框架)其实是用 Java 编写的开发者通常使用 Groovy 或 Kotlin 来编写构建脚本 1.1 那么为什么Gra…

20. 【Linux教程】emacs 编辑器

前面小节介绍了如何使用 vim 编辑器和 nano 编辑器,本小节介绍 emacs 编辑器,emacs 编辑器最开始是作为控制台的编辑器,并且 emacs 编辑器仍然提供最早的命令行模式。 1. 检查 Linux 系统中是否安装 emacs 编辑器 使用如何命令检查 emacs 编…

SpringCloud认识微服务

文章目录 1.1.单体架构1.2.分布式架构1.3.微服务1.4.SpringCloud1.5.总结 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 微服务架构是一种架构模式&…

新加坡服务器托管:开启全球化发展之门

新加坡作为一个小国家,却在全球范围内享有极高的声誉。新加坡作为亚洲的科技中心,拥有先进的通信基础设施和成熟的机房托管市场。除了其独特的地理位置和发达的经济体系外,新加坡还以其开放的商业环境和便利的托管服务吸引着越来越多的国际公…
推荐文章