STM32G4 蓝桥杯嵌入式 外部中断按键处理

本文档介绍了如何在STM32微控制器上配置按键为中断模式,按键B1-B3分别对应PB0-PB2引脚。通过中断回调函数实现按键消抖并设置全局变量x记录按键状态,用于驱动PC8-PC15引脚上的LED流水灯。示例代码展示了如何根据x的值执行相应操作。
摘要由CSDN通过智能技术生成

基础配置可参考

流水灯实例

查阅产品手册可知

按键对应引脚如图

按键B1 对应引脚为PB0

按键B2 对应引脚为PB1

按键B3 对应引脚为PB2

按如图配置按键为中断模式,同时配置PC8-PC15为GPIO_OUTPUT选中LD1-LD8

(这里只配置了一个按键的中断,所以只用使能一条中断线) 

 生成工程后

int x=0;                                         //定义全局变量x
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)     //使用中断回调函数
{
if(GPIO_Pin == GPIO_PIN_0)                             //如果触发中断的是PB0       
	{
	HAL_Delay(10);                                 //按键消抖                                   
		if(  HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) )   //如果B1按下,则令x = 1      
				x = 1;
	}


if(GPIO_Pin == GPIO_PIN_1)                          //如果触发中断的是PB1
	{
		HAL_Delay(10);                                  //按键消抖                               
			if(  HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) )       //如果B2按下,则令x = 2  
					x = 2;
	
	}


if(GPIO_Pin == GPIO_PIN_2)                          //如果触发中断的是PB3
	{
	
	HAL_Delay(10);                                      //按键消抖                                
			if(  HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_2) )    //如果B3按下,则令x = 3     
					x = 3;
	}

 这里定义全局变量x的作用就是记录操作值,在主函数中使用if(x == 1){   }等来执行相应操作。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值