写一个stm32led流水灯程序
时间: 2024-05-24 19:11:19 浏览: 88
以下是一个简单的STM32 LED流水灯程序,使用了HAL库和标准库函数。
首先,在CubeMX中配置GPIO引脚作为输出,并启用HAL库。
然后,在main.c文件中添加以下代码:
#include "main.h"
#include "stm32f1xx_hal.h"
int main(void)
{
HAL_Init();
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
while (1)
{
HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
HAL_Delay(500);
}
}
这个程序将GPIOC13设置为输出,然后在无限循环中将其切换。每次切换时,LED将在500ms内闪烁。
如果想要实现流水灯效果,可以使用以下代码:
#include "main.h"
#include "stm32f1xx_hal.h"
int main(void)
{
HAL_Init();
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
int delay_time = 100;
while (1)
{
for (int i = 0; i < 5; i++)
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(delay_time);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(delay_time);
}
for (int i = 0; i < 5; i++)
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
HAL_Delay(delay_time);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
HAL_Delay(delay_time);
}
}
}
这个程序使用了两个for循环,每个循环都会使LED向一个方向移动5次,并在每个移动时延迟指定的时间。
阅读全文