1,在上一节的项目中,增加配置PC14和PC15为EXTI模式

2,在SystemCore->GPIO中配置GPIO14和GPIO15启用内部上拉,并配置配下降沿中断

3,使能GPIO EXTI line[15:10]中断,生成代码

4,重写__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)函数,处理中断源
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin==GPIO_PIN_14)
{
key1_action();
}
if(GPIO_Pin==GPIO_PIN_15)
{
key2_action();
}
}
5,修改显示图片切换函数,实现按键切换
static char sel=0;
void disp_pic_switch()
{
switch(sel)
{
case 0:memcpy(dispbuff,pic1,8);break;
case 1:memcpy(dispbuff,pic2,8);break;
case 2:memcpy(dispbuff,pic3,8);break;
case 3:memcpy(dispbuff,pic4,8);break;
case 4:memcpy(dispbuff,pic5,8);break;
case 5:memcpy(dispbuff,pic6,8);break;
}
//sel++;
//if(sel>=6)
// sel=0;
}
void key1_action()
{
sel++;
if(sel>=6)
sel=0;
}
void key2_action()
{
if(sel>0)
sel--;
else
sel=5;
}
6,protues内增加2个按键如下图

在STM32中,EXTI0-EXTI15对应GPIO的0-15号引脚。对于某一特定的EXTI线,例如EXTI0,只能选择某一组GPIO(如GPIOA、GPIOB、GPIOC等)的第0号引脚来触发该中断,不能同时使用多个不同组的GPIO0引脚共享同一EXTI线。
举个例子:
- EXTI0 可以连接到 GPIOA_PIN_0、GPIOB_PIN_0、GPIOC_PIN_0 等,但在一个时间点只能选择其中一个引脚进行配置。
如果需要多个GPIO引脚同时响应中断,通常需要配置不同的EXTI线来分别处理不同的GPIO引脚。
近期评论