用STM32F103R6芯片完成16个LED灯从下往上依次点亮,从下往上依次熄灭。
时间: 2023-05-16 18:06:42 浏览: 62
以下是用STM32F103R6芯片完成16个LED灯从下往上依次点亮,从下往上依次熄灭的代码:
#include "stm32f10x.h"
int main(void)
{
// 初始化GPIO口
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
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_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// 点亮LED灯
for (int i = 0; i < 16; i++) {
GPIO_SetBits(GPIOB, GPIO_Pin_0 << i);
delay_ms(500);
}
// 熄灭LED灯
for (int i = 15; i >= 0; i--) {
GPIO_ResetBits(GPIOB, GPIO_Pin_0 << i);
delay_ms(500);
}
while (1);
}
// 延时函数
void delay_ms(uint32_t ms)
{
for (volatile uint32_t i = 0; i < ms * 1000; i++);
}