嵌入式流水灯实验代码
时间: 2023-07-09 16:16:46 浏览: 88
流水灯实验代码
以下是一个简单的嵌入式流水灯实验代码,使用的是STM32F103C8T6开发板和Keil uVision 5开发环境:
```c
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
// 使能GPIOC时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// 配置GPIOC的8个引脚为输出模式
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
while (1)
{
// 依次点亮8个LED灯
GPIO_SetBits(GPIOC, GPIO_Pin_0);
delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_1);
delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_2);
delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_3);
delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_4);
delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_5);
delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_6);
delay_ms(500);
GPIO_SetBits(GPIOC, GPIO_Pin_7);
delay_ms(500);
// 依次熄灭8个LED灯
GPIO_ResetBits(GPIOC, GPIO_Pin_0);
delay_ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_1);
delay_ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_2);
delay_ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_3);
delay_ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_4);
delay_ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_5);
delay_ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_6);
delay_ms(500);
GPIO_ResetBits(GPIOC, GPIO_Pin_7);
delay_ms(500);
}
}
// 延时函数
void delay_ms(u16 nms)
{
u32 i, j;
for (i = 0; i < nms; i++)
{
for (j = 0; j < 3600; j++);
}
}
```
这个代码使用了GPIO库来控制开发板上的8个LED灯,通过依次点亮和熄灭LED灯来实现流水灯效果。同时还使用了一个简单的延时函数`delay_ms`来实现每个灯点亮和熄灭之间的时间间隔。
阅读全文