《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.3 按键控制实验

写在前面——
《STM32单片机开发应用教程(HAL库版)—基于国信长天嵌入式竞赛实训平台(CT117E-M4)》第四章4.3 按键控制实验,讲述按键控制的编程方法
官方例程下载:https://pan.baidu.com/s/1QC5BnDgY1m1me6-ihQ_OUQ?pwd=nqb1
提取码:nqb1

4.3 按键控制实验

4.3.1. 实验任务

  1. 简单按键控制:官方例程HAL_02_KEY_TEST,实现4个按键控制对应的LED亮/灭。
  2. 拓展功能:编写按键扫描函数Key_scan、按键服务函数Key_proc,实现按键长/短按之分。

4.3.2. 硬件连接

在这里插入图片描述
在这里插入图片描述
  开发板上共配备了4个按键,分别连接在PB0,PB1,PB2,PA0引脚上,引脚通过10K的电阻连接在电源正极VDD,按键的另一端连接在电源负极GND。
  可知,在没有按键按下时,对应的GPIO输入高电平,有按键按下时,输入低电平

4.3.3. GPIO初始化配置(STM32CubeMX)

  参看2.3.1节所述步骤,配置STM32CubeMX相关选项(GPIO、RCC、SYS)。其中, LED涉及的GPIO(PD2、PC8 ~ PC15)全部设置为输出模式。按键对应的GPIO(PB0,PB1,PB2,PA0)全部设置为输入模式。
在这里插入图片描述

4.3.4. 应用程序设计(KEIL5)

1. 按键控制LED显示

  参考官方例程2(HAL_02_KEY_TEST),编程思路:

  • 先LED全灭
  • 按键值判别
    根据按键电路原理,按下时则能检测到输入值为0,否则为1,进行各个按键判别。
    因此,先HAL_GPIO_ReadPin()读取某个按键值,再用if语句将读取值与0比较
  • 对应的LED显示控制:某按键值为0,则置对应的LED控制引脚为0(亮)
    关键程序设计如下:
/* USER CODE END 2 */
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_All, GPIO_PIN_SET);// GPIO_PIN_All,灯全灭
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
	
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
   
		//B1,PB0
		if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0) == GPIO_PIN_RESET){
   
			HAL_GPIO_WritePin(GPIOC, GPIO_PIN_8 | GPIO_PIN_9, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
		}
		//B2,PB1
		if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1) == GPIO_PIN_RESET){
   
			HAL_GPIO_WritePin(GPIOC, GPIO_PIN_10 | GPIO_PIN_11, GPIO_PIN_RESET);
			HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
			HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
		}
		//B3,PB2
		if(
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是春老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值