STM32F103C8T6 单片机:控制 LED 闪烁,加按键停止闪烁及代码改进建议
以下是在您提供的代码基础上增加按键控制的修改代码: ```c #include "stm32f10x.h" // 包含所需的头文件 #define LED_PIN 13 #define BUTTON_PIN 1 void delay(uint32_t count) { while(count--); } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); // 使能 GPIOA 和 GPIOB 时钟 GPIO_InitStructure.GPIO_Pin = (1 << LED_PIN); // 配置 LED 引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = (1 << BUTTON_PIN); // 配置按键引脚 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); while (1) { if (GPIO_ReadInputDataBit(GPIOB, BUTTON_PIN) == 0) // 检测按键是否按下 { GPIO_WriteBit(GPIOA, LED_PIN, GPIO_ReadOutputDataBit(GPIOA, LED_PIN)); // 保持 LED 状态 } else { GPIO_WriteBit(GPIOA, LED_PIN, 1); // LED 亮 delay(500000); GPIO_WriteBit(GPIOA, LED_PIN, 0); // LED 灭 delay(500000); } } } ``` 以下是三个改进建议: 1. 增加必要的注释,以提高代码的可读性。 2. 优化延时函数,使用系统的定时中断来实现更精确的延时。 3. 对按键的消抖处理,以避免按键误触发。 ######[AI写代码神器 | 472点数解答 | 2024-12-26 10:48:58]
- C51 程序:利用外部中断 0 边沿触发实现 P2 口 8 个 LED 依次点亮及代码分析(DeepSeek | 228点数解答 | 2025-06-22 23:18:42)174
- 8051单片机代码详解:按钮控制LED闪烁及消抖原理(讯飞星火 | 697点数解答 | 2024-10-29 14:54:31)290
- 51单片机外部中断0实现LED流水灯:代码详解与要点提醒(DeepSeek | 214点数解答 | 2025-06-22 23:19:09)207
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)342
- 优化星空代码:从可读性到性能与交互的全面提升(字节豆包 | 171点数解答 | 2025-03-15 23:59:30)248
- 星空特效代码揭秘:从基础实现到性能优化全攻略(DeepSeek | 460点数解答 | 2025-03-16 00:00:00)200
- 51 单片机按键控 LED:代码详解、优化与注意事项揭秘(DeepSeek | 326点数解答 | 2025-06-22 23:19:40)223
- 8051单片机代码:按钮控制LED状态切换代码详细注释解析(讯飞星火 | 830点数解答 | 2024-10-29 15:29:41)312
- 8051单片机代码:带详细注释的按键控制LED程序解析(讯飞星火 | 693点数解答 | 2024-10-29 15:31:00)432
- 8051 单片机:修正代码实现按钮控制 LED 及去抖逻辑(讯飞星火 | 570点数解答 | 2024-10-29 15:32:29)274
- 数字时钟模块代码:深入剖析输入输出与内部信号(字节豆包 | 36点数解答 | 2024-11-15 10:12:43)265
- Verilog代码:数字时钟模块的详细设计与实现(GPT | 3130点数解答 | 2024-11-15 10:14:41)258