keil5编写stm32led流水灯全亮,端口P0P1P2
时间: 2024-10-22 21:06:28 浏览: 54
在Keil uVision 5中编写STM32 LED流水灯全亮的程序,首先你需要确保你的硬件配置中连接了至少8个LED到P0、P1或P2这三个GPIO端口。这里是一个基本示例,我们将使用P0端口:
```c
#include "stm32f1xx.h" // 引入STM32F1系列的头文件
void delay_ms(uint32_t ms) {
uint32_t start_time = HAL_GetTick();
while ((HAL_GetTick() - start_time) < ms * 1000);
}
int main(void) {
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // 启动GPIOA时钟
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | ...; // 设置你要点亮的所有LED对应的引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode Outs; // 输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; // 推挽输出
GPIO_InitStructure.GPIO_PuPd = GPIO_NOPULL; // 上拉下拉都不接
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA
for (uint8_t i = 0; i < 8; ++i) { // 循环点亮每个LED
GPIO_SetBits(GPIOA, GPIO_Pin_0 + i); // 设置对应位
delay_ms(100); // 等待一段时间让LED闪烁
GPIO_ResetBits(GPIOA, GPIO_Pin_0 + i); // 关闭LED
}
while (1); // 无限循环保持程序运行
}
阅读全文