当前位置:首页 > 单片机 > 单片机
[导读]外部中断有点像51单片机的中断INT一样,都能够设置为上升沿、下降沿和双边沿触发;不同之处在于STM32的大多数GPIO口都能设置为外部中断输入功能,这样带来的好处有:在PCB设计和需求大量外部中断功能很有帮助。STM32

外部中断有点像51单片机的中断INT一样,都能够设置为上升沿、下降沿和双边沿触发;不同之处在于STM32的大多数GPIO口都能设置为外部中断输入功能,这样带来的好处有:在PCB设计和需求大量外部中断功能很有帮助。STM32F107VCT一共有5组GPIO,每组又有16个引脚。这里提供复用的方式提供了16个中断源。PA0、PB0、PC0、PD0、PE0都是共有相同的中断源EXIT0。

开发板上的按键对应关系为:KEY1—PC4;KEY2—PB10;KEY3—PC13;KEY4—PA0。外接上拉电阻,在设置GPIO的状态的时候,可以设置为输入上拉模式。然后采用GPIO_EXTILineConfig库函数将GPIO设置为EXTI模式。

/* Selects KEY1-PC.04 as EXTI Line 4 */

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource4);

第三步是设置EXTI的模式,最后是编写相应的中断函数。

需要注意的是中断向量表中EXTI5到EXTI9是复用在一起的,名称为EXTI9_5;

EXTI10到EXTI15是复用在一起的,名称为EXTI15_10;

这部分主程序为:

void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

/* Configure the Priority Group to 2 bits */

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

/* Enable the EXTI Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;

NVIC_Init(&NVIC_InitStructure);

}

int main(void)

{

/* Setup STM32 system (clock, PLL and Flash configuration) */

SystemInit();

/* Add your application code here

*/

LED_Configuration();

KEY_Configuration();//按键时钟和端口配置

EXIT_Configuration();//外部中断配置

NVIC_Configuration();

/* Infinite loop */

while (1)

{

}

}

void EXTI0_IRQHandler(void)/* Key 4 */

{

if(EXTI_GetITStatus(EXTI_Line0) != RESET)

{

LED_ALL_OFF();

LED4_ON();

/* Clear the EXTI Line 0 */

EXTI_ClearITPendingBit(EXTI_Line0);

}

}

/*******************************************************************************

* Function Name: EXTI4_IRQHandler

* Description: This function handles External interrupt Line 4 request.

* Input: None

* Output: None

* Return: None

*******************************************************************************/

void EXTI4_IRQHandler(void) /* Key 1 */

{

if(EXTI_GetITStatus(EXTI_Line4) != RESET)

{

LED_ALL_OFF();

LED1_ON();

/* Clear the EXTI Line 4 */

EXTI_ClearITPendingBit(EXTI_Line4);

}

}

/*******************************************************************************

* Function Name: EXTI15_10_IRQHandler

* Description: This function handles External lines 15 to 10 interrupt request.

* Input: None

* Output: None

* Return: None

*******************************************************************************/

void EXTI15_10_IRQHandler(void) /* Key 2 & 3 */

{

if(EXTI_GetITStatus(EXTI_Line10) != RESET)

{

LED_ALL_OFF();

LED2_ON();

/* Clear the EXTI Line 10 */

EXTI_ClearITPendingBit(EXTI_Line10);

}

if(EXTI_GetITStatus(EXTI_Line13) != RESET)

{

LED_ALL_OFF();

LED3_ON();

/* Clear the EXTI Line 13 */

EXTI_ClearITPendingBit(EXTI_Line13);

}

}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

MCS-51单片机有两个外部中断源INT0和INT1,它们分别在P3.2和P3.3引脚出现低电平或下降沿信号时向单片机发出中断请求。外部中断可用于检测单片机外部发生的事件,如键盘敲击和特定脉冲发生的次数等。

关键字: 51单片机 外部中断

外部中断是单片机实时地处理外部事件的一种机制。具体指的是,当某种外部事件发生时,单片机的中断系统迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后,又返回被中断的程序处,继续执行下去。这里我们以Nuc...

关键字: MCU 外部中断 ST

STM32CubeMX是官方推荐的配置软件,而HAL库也是取代之前的库函数的通用库,所以STM32CubeMX+HAL库是当前主流的工程创建方式,HAL库的可移植性也高于被取代的库函数。 之前在[程序员小哈]的公众号中写...

关键字: LED 外部中断

1.ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中...

关键字: ARM THUMB I2C 外部中断

一、exit()函数       函数声明:void exit(int state);       exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0

关键字: exit atexit

/********************************文件所用资源1.外部中断0、1 定时中断0、1 串口中断2.端口:P3.0,P3.1,P3.3,P3.4,P3.5********************...

关键字: c51程序 串口中断 外部中断 定时中断

#include #include #include int main(void){MCUCR |= (1

关键字: AVR gcc编程 单片机 外部中断

因为没有中断的清除标志位,这一点与其它单片机是不同的。EXTI_CR1 触发边沿的设置要在总中断没开时才能写入!PD7 是 不可屏蔽的最高优先级的硬件中断(TLI)设置顺序:最好先关中断 设置边沿 开启引脚 最后开总中断...

关键字: stm8s 外部中断

以下总结参考原子STM32开发指南STM32F103 的中断控制器支持 19 个外部中断/事件请求。STM32F103 的19 个外部中断为:线 0~15:对应外部 IO 口的输入中断。线 16:连接到 PVD 输出。线...

关键字: STM32 外部中断

一、STM32中断分组:  STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是STM32的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,P...

关键字: gpio STM32 外部中断
关闭
关闭