keil5流水灯实现偶数亮灯再奇数亮灯的代码
时间: 2024-09-26 11:17:40 浏览: 123
在Keil uVision 5中实现一个流水灯项目,让偶数位置的LED先亮,然后奇数位置的LED亮起,可以参考这样的C语言代码示例。假设我们有一个8个LED的GPIO数组,例如`GPIO pins[8]`:
```c
#include "stm32f10x.h" // Include Keil编译器支持的相关头文件
// 假设GPIOA的PIN对应我们的LED数组
#define LED_PORT GPIOA
#define LED_PIN0 GPIO_Pin_0
#define LED_PIN1 GPIO_Pin_1
// ...以此类推到LED_PIN7
void delay_ms(uint32_t ms) {
// 添加适当延迟函数,这里只是一个简单的计数循环
for (uint32_t i = 0; i < ms * 10; ++i);
}
int main(void) {
RCC_AHB1PeriphClockCmd(LED_PORT->GPIO_Pin_0 | LED_PORT->GPIO_Pin_1 | // 初始化需要的GPIO口
LED_PORT->GPIO_Pin_2 | LED_PORT->GPIO_Pin_3 |
LED_PORT->GPIO_Pin_4 | LED_PORT->GPIO_Pin_5 |
LED_PORT->GPIO_Pin_6 | LED_PORT->GPIO_Pin_7,
ENABLE); // 开启GPIO时钟
GPIO_Init(LED_PORT, &GPIO_InitStructure); // 初始化GPIO为推挽输出
while(1) {
for(int i = 0; i < 8; i++) {
if(i % 2 == 0) { // 如果LED编号是偶数
GPIO_SetBits(LED_PORT, LED_PIN+i); // 设置LED点亮
delay_ms(500); // 等待一段时间
GPIO_ResetBits(LED_PORT, LED_PIN+i); // 关闭LED
} else { // 否则是奇数
GPIO_ResetBits(LED_PORT, LED_PIN+i); // 直接关闭奇数位置的LED
delay_ms(500);
GPIO_SetBits(LED_PORT, LED_PIN+i); // 奇数位置的LED随后点亮
}
}
}
return 0;
}
```
阅读全文