stm32_外部中断

来源:互联网 发布:vb中debug是什么意思 编辑:程序博客网 时间:2024/05/16 00:37

stm32的每个IO都可以最为外部中断输入,中断控制支持19个外部中断或事件请求

中断线0~15:外部IO口的输入中断;

线16:连接PVD事件;  

线17:连接RTC闹钟事件;

线18:连接到USB唤醒事件。

stm32F10有112个IO口,每个IO映射到外部中断线的关系如下所示:


GPIOX.0映射到EXTI0  (X可以是A.B.C.D.E.F.G)  即是:GPIOX.Y映射到EXTIY      0到15个EXTI 每组ABCDEFG7个IO口
 但是不是每个中断线都对应一个中断函数,IO口外部中断向量表中只有7个中断向量,即7个中断服务函数,见下表:

从此外部中断向量表中可以看出:5~9中断线公用一个中断服务函数,10~15公用一个。
常用库函数:
1、设置IO与中断线的映射关系 :GPIO_EXTILineConfig(GPIO_PortSource, GPIO_PinSource)
2、初始化中断线配置:EXTI_Init(EXTI_InitTypeDef *EXTI_InitStructure)
typedef struct{EXTI_Line, EXTI_Mode, EXTI_Trigger, EXTI_LineCmd)
3、判断中断线的中断状态是否发生 :EXTI_GetTStatus(EXTI_Line)
4、清除中断标志:EXTI_ClearTPendingBit(EXTI_Line)
外部中断配置步骤:
1、初始化IO输入:GPIO_Init()
2、开启IO复用时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE)   这个时钟必须开启
3、设置IO与中断线的映射关系:GPIO_EXTILineConfig()
4、初始化:EXTI_Init()
5、配置中断分组NVIC:NVIC_Init()
6、中断服务函数:EXTI_IRQHandler()
7、清除中断标志位:EXTI_CleatTPendingBit()
1 0
原创粉丝点击