STM23F407单片机编程中实现利用按键操作来控制LED灯的实验C语言代码
时间: 2024-11-03 18:18:42 浏览: 8
在STM32F407单片机上,你可以使用Keil MDK等集成开发环境编写C代码来实现按键控制LED灯的基本实验。以下是一个简化的示例代码:
```c
#include "stm32f4xx.h" // 包含STM32的头文件
// LED和按键的宏定义
#define LED_PIN GPIO_Pin_6 // LED连接到GPIOB的PB6
#define KEY_PIN GPIO_Pin_5 // 按键连接到GPIOB的PB5
#define LED_PORT GPIOB // LED所在的GPIO口
#define KEY_PORT GPIOB // 按键所在的GPIO口
void delay_ms(uint32_t milliseconds); // 延迟函数
int main(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); // 启动GPIOB时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = LED_PIN | KEY_PIN; // 初始化LED和按键的引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置模式为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置速度
GPIO_Init(LED_PORT, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = KEY_PIN; // 对按键设置拉低输入
GPIO_Init(KEY_PORT, &GPIO_InitStructure);
while (1) {
if (GPIO_ReadInputDataBit(KEY_PORT, KEY_PIN)) { // 如果按键按下
GPIO_SetBits(LED_PORT, LED_PIN); // 开启LED
delay_ms(500); // 等待一段时间
GPIO_ResetBits(LED_PORT, LED_PIN); // 关闭LED
}
}
}
// 延迟函数,这里使用软件延时
void delay_ms(uint32_t milliseconds) {
uint32_t start = HAL_GetTick();
while ((HAL_GetTick() - start) < milliseconds * 1000 / portTICK_PERIOD_MS);
}
```
阅读全文