使用stm32F103c8t6编写流水灯的代码
时间: 2024-01-14 20:05:10 浏览: 70
基于STM32F103的流水灯
5星 · 资源好评率100%
以下是基于STM32F103C8T6的流水灯代码:
```c
#include "stm32f10x.h" // 包含STM32F103C8T6的头文件
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); // 使能GPIOC时钟
GPIO_InitTypeDef GPIO_InitStructure; // 定义GPIO初始化结构体
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3; // 设置GPIO引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置GPIO输出模式为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置GPIO速率为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); // 初始化GPIOC
while(1)
{
GPIO_SetBits(GPIOC, GPIO_Pin_0); // 亮第一个LED
delay_ms(500); // 延时500毫秒
GPIO_SetBits(GPIOC, GPIO_Pin_1); // 亮第二个LED
delay_ms(500); // 延时500毫秒
GPIO_SetBits(GPIOC, GPIO_Pin_2); // 亮第三个LED
delay_ms(500); // 延时500毫秒
GPIO_SetBits(GPIOC, GPIO_Pin_3); // 亮第四个LED
delay_ms(500); // 延时500毫秒
GPIO_ResetBits(GPIOC, GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3); // 关闭所有LED
}
}
void delay_ms(u16 nms)
{
u32 i, j;
for(i = 0; i < nms; i++)
for(j = 0; j < 2000; j++);
}
```
以上代码使用了GPIOC的0、1、2、3四个引脚作为LED控制引脚,通过循环控制每个LED的亮灭,从而实现流水灯效果。在代码中还定义了一个延时函数,用于控制灯的亮灭时间。
阅读全文