stm32f103zet6库函数led跑马灯
时间: 2023-09-09 19:10:26 浏览: 79
stm32的led跑马灯
3星 · 编辑精心推荐
下面是基于STM32F103ZET6芯片的库函数实现LED跑马灯的代码,其中PA8、PA9、PA10、PA11引脚接了4个LED灯,通过轮流点亮实现跑马灯效果。
```c
#include "stm32f10x.h"
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能GPIOA时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11; // 设置GPIO引脚
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置GPIO为推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置GPIO输出速率为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); // 初始化GPIOA
while (1)
{
GPIO_ResetBits(GPIOA, GPIO_Pin_8); // LED1亮
GPIO_SetBits(GPIOA, GPIO_Pin_9); // LED2灭
GPIO_SetBits(GPIOA, GPIO_Pin_10); // LED3灭
GPIO_SetBits(GPIOA, GPIO_Pin_11); // LED4灭
Delay(1000); // 延时
GPIO_ResetBits(GPIOA, GPIO_Pin_9); // LED1灭
GPIO_SetBits(GPIOA, GPIO_Pin_10); // LED2亮
GPIO_SetBits(GPIOA, GPIO_Pin_11); // LED3灭
GPIO_SetBits(GPIOA, GPIO_Pin_8); // LED4灭
Delay(1000); // 延时
GPIO_ResetBits(GPIOA, GPIO_Pin_10); // LED1灭
GPIO_SetBits(GPIOA, GPIO_Pin_11); // LED2灭
GPIO_SetBits(GPIOA, GPIO_Pin_8); // LED3亮
GPIO_SetBits(GPIOA, GPIO_Pin_9); // LED4灭
Delay(1000); // 延时
GPIO_ResetBits(GPIOA, GPIO_Pin_11); // LED1灭
GPIO_SetBits(GPIOA, GPIO_Pin_8); // LED2灭
GPIO_SetBits(GPIOA, GPIO_Pin_9); // LED3灭
GPIO_SetBits(GPIOA, GPIO_Pin_10); // LED4亮
Delay(1000); // 延时
}
}
void Delay(__IO uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
```
上述代码中,使用了`GPIO_ResetBits()`和`GPIO_SetBits()`函数来设置GPIO引脚的电平状态。`Delay()`函数用来实现延时。在主函数中,通过不断轮流点亮4个LED灯来实现跑马灯效果。
阅读全文