蓝桥杯嵌入式学习STM32之按键——GPIO的输入

博主在除夕夜分享了学习STM32嵌入式过程中关于GPIO按键的使用,强调了使能时钟和配置引脚的重要性。通过库函数配置上拉或下拉输入,并读取电平判断按键状态。同时提到对武汉疫情的关注,并希望学习能带来好的收获。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天是除夕夜…

不想看春晚,不想看拜年祭,不想学习,但是又不得不学习…
唉~好难受
只能学习了…
孤独…

每天都在学AD、学STM32,看新概念模拟电路
希望未来能有个好收获把

另外今天我才开始去了解武汉的病情,好像还挺严重的,武汉加油!!


正题

GPIO每次使用前都要进行初始化,前面点灯环节已经介绍过大体流程,这次就简单一点。

第一步使能时钟

第二步配置引脚

本次实验我采用的是库函数版本。
区别在于Mode要根据按键情况选择上拉输入或者下拉输入。
另外不需要设置SPEED

接下来要用到一个函数

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

读取电平情况来判断按键是否按下。
下面就是老朋友了我也不想多说。
下面那段代码我写的其实并不好,应该默认return 0的。
然后注意点在于倒数第四行应该是&与操作,所有按键都松开才能重置标志位key_flag。

void delay_1ms(u32 time)
{
  u32 i=8000*time;
  while(i--);
}

int KEY_Scan(int mode)/0是单击模式   1是连按模式
{
	static int key_flag=1;
	if(mode==1)key_flag=1;
	if((!KEY0||!KEY1||!KEY2||KEY_UP)&&key_flag)
		delay_1ms(10);
	if((!KEY0||!KEY1||!KEY2||KEY_UP)&&key_flag)
	{
		key_flag=0;
		if(!KEY0)return KEY_R;
		if(!KEY1)return KEY_M;
		if(!KEY2)return KEY_L;
		if(KEY_UP)return KEY_U;
	}else if(KEY0&&KEY1&&KEY2&&!KEY_UP)	
	key_flag=1;
	return 4;
}

大概就这样吧,完整代码详见正点原子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值