STM32F103实验二:按键控制LED亮灭main函数代码
时间: 2024-09-23 20:02:43 浏览: 105
STM32F103的实验二通常涉及基本的输入输出操作,例如通过按键控制LED灯的亮灭。这是一个简单的示例,假设我们有一个按键连接到GPIOA的PA0口,LED连接到GPIOB的PB0口:
```c
#include "stm32f10x.h" // 包含STM32的头文件
// 定义按键和LED的寄存器地址
#define KEY_PIN GPIO_Pin_0
#define LED_PIN GPIO_Pin_0
#define KEY_PORT GPIOA
#define LED_PORT GPIOB
// 配置GPIO口为推挽输出
void configure_GPIO(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB, ENABLE); // 启动GPIOA和GPIOB时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = KEY_PIN; // 按键
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; // 模式配置为浮空输入
GPIO_Init(KEY_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = LED_PIN; // LED
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(LED_PORT, &GPIO_InitStructure);
}
int main(void) {
configure_GPIO(); // 初始化GPIO
while (1) { // 主循环
if (GPIO_ReadInputDataBit(KEY_PORT, KEY_PIN)) { // 如果按键按下
GPIO_SetBits(LED_PORT, LED_PIN); // 开启LED
delay_ms(500); // 灯亮500毫秒
} else {
GPIO_ResetBits(LED_PORT, LED_PIN); // 关闭LED
delay_ms(500); // 等待500毫秒
}
}
}
```
阅读全文