stm32f103c8t6点亮led流水灯代码
时间: 2023-07-03 16:04:14 浏览: 115
以下是使用STM32CubeIDE编写的点亮LED流水灯的代码:
```c
#include "main.h"
/* 定义LED灯引脚 */
#define LED_PIN GPIO_PIN_13
#define LED_PORT GPIOC
/* 定义延迟函数 */
void delay(uint32_t time)
{
/* 获取当前系统滴答定时器的计数值 */
uint32_t tickstart = HAL_GetTick();
/* 等待指定时间 */
while((HAL_GetTick() - tickstart) < time);
}
int main(void)
{
/* 初始化HAL库 */
HAL_Init();
/* 初始化系统时钟 */
SystemClock_Config();
/* 使能GPIOC时钟 */
__HAL_RCC_GPIOC_CLK_ENABLE();
/* 配置LED引脚为推挽输出 */
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(LED_PORT, &GPIO_InitStruct);
/* 循环执行流水灯效果 */
while (1)
{
/* 点亮第一个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
delay(100);
/* 点亮第二个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
delay(100);
/* 点亮第三个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
delay(100);
/* 点亮第四个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
delay(100);
/* 点亮第五个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
delay(100);
/* 点亮第六个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
delay(100);
/* 点亮第七个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_RESET);
delay(100);
/* 点亮第八个LED */
HAL_GPIO_WritePin(LED_PORT, LED_PIN, GPIO_PIN_SET);
delay(100);
}
}
```
在这个代码中,我们首先定义了LED灯所连接的引脚,在main函数中初始化了GPIOC时钟,并配置LED引脚为推挽输出。然后在一个无限循环中,不断执行流水灯效果:先点亮第一个LED,等待一段时间后熄灭,然后点亮第二个LED,再等待一段时间后熄灭,以此类推,一直循环下去。
阅读全文