stm32gpio点亮多个led灯程序
时间: 2024-09-27 09:07:54 浏览: 79
STM32 GPIO模块通常用于控制GPIO引脚作为数字输入输出,以驱动LED灯等外部设备。下面是一个简单的示例,展示如何使用STM32的GPIO控制多个LED灯:
```c
#include "stm32f10x_gpio.h"
#include "stm32f10x_tim.h"
// 定义LED灯的GPIO端口和引脚
#define LED_GPIO_PORT GPIOA
#define LED_PIN_1 GPIO_Pin_0
#define LED_PIN_2 GPIO_Pin_1
#define LED_PIN_3 GPIO_Pin_2 // 假设有三个LED
void led_init(void)
{
// 初始化GPIOA为推挽输出模式,所有LED灯设置为低电平
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_Init(LED_GPIO_PORT, &GPIO_InitStructure);
GPIO_PinOutConfig(LED_GPIO_PORT, LED_PIN_1 | LED_PIN_2 | LED_PIN_3, PullDown);
// 确保每个LED都有独立的GPIO输出
GPIO_PinRemapConfig(GPIO_Remap燈Pin3ToGPIOA, ENABLE); // 如果第三个LED连接到其他GPIO
}
void led_on(int led_num) // 通过数字编号控制LED亮灭
{
if (led_num >= 1 && led_num <= 3)
{
GPIO_SetBits(LED_GPIO_PORT, led_num - 1); // 设置对应的GPIO位,LED亮起
}
}
void led_off(int led_num)
{
if (led_num >= 1 && led_num <= 3)
{
GPIO_ResetBits(LED_GPIO_PORT, led_num - 1); // 清除对应的GPIO位,LED熄灭
}
}
int main(void)
{
led_init();
while (1)
{
// 示例:依次点亮和关闭LED灯
for (int i = 1; i <= 3; i++)
{
led_on(i);
HAL_Delay(500); // 等待一段时间再关闭
led_off(i);
}
}
return 0;
}
```
阅读全文