基本概念

  stm32中,每一个GPIO都可以触发一个外部中断,但是,GPIO的中断是以组为一个单位的,同组间的外部中断同一时间只能使用一个。比如说,PA0,PB0,PC0,PD0,PE0,PF0,PG0这些为1组,如果我们使用PA0作为外部中断源,那么别的就不能再使用了。在此情况下,我们只能使用类似于PB1,PC2这种末端序号不同的外部中断源。每一组使用一个中断标志EXTIx。EXTI0-EXTI4这5个外部中断有着自己单独的中断响应函数,EXIT5-EXIT9共用一个中断响应函数,EXIT10-EXIT15共用一个中断响应函数。

  对于中断的控制,stm32有一个专用的管理机构:NVIC。对于NVIC的详细解释,可以参考《ARM Cortex-M3权威指南》,Joseph Yiu著,宋岩译,北京航空航天大学出版社出版,第8章NVIC与中断控制。中断的使能,挂起,优先级,活动等等都是NVIC在管理。

 

基本步骤

  使用外部中断的基本步骤如下:

  1、设置好相应的时钟;

  2、IO口初始化

  3、中断NVIC配置

  4、将GPIO管脚与外部中断线连接

  5、在选择的中断通道的响应函数中写中断服务程序

  这里举个简单的例子,使用按键来触发中断,中断发生时,点亮一个led灯。

  按键连接的GPIO为PA11,led连接的GPIO为PB5;

 

  1、设置好相应的时钟

  首先需要打开GPIOA和GPIOB的时钟,因为要使用中断,还需要打开AFIO时钟。详细代码如下:

1 void RCC_Config(void)
2 {
3     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);//GPIOA,GPIOBʱÖÓ
4     RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//外部中断,需要使用AFIO时钟
5     
6 }
View Code

相关文章:

  • 2021-09-09
  • 2021-11-21
  • 2022-12-23
  • 2021-04-13
  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
  • 2022-12-23
猜你喜欢
  • 2021-08-01
  • 2022-02-19
  • 2022-12-23
  • 2022-12-23
  • 2021-09-25
  • 2021-04-26
相关资源
相似解决方案