STM32学习历程(day5)

EXTI外部中断

中断

中断就是在主程序运行过程中 出现了特定的中断触发条件(中断源),CPU会暂停当前的程序,去处理中断程序 处理完会返回被暂停的位置 继续运行原来的程序。

中断优先级

当有多个中断源同时申请中断时 CPU会根据中断源的轻重缓急进行裁决 优先响应更加紧急的中断源

中断嵌套

当一个中断程序正在运行时,又有更高优先级的中断源申请中断 CPU会再次中断当前程序,并保存位置 转而去处理新的中断程序 处理完之后依次返回。

EXTI外部中断

EXTI可以监测指定GPIO口的电平信号 当期指定的GPIO口产生电平变化时,EXTI立即像NVIC法出中断申请,经过NVIC裁决后即可中断CPU主程序 使CPU处理EXTI中断程序

可以支持的触发方式:上升沿|下降沿|双边沿|软件触发

支持的GPIO口:所有GPIO口都支持 但是相同的PIN不能同时触发中断(下面会讲为什么)

通道数:16个GPIO_Pin PVD输出 RTC闹钟 USB唤醒 以太网唤醒共20个

触发响应方式:中断响应/事件响应

NVIC(嵌套中断向量控制器)

NVIC(嵌套中断向量控制器)

STM32中用来管理中断和分配优先级的,一共有16个优先等级

CPU就像一个医生 而NVIC就像一个叫号器 医生只需要专心看病即可 当比较严重的病人来时 可以通过叫号器来通知医生

NVIC优先级分组

NVIC的中断优先级是通过优先级寄存器的4位来实现的,这四位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级,抢占优先级顾名思义可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均按中断号排队

一共4位 抢占优先级和响应优先级平分

EXIT结构讲解

AFIO会选择GPIO口中的一个引脚来接入到EXTI边沿检测及控制 一共可以选择16个 这就是前面为什么不同GPIO口的同个pin值不能同时接入的原因

外部中断的9-5是会触发同一个中断函数 同理5-15也会处理同一个中断函数 这两种都需要根据标志位来区分到底是哪个中断进来的

其他外设就是事件响应

输入线进来时会先经过边沿检测 看看是否满足上升沿或者下降沿 他与软件中断是走同一个或门 两个满足一个都会继续往下走,往上是触发中断的,往下是触发事件的。触发中断会先请求一个挂起寄存器,相当于中断标志位 可以通过这个判断是哪一个通道触发的中断,然后经过和中断屏蔽寄存器的与门 这就是屏蔽寄存器能生效的原因了 两个都为1才能中断。事件中断也是一样的。

总结

今天学习了OLED屏幕的用法 但是up主是直接给的程序 代码比较繁多 演示了下如何通过OLED调试程序 以及使用断点等、然后就学了EXTI外部中断 以前学习的时候 是通过汇编来学习的 算是了解一点 汇编在这块得自己保存CPU运行时的地址 以及保存现场 恢复现场。但是通过C语言就不要了 编译器都给我们处理好了。

相关推荐
叼烟扛炮7 小时前
[Git 实战] 学习笔记:从生成 SSH 密钥到解决 TortoiseGit 推送报错全指南
linux·运维·笔记·git·学习
蒸蒸yyyyzwd7 小时前
学习笔记 八股手撕
笔记·学习
起个网名真难~8 小时前
STM32F103_Bootloader_从零到UART升级成功_博客原稿
stm32·单片机·嵌入式硬件
留岁10 小时前
大模型推理部署 · 学习文档
学习
小李不想当小白10 小时前
BKP备份寄存器与RTC实时时钟(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
陈飞EXCEL12 小时前
北京杰飞 IT 旗下妙码生花少儿Python编程上线两大学习系统
开发语言·python·学习
SLAM必须dunk12 小时前
Agent入门学习一
学习
Zw-awa12 小时前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
stm32
La Pulga13 小时前
【FreeRTOS源码学习笔记】链表的实现
数据结构·笔记·stm32·mcu·链表·嵌入式·freertos
承渊政道13 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat