stm32同时点亮两个led灯
时间: 2024-09-20 22:13:55 浏览: 87
STM32流水灯实验点亮一个LED灯实验
在STM32单片机上同时点亮两个LED灯,首先需要准备两个LED和两个与其相连的GPIO引脚,通常我们会选用其中两个IO口作为输出。以下是基本步骤:
1. **硬件连接**:
- 将其中一个LED的一端接到GPIO的输出口(例如PA0),另一端接电源(VCC)。
- 另一个LED也同理,将其一端接到另一个GPIO输出口(如PB0),另一端接地(GND)。
2. **初始化GPIO**:
- 使用`GPIO_Init()`函数配置这两个GPIO口为推挽输出模式(GPIO_MODE_OUTPUT_PP)和适当的驱动强度(比如GPIO_Speed_50MHz)。
3. **编写代码**:
```c
#include "stm32f10x_gpio.h" // 包含必要的头文件
void ledInit(void) {
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; // PA0 和 PB0
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化第一个LED的GPIO
GPIO_Init(GPIOB, &GPIO_InitStructure); // 初始化第二个LED的GPIO
}
void ledOn(void) {
GPIO_SetBits(GPIOA, GPIO_Pin_0); // 对应PA0的LED设置为高电平,点亮
GPIO_SetBits(GPIOB, GPIO_Pin_1); // 对应PB0的LED设置为高电平,点亮
}
void ledOff(void) {
GPIO_ResetBits(GPIOA, GPIO_Pin_0); // 对应PA0的LED设置为低电平,熄灭
GPIO_ResetBits(GPIOB, GPIO_Pin_1); // 对应PB0的LED设置为低电平,熄灭
}
int main(void) {
ledInit();
while (1) {
ledOn(); // 点亮两个LED
delay_ms(500); // 暂停一段时间
ledOff(); // 熄灭两个LED
delay_ms(500);
}
return 0;
}
```
4. **循环控制**:
在`while`循环中,我们可以交替调用`ledOn()`和`ledOff()`函数来控制LED灯的开关,实现两个LED的交替闪烁效果。
阅读全文