STM32
直播中

刘军

7年用户 1408经验值
私信 关注
[问答]

STM32按键外部中断有哪些步骤呢

中断可以分为哪几种呢?
按键外部中断有哪些步骤呢?如何去配置内嵌向量中断控制器NVIC呢?

回帖(1)

李瑜刈

2021-11-16 11:21:50
  中断可以简单地分为外部中断和定时器中断
  按键外部中断是外部中断中的一种,它的步骤是
  配置按键的GPIO
  配置中断线
  配置通道
  第一步配置按键的GPIO就是非常基础的操作。先定义一个初始化用结构体,然后使能你要使用的IO口的组号(即ABCD…)对应的时钟,然后给结构体赋值以后塞入GPIO_Init函数就可以了。
  static void Key_GPIO_Config()
  {
  GPIO_InitTypeDef GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOD, &GPIO_InitStructure);
  }
  第二步配置中断线有几个要注意的问题。首先,使用哪一条中断线?例如是PB6,就必须使用EXTI6也就是中断线6,使用了以后PA6,PC6这些就无法再配置中断了。因为相同标号的GPIO口用的是同一条中断线,也就是只能独占。如果重复设置那么前者就会被覆盖。其次,要选择中断模式,可以选择的中断模式有上升沿进入中断、下降沿进入中断、上升下降沿都进入中断、高电平进入中断和低电平进入中断。
  3.配置内嵌向量中断控制器NVIC
  第一步,配置哪一条通道?0到4单独自己使用一个通道,而5到9用一个通道,10到15用一个通道。所以例如PB3就应该使用3号通道,PB8使用5到9公用的通道。通道连接的是中断服务函数,所以5到9也就共用一个中断服务函数了,这一般不是我们想要的效果,我们自然想要5到9能单独实现一个功能,所以我们在5~9中要另外判断一下是来自哪个IO口的信号,用几个if语句为不同的IO口实现不同的功能。第二步,配置通道的抢占优先级和响应优先级(使用一般使用分组2)。抢占优先级数值低的优先级越高,一个抢占优先级高的中断会打断优先级比较低的中断或是主函数,任何中断都可以打断主函数。响应优先级(又称次优先级)的意思是说,当两个抢占优先级相同的中断同时出现的时候,那么先执行响应优先级高的那一个,但他们彼此并不会发生互相打断,因为抢占优先级是一样的。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分