STM32F101xx/STM32F103xx EXTI寄存器详解及应用

需积分: 26 30 下载量 197 浏览量 更新于2024-08-08 收藏 1.93MB PDF 举报
"EXTI寄存器结构-基于ir-uwb雷达自相关的呼吸和心跳速率测量" 在STM32F1x系列微控制器中,EXTI(External Interrupt)模块是用来处理外部中断事件的关键部分。EXTI寄存器结构的详细解析如下: EXTI寄存器结构在"stm32f10x_map.h"文件中被定义,包含以下几个部分: 1. IMR(Interrupt Mask Register,中断屏蔽寄存器):用于控制各个外部中断线的中断请求是否被屏蔽。如果某个位被设置为1,则对应的中断线的中断请求将被屏蔽,不会引起CPU响应。 2. EMR(Event Mask Register,事件屏蔽寄存器):与IMR类似,但用于控制外部事件,而非中断。设置为1的位表示对应事件被屏蔽。 3. RTSR(Rising Edge Trigger Selection Register,上升沿触发选择寄存器):配置哪些外部中断线在发生上升沿时能够触发中断。 4. FTSR( Falling Edge Trigger Selection Register,下降沿触发选择寄存器):用于设定哪些外部中断线在下降沿时能够触发中断。 5. SWIER(Software Interrupt Event Register,软件中断事件寄存器):允许软件设定中断事件,触发中断处理。 6. PR(Pending Register,挂起寄存器):显示当前哪些中断线的中断请求尚未被服务,即中断状态。 EXTI的基地址是在APB2外设基地址上加上0x0400计算得出的,即EXTI_BASE = (APB2PERIPH_BASE + 0x0400)。在不同的模式下,如Debug模式,EXTI的指针会在"stm32f10x_lib.c"文件中初始化,以便于访问EXTI寄存器。定义 `_EXTI` 在"stm32f10x_conf.h"文件中是必要的,以便编译器知道EXTI的地址。 STM32F1x固件函数库提供了对外设的便捷访问,包括EXTI。库中的API(Application Programming Interface)对外设驱动进行了标准化,使得开发者可以更简单地使用每个外设的功能,而无需深入理解底层细节。库函数符合"Strict ANSI-C"标准,确保代码的可移植性,并且遵循MISRA-C2004编码规范以提高软件质量。实时错误检测通过校验输入值实现,增强了软件的健壮性,但在最终的应用程序中,为了优化代码大小和执行速度,可以考虑去除这部分检查。 STM32F1x固件库适用于各种应用,直接使用可满足大部分需求。但对于有严格代码大小和速度要求的项目,可以参考库中的驱动程序进行定制化修改,以适应特定需求。整个库的使用和功能在用户手册中有详尽的描述,包括设置指南、架构解析以及每个外设的函数描述。