stm32流水灯程序代码gpio
时间: 2024-08-13 22:09:46 浏览: 61
STM32单片机中的GPIO(General Purpose Input/Output)模块常用于控制各种外部设备,如LED灯的亮灭操作。以下是一个简单的STM32F103C8T6(或类似型号)使用GPIO控制流水灯的基本程序示例,假设我们有8个LED,连接到PA8-PA15这7个GPIO引脚:
```c
#include "stm32f10x.h" // 包含STM32的标准头文件
// LED定义
#define LED_PIN_P8 GPIO_Pin_8
#define LED_PIN_P9 GPIO_Pin_9
// ...一直定义到LED_PIN_P15
#define NUM_LEDS 8
// GPIO初始化配置
void LedInit(void) {
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 配置GPIOA时钟为使能状态
GPIO_InitStructure.GPIO_Pin = LED_PIN_P8 | LED_PIN_P9 | /*...*/ | LED_PIN_P15; // 所有LED引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 输出推挽模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 高速
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA
}
// 循环点亮和熄灭流水灯
void BlinkLed(void) {
for (int i = 0; i < NUM_LEDS; i++) {
GPIO_SetBits(GPIOA, LED_PIN_P8 << i); // 设置第i个LED亮
HAL_Delay(500); // 延迟500毫秒
GPIO_ResetBits(GPIOA, LED_PIN_P8 << i); // 设置第i个LED灭
}
}
int main(void) {
LedInit(); // 初始化GPIO
while (1) {
BlinkLed(); // 无限循环点亮流水灯
}
}
```
阅读全文
相关推荐


















