以STM32F103VB系列为例,100pin, 一般我们通常使用的IO对应外部中断线如下: PA0,PB0,PC0,PD0,PE0 对应的是EXTI0中断线; 以此类推 到PA15,PB15,PC15,PD15,PE15对应EXTI5中断线。
STM32里面EXTI0 – EXTI4这5个外部中断有着自己的单独的中断就表示哪个中断被触发。
你打开stm32的启动文件,例如startup_stm32f10x_hd.s 里面有很多中断跳转的入口。用白话说就是固件库帮你写好了发生什么中断时跳转到哪里,这些名字是一个函数名,你要把这些函数写出来,然后中断来了stm32就跳到这样函数名的函数里面来。
EXTI0_IRQChannel
表示的是外部中断线EXTI0对应的中断函数。
以STM32F103VB系列为例,100pin,
一般我们通常使用的IO对应外部中断线如下:
PA0,PB0,PC0,PD0,PE0
对应的是EXTI0中断线;
以此类推
到PA15,PB15,PC15,PD15,PE15对应EXTI5中断线。
EXTI0对应的中断函数为EXTI0_IRQChannel;
EXTI1对应的中断函数为EXTI1_IRQChannel;
EXTI2对应的中断函数为EXTI2_IRQChannel;
EXTI3对应的中断函数为EXTI3_IRQChannel;
EXTI4对应的中断函数为EXTI4_IRQChannel;
EXTI5
-
EXTI9对应的中断函数为EXTI9_5_IRQHandler;
EXTI10
-
EXTI15对应的中断函数为EXTI15_10_IRQHandler;
你要是使用哪种类型的中断就初始化哪类型的中断,
然后在中断函数里写你想实现的东西,
注意中断函数的操作不易过多。
网上有很多基本的例子,如按键程序,闹钟中断,
可以去看下。
加上这一句:GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
这时JTAG关掉了,只能SWD方式调试。
PA是GPIOA的输入输出引脚,同时,PA还可以作为复用接口AFIO
就是说,GPIO,AFIO
PA引脚连接着好几种寄存器,有GPIOA_IDR/ODR,有AFIO的外部中断EXIT_0~15,有USART模块等等
33脚PA12的中断处理函数在10-15 IRQHandler里,与PA10~PA15共用中断处理函数。
F030设置PA13脚使用中断的标准固件库的编程参考:
static void KEY_EXTI_Init(void)
{
EXTI_InitTypeDef EXTI_InitStruct;
EXTI_ClearITPendingBit(EXTI_Line13);
EXTI_InitStruct.EXTI_Line = EXTI_Line13;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(EXTI_InitStruct);
}
static void KEY_NVIC_Init(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA, EXTI_PinSource13);
NVIC_InitStruct.NVIC_IRQChannel = EXTI4_15_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPriority = 0x01;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(NVIC_InitStruct);
}
static void KEY_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(KEY_GPIO_CLK, ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Pin = KEY_PIN;
GPIO_Init(KEY_PORT, GPIO_InitStructure);
}
void KEY_Config(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
KEY_GPIO_Init();
KEY_EXTI_Init();
KEY_NVIC_Init();
}
本文标签:stm32f030pa15