STM32 关于外部中断线、中断源和中断服务函数的问题
STM32 关于外部中断线、中断源和中断服务函数的问题
中断线问题:
上图可以看出,PA0、PB0...PG0共用的EXTI0中断线,PA1、PB1...PG1共用的EXTI1中断线,也就是 编程里面的(如下图库文件),对应16个中断线,后面三个是专用的中断线,不做讨论。
有人要问,假设:我设置的引脚是PB9和PE9都开启外部中断怎么办?小编告诉你,这还真办不了,我实测过。配置函数的时候后覆盖之前的函数的(如下图所示)
如果这样配置的话,会出现出货光电1的初始化覆盖掉编码盘的初始化,说白了就是编码盘的设置被覆盖掉了,结果是外部中断 出货光电1管脚会触发而编码盘就不起作用了,这也是STM32其中一个问题所在吧! 反过来,结果是外部中断 编码盘 管脚会触发 而 出货光电1管脚就不起作用了!
中断源问题:
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource0); //设置GPIOX中断源以及哪个中断脚EXTI_InitStructure.EXTI_Line = EXTI_Line0;//中断线EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//设置为外部中断模式EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;//上升沿触发EXTI_InitStructure.EXTI_LineCmd = ENABLE;//中断线使能EXTI_Init(&EXTI_InitStructure);//配置使能
中断服务函数:
简单的配置:
void EXTI15_10_IRQHandler(void)//中断服务函数,如果中断线是10-15。
{if(EXTI_GetITStatus(EXTI_Line10) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line10); } if(EXTI_GetITStatus(EXTI_Line11) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line11); } if(EXTI_GetITStatus(EXTI_Line12) != RESET) {Beep_ON;SOFT_DELAY;Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line12); } void EXTI9_5_IRQHandler(void)//中断服务函数,如果中断线是5-9。
{if(EXTI_GetITStatus(EXTI_Line5) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line5); } if(EXTI_GetITStatus(EXTI_Line8) != RESET) {Beep_ON;SOFT_DELAY; Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line8); } if(EXTI_GetITStatus(EXTI_Line9) != RESET) {Beep_ON;SOFT_DELAY;Beep_OFF;EXTI_ClearITPendingBit(EXTI_Line9); }
每个中断服务函数代表一个或者一类,上面的代码说明:只要是中断线在EXTI_Line 10-15 的,中断服务函数就只有一个,但是由于中断线只有唯一性,可以在中断服务函数里面判断到底是哪个中断线触发,这也保证不会误触发或者是占线的一系列的问题。
如上图,外部中断分为几类:如下:
DCD EXTI0_IRQHandler ; EXTI Line 0//只是管脚的中断服务函数,还有串口等等中断服务函数DCD EXTI1_IRQHandler ; EXTI Line 1 DCD EXTI2_IRQHandler ; EXTI Line 2DCD EXTI3_IRQHandler ; EXTI Line 3DCD EXTI4_IRQHandler ; EXTI Line 4DCD EXTI9_5_IRQHandler ; EXTI Line 9..5DCD EXTI15_10_IRQHandler ; EXTI Line 15..10
所以在配置外部中断服务函数或者其他中断服务函数的问题时,参照:库启动件 startup_stm32f10x_hd.s
此文章只是个人交流,学术有限!不足之处,望各位爱好者批评指正!
STM32 关于外部中断线、中断源和中断服务函数的问题相关推荐
- stm32共用外部中断线问题小结;不同的端口同一pin;不同pin同一个端口;几个pin共用服务函数等
1.问题来源: stm32内部资源有限,因此产生了很多共用资源,其中外部中断也是其中之一.外部中断的共用资源主要包括: (1)不同端口.同一pin口,共用一个中断线:如PA1.PB1.PC1共用外部中 ...
- hal库开启中断关中断_「正点原子NANO STM32开发板资料连载」第十章 外部中断实验...
1)实验平台:ALIENTEK NANO STM32F411 V1开发板 2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十章 外 ...
- 【STM32】基于HAL库的中断详细学习
目录 1.中断概述 1.1中断相关概念 1.2 STM32中断系统 2 .HAL库的中断处理 2.1 HAL 库的中断封装 2.2 外部中断处理流程 3.外部中断的HAL库定义 3.1. 外部中断的数 ...
- 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】外部中断实验代码详解
文章目录 main.c exit.c exit.h STM32 的每个 IO 都可以作为外部 中断的中断输入口,这点也是 STM32 的强大之处. STM32F103 的 19 个外部中断为: 线 0 ...
- 【STM32】外部中断
00. 目录 文章目录 00. 目录 01. 外部中断简介 02. 外部中断配置 03. 外部中断步骤 04. 硬件设计 05. 程序示例一 06. 程序示例二 07. 附录 08. 声明 01. 外 ...
- STM32 EXTI外部中断及NVIC的抢占优先级和响应优先级解释
1.中断类型 从之前的串口实验可以看出,STM32总共分为内部中断和外部中断,内部和外部的配置差别不是很大,外部中断只是多了一步,需要通过 GPIO_EXTILineConfig(uint8_t GP ...
- 蓝桥杯嵌入式学习STM32之外部中断EXTI详解
先说点题外话. !是取逻辑反的意思, ~是按位取反的意思 !0x01=0: ~0x01=1111 1110; 进入正题 基本概念 STM32的每个IO都可以作为外部中断输入. STM32的中断控制器支 ...
最新文章
- iis重启的几种方法
- java从1开始计时用线程_java – Python – 线程,计时或函数使用?
- 关于ORM和存储过程的一些看法
- 产品规格说明书怎么写_产品说明都不会写?亚马逊旺季请靠边站!
- 马克思知识点总结(一)
- 淘宝用户行为数据分析详解
- Win10家庭版安装软件时提示“为了对电脑进行保护,已经阻止此应用”
- LaTex在线编辑工具overleaf在英文模板中输入中文
- python中英文切换_python国际化(i18n)和中英文切换
- win系统服务器做加速,Win 2003操作系统25招加速大法(转)
- 一文详尽混淆矩阵、准确率、精确率、召回率、F1值、P-R 曲线、ROC 曲线、AUC 值、Micro-F1 和 Macro-F1
- mscbsc移动通信论坛_中国移动5G资费被确认,流量低至1毛/G, 联通电信又被动,网友:良心价...
- 使用javascript实现表单校验(聚焦onfocus()和离焦onblur()以及在指定位置输出innerHTML='')
- 使用OpenMP reduction子句求解二维数组的最小值和输出所在下标
- Python求最大公约数的五种常见方法
- 亚丁号自动阅读第一次更新
- 2022年小学语文句子专项练习大全
- Spring三级缓存源码
- 【数据挖掘·总复习】第三章-关联规则挖掘||Apriori||详细整理||知识点+例题||考点有
- vsftpd之主动模式 被动模式
热门文章
- JVM学习04:类的文件结构
- sqlyog软件的使用
- 教你如何用node.js开发微信公众号(一)
- viewport,html,body在pc和移动的差异
- 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为參数,泛型函数...
- jQuery获取Table某列的值
- Singleton设计模式(单实例)
- 代码编辑器Sublime Text 3 免费使用方法与简体中文汉化包下载
- php 设置curl不超时时间,curl命令的超时时间
- linux命令窗口颜色,如何修改ssh命令行下登录时的颜色