stm32共用外部中断线问题小结;不同的端口同一pin;不同pin同一个端口;几个pin共用服务函数等
1.问题来源:
stm32内部资源有限,因此产生了很多共用资源,其中外部中断也是其中之一。外部中断的共用资源主要包括:
(1)不同端口、同一pin口,共用一个中断线:如PA1、PB1、PC1共用外部中断线1——EXTI_Line1;
(2)不同pin口、同一端口:这个都不用说,PA1、PA2、PA3这些共用的是同一个端口寄存器之类的;
(3)同一pin口共用一个中断线,但16个中断线却只共用7个中断服务函数:其中中断线EXTI_Line0-4独立拥有一个中断服务,中断线5-9共用一个中断服务函数,中断线10-15共用一个中断服务函数。
2.问题提问与解答
(1)可以同时配置PA1和PB1触发外部中断吗?
不可以!配置外部中断的本质实质配置的是中断线,PA1、PB1、PC1等等同一pin口的配置只是选择了中断线信号的来源,你把PA1搭到EXTI_Line1上,那么PB1、PC1等等剩余的同一pin口就浮空了;如果你在程序里先配置了PA1又PB1,那么最后只有PB1会触发EXTI_Line1上的中断,你相当于把PA1这根线先和EXTI_Line1系在一起,又解开,再把PB1和EXTI_Line1系在一起了
(2)可以同时配置PA1和PA2触发外部中断吗?
可以!如果你理解了问题1,问题2 迎刃而解,始终记得外部中断触发的本质是触发EXTI_Line1-15,而EXTI_Line1-15可共用但不可同时用。PA1和PA2在不同的EXTI_Line上,当然可以同时配置。但是配置时记得设置中断优先级,优先级高的更横就对了。
(3)可以同时配置PA6和PA8触发外部中断吗?
这个问题对于看完问题2的可能有点懵,不是不同中断线的可以同时配置吗?其实这个问题的本质是中断服务函数的共用。要知道EXTI_Line6和EXTI_Line8是共用一个中断服务函数的,那触发EXTI_Line6和触发EXTI_Line8不就进同一个中断服务函数了吗?那我想实现不同的功能咋办?其实这个问题很好解决,进服务函数之后,判断是哪根中断线触发的就行:
if(ITStatus EXTI_GetITStatus(EXTI_Line6)){
中断线6程序+清标志位6
}
if(ITStatus EXTI_GetITStatus(EXTI_Line8)){
中断线8程序+清标志位8
}
总结:
1.同一pin口不可同时配置外部中断
2.不同pin口可以同时配置外部中断
3.共用中断服务函数,以中断标志位区分
4.外部中断的本质是某中断线得到信号触发,进入对应的中断服务函数的过程。
5.某一路中断线只能同时跟一个pin口搭上
stm32共用外部中断线问题小结;不同的端口同一pin;不同pin同一个端口;几个pin共用服务函数等相关推荐
- STM32 关于外部中断线、中断源和中断服务函数的问题
STM32 关于外部中断线.中断源和中断服务函数的问题 中断线问题: 上图可以看出,PA0.PB0...PG0共用的EXTI0中断线,PA1.PB1...PG1共用的EXTI1中断线,也就是 编程里面 ...
- stm32外部中断问题(每次stm32进行系统复位按键控制NRST=0,程序立马进入中断服务函数)
rf射频数据收发芯片的一个数据接收指示引脚连接stm32的一个gpio口,设置为中断口.当rf接收到数据的时候,数据接收指示引脚由高电平变为低电平,所以中断配置里面配置的是IPU,下降沿触发.系统复位 ...
- STM32的:外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler详解
一:硬件情况:采用PA11管脚 需要明确的是,PxN管脚共用外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler,但是需要注意的是[9...5]共用 ...
- STM32 EXTI外部中断及NVIC的抢占优先级和响应优先级解释
1.中断类型 从之前的串口实验可以看出,STM32总共分为内部中断和外部中断,内部和外部的配置差别不是很大,外部中断只是多了一步,需要通过 GPIO_EXTILineConfig(uint8_t GP ...
- 【STM32】外部中断
00. 目录 文章目录 00. 目录 01. 外部中断简介 02. 外部中断配置 03. 外部中断步骤 04. 硬件设计 05. 程序示例一 06. 程序示例二 07. 附录 08. 声明 01. 外 ...
- 【STM32】外部中断实验代码详解
文章目录 main.c exit.c exit.h STM32 的每个 IO 都可以作为外部 中断的中断输入口,这点也是 STM32 的强大之处. STM32F103 的 19 个外部中断为: 线 0 ...
- STM32之外部中断
今天来说下外部中断EXTI 其实外部中断和我们的定时器中断都差不多,只不过定时器中断是利用内部的计数器来进行定时,从而产生定时中断,而外部中断的触发条件是来自于外部,当外部的信息引起了外部中断,那么就 ...
- 蓝桥杯嵌入式学习STM32之外部中断EXTI详解
先说点题外话. !是取逻辑反的意思, ~是按位取反的意思 !0x01=0: ~0x01=1111 1110; 进入正题 基本概念 STM32的每个IO都可以作为外部中断输入. STM32的中断控制器支 ...
- STM32 EXTI外部中断的使用
简介: 1.中断系统 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行 中断优先级:当有多个 ...
最新文章
- 国内三分之一世界500强企业正布局区块链,区块链风口已经出现
- phonegap一些事件
- 学习OpenCV——SVM
- 轻松学习JavaScript十七:JavaScript的BOM学习(二)
- 优化你的手游:使用脏矩形技术
- SAP Spartacus 的延迟加载 Lazy load 设计原理
- 程序员面试问题资源经验
- python写一些小代码_#python#自己写的一段小代码
- TeamViewer可以实现国际连接吗?
- shell如何快速执行上一个命令的最后一个参数
- 我的家庭私有云计划-19
- iOS的iPhone最全尺寸、分辨率、PPI、Reader总结(包括XS、XS Max、XR)
- 世界一流学科排名计算机科学,2019上海软科世界一流学科排名计算机科学与工程专业排名哥伦比亚大学排名第22...
- 射频(RF)基本理论:定义、特性、调制、扩频
- php读取pdf文件乱码_PHP读取文件,解决中文乱码UTF-8的方法分析
- selenium破解滑块验证码自动查询+获取后续表单数据
- 数据库系统概论-005: 数据库完整性(正确性和相容性)
- countly 处理用户行为数据方案
- 在vue项目中使用gsap,实现极佳的2d动画效果
- 【微信小程序】设置合法域名