基于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 */
}