STM32外部中断查询: 15-10线的外部中断共用一个中断函数,怎么在该函数里查询是哪个中断线产生了中断呢?

使用 EXTI_GetITStatus()来查询哪根线产生了中断。
比如EXTI_GetITStatus(EXTI_Line13)就是查询13线是否产生了中断的。
还有 :当初你在设置中断引脚的时候都是不能把PB1和PD1同时设置为中断源的。如果非要设置,后面设置的会把前面的覆盖掉的。

编写中断服务函数经常需要使用两个函数。
第一个是判断某个中断线上的中断是否发生(即标志位是否置位):
ITStatus EXTI_GetITStatus(uint32_t EXTI_line); //放在中断服务函数开头,监测中断标志位
第二个是清除某个中断线上的中断标志位(即清除标志位):
void EXTI_ClearITPendingBit(uint32_t EXTI_Line);//放在函数的结尾
常用外部中断服务函数的格式:

//格式一
void EXTI3_IRQHandler(void) {
If( EXTI_GetITStatus(EXTI_Line3)!-=RESET)//判断是否置位 {
Dosomething();//执行中断事件
EXTI_ClearITPendingBit(EXTI_Line3);//清零LINE上标志位 }
}
//===========================================//格式二
void EXTI3_IRQHandler(void) {
If( EXTI_GetFlagStatus(EXTI_Line3)!-=RESET)//判断是否置位 {
Dosomething();//执行中断事件
EXTI_ClearFlag(EXTI_Line3);//清零LINE上标志位 }
}
//========================================================
区别:EXTI_GetITStatus()会先判断该中断是否使能,若使能了再判断中断标志位,而EXTI_GetFlagStatus()直接判断中断标志位是否置位(马虎点)。所以说方式一的EXTI_GetITStatus()会好点,一般配合EXTI_ClearITPendingBit()使用。

PS:

建议参考以下代码;三个中断公用一个中断函数。
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line5) != RESET)
{
}
else if (EXTI_GetITStatus(EXTI_Line6) != RESET)
{
}
else if (EXTI_GetITStatus(EXTI_Line7) != RESET)
{
}
EXTI_ClearITPendingBit(EXTI_Line5);
EXTI_ClearITPendingBit(EXTI_Line6);
EXTI_ClearITPendingBit(EXTI_Line7);
}

STM32共用中断和共用中断函数的判断相关推荐

  1. STM32 关于外部中断线、中断源和中断服务函数的问题

    STM32 关于外部中断线.中断源和中断服务函数的问题 中断线问题: 上图可以看出,PA0.PB0...PG0共用的EXTI0中断线,PA1.PB1...PG1共用的EXTI1中断线,也就是 编程里面 ...

  2. STM32 学习总结2 ----利用中断来控制按键点灯、捕获功能练习

    跟着战舰V3 资料盘里学习,关于中断的练习,就是用中断控制按键点灯,很简单的程序,且有例程,可是我的还是出了些问题: 外部中断和IO的对应关系设置:"STM32F103 的 EXTI 控制器 ...

  3. STM32(3)——外部中断的使用

    1 .简介 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32目前支持的中断共84个(16个内部+68个外部),还有1 ...

  4. linux 在某个core上的中断 affinity c语言函数,Linux中断处理体系结构

    各种的异常的C处理函数可以分为5类,他们分布在不同的文件中. 1.在arch/arm/kernel/trapsc.c中 未定义指令异常,总入口函数为do_undefinstr. 2.在arch/arm ...

  5. stm32 USART接收总线空闲中断--USART_IT_IDLE

    stm32 USART接收总线空闲中断--USART_IT_IDLE 版权声明:转载请注明作者和链接 https://blog.csdn.net/Hola_ya/article/details/815 ...

  6. STM32中断优先级和开关总中断(很老很经典)

    一.中断优先级: STM32(Cortex-M3)中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个 ...

  7. stm32之实时时钟RTC(掉电计时保持、秒中断、闹钟中断、溢出中断)

    前言:stm32系列产品普遍都有实时时钟RTC模块,它提供一个掉电保持计时功能,掉电后由后备供电区域供电.除了提供时间和日期之外,还可以设置闹钟提醒,且可以在待机模式下设置闹钟唤醒系统.在一些小容量. ...

  8. STM32震动感应控制继电器(使用循环VS使用外部中断EXTI和中断控制器NVIC)

    参考:stm32的外部中断 震动感应 控制 继电器 作者:点灯小哥 发布时间: 2021-03-05 22:37:01 网址:https://blog.csdn.net/weixin_46016743 ...

  9. STM32(六)-------中断(外部中断)

    STM32中断应用 中断知识介绍 STM32 中断应用概览 异常 NVIC 优先级定义 中断编程 外部中断实例 需求介绍 LED LED.H LED.C EXTI EXTI.H EXTI.C stm3 ...

最新文章

  1. python是什么怎么用-什么是python items函数?怎么使用它?
  2. 来自闪闪宝石的光芒 - “宝石迷阵” x 信息检索 | 论文访谈间 #20
  3. Java 9 中的9个新特性
  4. 爬虫scrapy模块
  5. 程序包管理器控制台 Add-Migration 用法
  6. 收回扣、打麻将、开赌场?比亚迪自曝多名员工贪污腐败
  7. 《程序猿的搬砖生活》九、那些伙伴和生活,既是人生也是回忆
  8. poj 3984 迷宫问题(bfs)
  9. 我的Latex中文报告模板
  10. Kaggle经典项目——房价预测
  11. Android无线WiFi调试项目adbwifi摆脱数据线拔插烦恼无轻松远程调试
  12. 详解 C/C++ 各大编程规范
  13. EI会议-计算机领域
  14. opencv 提取彩色图像轮廓
  15. ubuntu18.04安装tbb library
  16. 中信期货财务因题专题报告:财务因子之单因子测试
  17. VB中上传下载文件到SQL数据库
  18. Python+Appium从安装到第一个小练习(保姆级别教程)
  19. 理解 OpenStack + Ceph (3):Ceph RBD 接口和工具 [Ceph RBD API and Tools]
  20. 微电子和计算机的职业生涯规划访谈

热门文章

  1. linux 打开端口8888命令
  2. LIS算法:经典DP问题( 导弹拦截问题 )
  3. java telephony jar_java – 不支持的类:com.mediatek.common.telephony.IOnlyOwnerSimSupport
  4. ffmpeg 源代码简单学习 : avcodec_decode_video2()
  5. Docker安装常用软件-Mysql
  6. 周鸿祎是个产品天才——从360进军搜索市场想到
  7. 【Golang】关于Go中logrus的用法
  8. 投资超百亿 新能源“绿岛”项目落户温州洞头
  9. Navicat 连接MySQL 连接报2059
  10. Android Gradle Task详解