C语言写点亮LED2、4、6、8四个灯泡
时间: 2024-09-20 10:03:44 浏览: 23
在C语言中,为了控制多个LED灯,你可以创建一个数组来代表各个灯泡,并在循环中分别控制它们。这里以STM32的GPIO作为例子,假设所有灯泡都接在GPIOA上,我们可以这样做:
```c
#include "stm32f4xx.h"
#include "delay.h" // 假设有一个用于延时的库函数
void led_on(uint8_t led_num); // 定义点亮LED的函数
void led_off(uint8_t led_num); // 定义关闭LED的函数
int main(void) {
GPIO_InitTypeDef GPIO_InitStructure;
uint8_t led_array[4] = {GPIO_Pin_1, GPIO_Pin_2, GPIO_Pin_3, GPIO_Pin_4}; // LED2,4,6,8 对应于PA1, PA2, PA3, PA4
// 初始化GPIOA
GPIO_InitStructure.GPIO_Pin = led_array[0]; // 开始初始化第一个LED
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
for (uint8_t i = 0; i < 4; i++) {
led_on(i+2); // 数字加2是因为索引从0开始,灯泡实际位置是2,4,6,8
// 延时
delay_ms(500); // 每次点亮500毫秒
led_off(i+2); // 关闭当前LED
}
while (1); // 无限循环保持程序运行
return 0;
}
// 点亮LED函数
void led_on(uint8_t led_num) {
HAL_GPIO_WritePin(GPIOA, led_array[led_num], GPIO_PIN_SET);
}
// 关闭LED函数
void led_off(uint8_t led_num) {
HAL_GPIO_WritePin(GPIOA, led_array[led_num], GPIO_PIN_RESET);
}