STM32开发板学习笔记【4】基础实验-按键扫描

1.按键扫描实验

实验内容:通过 FS-STM32F407 载有 4 个按键(KEY3KEY4KEY5KEY6),控制 4 个 LED 灯的点亮和关闭状态。编写按键程序,实现 FS-STM32F407 开发平台上的按键控制 LED 灯亮灭实验。调试编译好程序后, 将程序下载到 FS-STM32F407 ,按复位键观察实验现象。

开发板有四个key 分别与 PI9  ,PF11, PC13, PA0 四个管脚连接 

管脚配置如图

时钟配置如图:

点击生成工程按钮

关键代码:

在GPIO.h中添加 对管脚的定义 

/* USER CODE BEGIN Includes */
#define KEY3 		HAL_GPIO_ReadPin(GPIOI,GPIO_PIN_9)    //PI9
#define KEY4 		HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_11)	  //PF11
#define KEY5 		HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13)   //PC13
#define KEY6  	HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)	  //PA0
/* USER CODE END Includes */

/* USER CODE BEGIN Private defines */
	 uint8_t KEY_Scan(uint8_t);  		//按键扫描函数	

在 gpio.c 中添加函数的实现代码,

uint8_t KEY_Scan(uint8_t mode)
{	 
	static uint8_t key_up=1;//按键按松开标志
	if(mode)key_up=1;  //支持连按		  
	if(key_up&&(KEY3==0||KEY4==0||KEY5==0||KEY6==0))
	{
		HAL_Delay(10);//去抖动 
		key_up=0;
		if(KEY3==0)return 3;
		else if(KEY4==0)return 4;
		else if(KEY5==0)return 5;
		else if(KEY6==0)return 6;
	}else if(KEY3==1&&KEY4==1&&KEY5==1&&KEY6==1)key_up=1; 	    
 	return 0;// 无按键按下
}

 build ---> load ---> test.

本实验下载完毕测试发现一个问题,管脚和按键、led灯的顺序并不是对应的。经过实验发现有如下对应关系

Key=6   (GPIOA,GPIO_PIN_0)  PA0  对应实验板的KEY4   GPIOF,GPIO_PIN_10  PF10 对应led1

Key=5   (GPIOC,GPIO_PIN_13)  PC13  对应实验板的KEY3   GPIOF,GPIO_PIN_9  PF9 对应led2

Key=4   (GPIOF,GPIO_PIN_11)  PF11  对应实验板的KEY2  GPIOF,GPIO_PIN_8  PF8 对应led3

Key=3 

接下来有三个可能出问题的地方,第一可能是板子的led4这个灯坏了,第二可能是key4绑定的管脚不对,第三可能是led4灯绑定的管脚不对。

首先拿第二块实验板测试。

经过实验发现,第二块实验班的led4灯也是不亮的,那说明不是实验器材损坏

第二部检查是否是key4灯绑定不对:

啊这。。一个一个管脚试比较麻烦,我有个办法就是编一个程序一劳永逸,打开所有管脚,测试输出信号,可以借鉴一下

------------------------------------更新-----------------------------------

朝实验板的开发人员要了一份原理图,使用正确的管脚设置终于正常了

可以看到使用的是PE2接口

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值