STM32——按键控制led灯

本次实现 STM32 双按键控制单个 LED 亮灭功能:

我这边板子的 PA1接led,PA0接按键1,PC13接按键2,在写的时候看自己板子的原理图,板子不一样,直接搬运肯定是不行的

  1. 配置 PA0、PC13 为上拉输入模式作为按键检测引脚;
  2. 配置 PA1 为推挽输出模式控制 LED;
  3. 上电默认 LED 熄灭;
  4. 按下 PA0 按键点亮 LED;
  5. 按下 PC13 按键熄灭 LED;
  6. 采用标准库 GPIO 初始化方式,模块化分 led、key 驱动文件。

main.c

复制代码
// 引入STM32底层库文件
#include "stm32f10x.h"
// 工程自带主头文件
#include "main.h"
// 引入LED初始化函数声明
#include "led.h"
// 引入按键初始化函数声明
#include "key.h"

// 程序入口函数
int main()
{
	// 初始化LED引脚PA1
	LED_Init(); 
	// 初始化按键PA0、PC13
	Key_Init();		
	// 上电默认让PA1输出高电平,LED初始熄灭
	GPIO_SetBits(GPIOA, GPIO_Pin_1);  
	
	// 死循环,一直检测按键
	while(1)
    {
        // 读取PA0电平,等于0说明按键按下
        if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0)  		
		{
			// PA1拉低电平,点亮LED
			GPIO_ResetBits(GPIOA, GPIO_Pin_1);		
		}
		// 读取PC13电平,等于0说明按键按下
		if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 0)	 	
		{
			// PA1拉高电平,熄灭LED
			GPIO_SetBits(GPIOA, GPIO_Pin_1);   	
		}
    }
}

key.c

复制代码
// 引入按键头文件
#include "key.h"
// 引入STM32底层库
#include "stm32f10x.h"

// 按键初始化函数
void Key_Init(void)
{
	// 定义GPIO初始化结构体
	GPIO_InitTypeDef key_initstruct;  					
	
	// 开启GPIOA、GPIOC外设时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);  
	
	// 选择要配置的引脚PA0
	key_initstruct.GPIO_Pin = GPIO_Pin_0; 			
	// 设置为上拉输入模式
	key_initstruct.GPIO_Mode = GPIO_Mode_IPU; 	
	// 把配置写入GPIOA端口
	GPIO_Init(GPIOA, &key_initstruct);					
	
	// 选择要配置的引脚PC13
	key_initstruct.GPIO_Pin = GPIO_Pin_13;			
	// 设置为上拉输入模式
	key_initstruct.GPIO_Mode = GPIO_Mode_IPU;		
	// 把配置写入GPIOC端口
	GPIO_Init(GPIOC, &key_initstruct);	
}

key.h

复制代码
// 声明按键初始化函数,供外部调用
void Key_Init(void);

led驱动文件参考前面的博客

相关推荐
不悔哥4 天前
开源OV-Watch:怎么做一个智能手表
单片机·开源·嵌入式
XiHongShi20164 天前
STM32F407 RTC定时器例程,建议保存
stm32·单片机·学习
优信电子4 天前
AIT1001 非接触式红外测温模块 STM32 驱动开发实战:从引脚到代码全解析
stm32·嵌入式·温度传感器·红外测温·非接触式测温·ait1001
深圳老胡4 天前
STM32F407 控制 L6470 步进电机驱动 —— 控制过程简介
笔记·stm32·单片机·嵌入式硬件·代码规范
wuyk5554 天前
《WiFi 嵌入式物联网开发全套实战》| 第 16 章 ESP32 AP+STA 双模共存原理与工程坑点
网络·stm32·物联网
女神下凡4 天前
嵌入式设计的各种存储芯片的硬件/软件设计规范,非常全面。
arm开发·单片机·嵌入式硬件
梅梅9664 天前
一款mipi转lvds的lcd调试(LT8912B)
单片机·计算机外设·电脑·显示器·pd芯片
开发笔记-阿牛4 天前
蓝牙音乐灯拆解,又一次拆到蓝牙音乐灯芯片CK6865L
人工智能·单片机·嵌入式硬件·音视频·音频
从零开始的嵌入式之旅4 天前
day47
arm开发·经验分享·笔记·嵌入式硬件
恒锐丰科技林技术员4 天前
EG1164 高压大电流升压同步整流芯片解析
经验分享·嵌入式硬件·硬件工程