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

STM32 中断复习

中断

打断CPU执行正常的程序,转而处理紧急程序,然后返回原暂停的程序继续运行,就叫中断。

  1. 在确定时间内对相应事件作出响应,如:温度监控(定时器中断)。
  2. 故障处理,检测到故障,需要第一时间处理,如:电梯门夹人了。
  3. 数据传输:不确定数据何时会来,如:串口数据接收。

高效处理紧急程序,不会一直占用CPU资源。

STM32 GPIO外部中断

  1. 信号输入到GPIO
  2. 信号输入到AFIO,GPIOXy->EXTIy
  3. EXTI可选择屏蔽,或上升沿/下降沿响应。
  4. NVIC,使能中断、优先级控制。
  5. 信号到CPU,处理中断。

NVIC

Nested vectored interrupt controller,嵌套向量中断控制器,属于内核(M3/4/7)。
在这里插入图片描述
在这里插入图片描述

中断向量表

定义一块固定的内存,以4字节对齐,存放各个中断服务函数程序的首地址。
中断向量表定义在启动文件(.s文件),当发生中断,CPU会自动执行对应的中断服务函数。

NVIC寄存器

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

中断优先级基本概念

  1. 抢占优先级(pre):高抢占优先级可以打断正在执行的低抢占优先级中断。
  2. 响应优先级(sub):当抢占优先级相同时,响应优先级高的先执行,但是不能互相打断。
  3. 数值越小,优先级越高。

NVIC的使用

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

EXTI

External interrupt/event controller,外部中断事件控制器。
包含20个产生事件/中断请求的边沿检测器,即总共:20条EXTI线。

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

在这里插入图片描述

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

在这里插入图片描述

EXTI和IO映射关系

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

  1. 调试IO配置。
  2. 重映射配置:AFIO_MAPR,部分外设IO重映射配置。
  3. 外部中断配置:AFIO_EXTICR14,配置EXTI中断线015对应到哪个具体IO口。

配置AFIO寄存器之前要使能AFIO时钟,__HAL_RCC_AFIO_CLK_ENABLE()

在这里插入图片描述
Px0映射到EXTI0
Px15映射到EXTI15

中断使用

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
EXTI04、EXTI95、EXTI15~10,7个外部中断服务函数。

HAL库中断回调处理机制

在这里插入图片描述

http://www.lryc.cn/news/133332.html

相关文章:

  • Django的模型
  • 非计算机科班如何丝滑转码
  • PyTorch深度学习实战(12)——数据增强
  • SpringCloud Ribbon中的7种负载均衡策略
  • 04 qt功能类、对话框类和文件操作
  • 安装软件包
  • 玩转单元测试之gmock
  • POI与EasyExcel--写Excel
  • 7. CSS(四)
  • uni-app 集成推送
  • Spring Boot+Redis 实现消息队列实践示例
  • 11. 实现业务功能--获取用户信息
  • HTTPS
  • spring详解
  • 香港服务器备案会通过吗?
  • 乐鑫推出 ESP ZeroCode 控制台
  • 从NLP到聊天机器人
  • 相关搜索引擎常用搜索语法(Google hacking语法和FOFA语法)
  • Mysql查询
  • 解决http下navigator.clipboard为undefined问题
  • mysql之host is blocked问题
  • 每日一题:2337 移动片段得到字符串
  • 嵌入式设备的 Json 库基本使用
  • GEEMAP 中如何拉伸图像
  • 软件测试学术顶会——ISSTA 2023 论文(网络安全方向)清单、摘要与总结
  • 基于YOLOv8模型和PCB电子线路板缺陷目标检测系统(PyTorch+Pyside6+YOLOv8模型)
  • centos安装mysql8
  • 【Apollo】阿波罗自动驾驶技术:引领汽车行业革新
  • 一文看懂!数据管道和数据流在数据分析中的作用
  • Linux系统下检验Tensorflow 2.xx版本和1.xx版本是否安装成功