STM32外部中断

server/2025/3/13 16:44:01/

GPIO->AFIO->EXTI->NVIC

进入NVIC是中断 不进入NVIC是事件

AFIO复用重映射

IP[59]~IP[0]分别对应中断 59~0。而每个可屏蔽中断占用的 8bit 并没有 全部使用,而是只用了高 4 位。这 4 位,又分为抢占优先级和子优先级。抢占优先级在前,子(响应)优先级在后。

NVIC优先级分组:抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队
还有一种情况就是当两个或者多个中断的抢占式优先级和响应优先级相同时,那么就遵循 自然优先级,看中断向量表的中断排序,数值越小,优先级越高。


硬件优先级: 越小优先级越高
EXTI:外部中断 检测指定引脚的电平,如果发生变化立马执行中断


STM32F103ZET6  0-4每个中断线都有一个中断函数,5-9共用一个,10-15也共用一个中断服务函数,16个引脚只有7个中断服务函数

中断初始化步骤
1.使能时钟
2.设置GPIO  Mode设置位it中断模式的上升/下降/双边沿
3.设置中断分组->可以不设,HAL_Init 里设置过(默认有为2,想改变的话重新设置分组 8-10位)
4.设置优先级--> HAL_NVIC_SetPriority(中断号,抢占优先级,响应优先级);
5.使能中断 HAL_NVIC_EnableIRQ(中断号);
-------------------------------
6.中断公共服务函数  //在启动文件中找
void EXTI0_IRQHandler(){
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_*);中断公共处理函数
_HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_*)}
----------------------------------
7.__weak重写弱函数回调函数
   多个引脚需判断
------------------------------------------

中断服务函数调用公共中断服务函数处理(HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_*);)公共中断处理函数调用回调函数,而回调函数为__weak弱函数,自己需要对其重写,写入自己的逻辑代码

中断中的Mode需要选择上升沿/下降沿/双边沿

__weak   代表弱函数

    *** 相同的pin不能同时触发中断  例如GPIOA_pin1 和GPIOB_pin1不能同时用  因为20条线不够80个GPIO口使用 所以GPIOA-E的相同端口使用一条,不能同时使用

AFIO主要完成两个任务:复用引脚重映射、中断引脚选择  //HAL库中不需要配置 在HAL_GPIO_Init中自动配置

中断建议:在中断函数里最好不要执行耗时过长的代码。
                 不要在中断函数和主函数调用相同的代码或者操作同一个硬件

内部时钟频率:72MHz
 


http://www.ppmy.cn/server/174669.html

相关文章

【C++】滑动窗口算法

繁花落尽,我心中仍有花落的声音。一朵,一朵,在无人的山间轻轻飘落。 前言 这是我自己学习蓝桥杯算法的第二篇博客总结。 上一期笔记是关于C的双指针算法,没看的同学可以过去看看: 【C】双指针算法-CSDN博客https://bl…

iOS侧滑返回手势冲突处理

遇到这样一个场景,本身页面vc.view添加了全屏侧滑返回手势, 但是页面中顶部有一个横向滚动的collectionView, 这个时候,我们 如果在页面总滑动横向滚动的collectionView的时候,就会执行横向collectionView的滚动&#…

分布式存储学习——HBase表结构设计

目录 1.4.1 模式创建 1.4.2 Rowkey设计 1.4.3 列族定义 1.4.3.1 可配置的数据块大小 1.4.3.2 数据块缓存 1.4.3.3 布隆过滤器 1.4.3.4 数据压缩 1.4.3.5 单元时间版本 1.4.3.6 生存时间 1.4.4 模式设计实例 1.4.4.1 实例1:动物分类 1.4.4.2 …

Python零基础学习第三天:函数与数据结构

一、函数基础 函数是什么? 想象你每天都要重复做同一件事,比如泡咖啡。函数就像你写好的泡咖啡步骤说明书,每次需要时直接按步骤执行,不用重新想流程。 # 定义泡咖啡的函数 def make_coffee(sugar1): # 默认加1勺糖 print("…

Python----计算机视觉处理(Opencv:自适应二值化,取均值,加权求和(高斯定理))

一、自适应二值化 与二值化算法相比,自适应二值化更加适合用在明暗分布不均的图片,因为图片的明暗不均,导致图片 上的每一小部分都要使用不同的阈值进行二值化处理,这时候传统的二值化算法就无法满足我们的需求 了,于是…

05.基于 TCP 的远程计算器:从协议设计到高并发实现

📖 目录 📌 前言🔍 需求分析 🤔 我们需要解决哪些问题? 🎯 方案设计 💡 服务器架构 🚀 什么是协议?为什么要设计协议? 📌 结构化数据的传输问题 …

SAIL-RK3576核心板应用方案——无人机视觉定位与地面无人设备通信控制方案

本方案以 EFISH-RK3576-SBC工控板 或 SAIL-RK3576核心板 为核心,结合高精度视觉定位、实时通信与智能控制技术,实现无人机与地面无人设备的协同作业。方案适用于物流巡检、农业植保、应急救援等场景,具备高精度定位、低延迟通信与强环境适应性…

Flutter三棵树是什么,为什么这么设计

目录 1. 三棵树的定义与职责 (1) Widget 树 (2) Element 树 (3) RenderObject 树 2. 三棵树的协同工作流程 3. 为什么设计三棵树? (1) 性能优化 (2) 逻辑解耦 (3) 灵活性 4. 三棵树的设计优势总结 示例:动态列表更新 常见面试追问 Flutter 的…