stm32f103的gpio开发实例按键控制led灯的亮灭教材.c文件和.h文件
时间: 2023-09-16 14:01:34 浏览: 130
stm32f103开发版gpio实验代码——LED
5星 · 资源好评率100%
以下是一个简单的stm32f103的GPIO开发实例,实现按键控制LED灯的亮灭的教材.c文件和.h文件。
.h文件(gpio.h):
#ifndef _GPIO_H
#define _GPIO_H
#include "stm32f10x.h"
// 定义LED引脚
#define LED_PIN GPIO_Pin_13
#define LED_GPIO_PORT GPIOC
// 定义按键引脚
#define KEY_PIN GPIO_Pin_0
#define KEY_GPIO_PORT GPIOA
// 初始化GPIO
void GPIO_Init(void);
// 控制LED灯亮灭
void LED_Toggle(void);
#endif
.c文件(gpio.c):
#include "gpio.h"
// 初始化GPIO
void GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 开启GPIOC和GPIOA的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA, ENABLE);
// 配置LED引脚为推挽输出
GPIO_InitStructure.GPIO_Pin = LED_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(LED_GPIO_PORT, &GPIO_InitStructure);
// 配置按键引脚为上拉输入
GPIO_InitStructure.GPIO_Pin = KEY_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(KEY_GPIO_PORT, &GPIO_InitStructure);
}
// 控制LED灯亮灭
void LED_Toggle(void)
{
if (GPIO_ReadInputDataBit(KEY_GPIO_PORT, KEY_PIN) == 0) {
GPIO_SetBits(LED_GPIO_PORT, LED_PIN); // 按键按下,LED灯亮
} else {
GPIO_ResetBits(LED_GPIO_PORT, LED_PIN); // 按键松开,LED灯灭
}
}
在主程序中,需要调用GPIO_Init()函数来初始化GPIO,并在循环中不断调用LED_Toggle()函数来实时检测按键状态,并控制LED灯的亮灭。
阅读全文