基于STM32CubeMX嵌入式开发-按键开发基础

本文详细介绍了如何使用STM32CubeMX进行嵌入式开发,包括GPIO输入配置、HAL库函数应用、按键扫描原理,以及在实际项目中如何通过PB8和PB9控制PB9的开关状态。通过实例演示了如何配置SYS和RCC,设置GPIO模式,并在main.c中实现按键检测和GPIO操作。
摘要由CSDN通过智能技术生成

基于STM32CubeMX嵌入式开发-按键开发基础

一、按键扫描的基本原理

在这里插入图片描述

二、GPIO输入的HAL库函数

1.GPIO电平输出HAL库函数

GPIO_PinState为该函数的返回值。返回值共有两种,分别为GPIO_PIN_SET(也可以用‘1’表示)和GPIO_PIN_RESET(也可以用‘0’表示)
在这里插入图片描述

三、按键开发实验

1.创建工程并选择STM32F103C8Tx系列芯片

在这里插入图片描述

在这里插入图片描述

2.配置SYS

Debug选项选择Serial Wire
在这里插入图片描述

3.配置RCC

高速和低速时钟都使用外部晶振
在这里插入图片描述
配置时钟数
在这里插入图片描述

4.GPIO引脚配置

先配置PB8和PB9为GPIO输出,PC13和PB1为输入。待会再在KEIL5里面通过代码把PB5进行配置
在这里插入图片描述
将PC13和PB1设置为GPIO上拉模式
在这里插入图片描述

5.MX工程文件的配置

在这里插入图片描述
在这里插入图片描述

6.MX工程文件的配置

打开MDK-ARM文件夹
在这里插入图片描述

使用Keil5打开红框中的文件
在这里插入图片描述

7.在main.c文件编译代码

按下按键KEY2(PC13),切换PB9的开关状态

宏定义KEY2
设置Delay函数,反复检测PC13的电平状态,防止信号干扰
定义scan_KEYS()函数,检测电平状态,作出关于PB9的开关响应

#define KEY2 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) 
void Delay(unsigned int t)
{
	while(t--);
}

void scan_KEYS()
{
	if(KEY2 == GPIO_PIN_SET)
	{
		Delay(1000);
		if(KEY2 == GPIO_PIN_SET)
		{
			HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_9);
			while(KEY2 == GPIO_PIN_SET);
		}
	}
		
}
 while (1)
  {
    /* USER CODE END WHILE */
		scan_KEYS();
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值