沁恒CH32V103C8T6点亮LED
流水灯逻辑图:初始化GPIO引脚--红绿蓝三灯同时亮--延时--亮红灯,灭蓝灯--延时--亮绿灯,灭红灯--延时--亮蓝灯,灭绿灯--延时
步骤:
1.使能GPIOB端口时钟。
2.配置LED引脚为推挽输出,最高输出频率为50MHz。
3.设置GPIO引脚电平,低电平点亮LED灯,高电平熄灭LED灯。
在程序中新建bsp文件,然后在bsp文件夹下新建bsp_gpio.c文件和bsp_gpio.h文件。
配置bsp_gpio.c文件:
#include "ch32v10x.h"
//LED IO初始化
void Bsp_Gpio_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//使用PB端口时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;//端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度
GPIO_Init(GPIOB, &GPIO_InitStructure);//根据设定参数初始化GPIO
GPIO_SetBits(GPIOB,GPIO_Pin_3);
GPIO_SetBits(GPIOB,GPIO_Pin_4);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
配置bsp_gpio.h文件:
#ifndef _BSP_GPIO_H
#define _BSP_GPIO_H
#include "ch32v10x.h"
void Bsp_Gpio_Init(void);
#endif
在main.c文件中包含gpio.h文件。并写下流水灯代码:
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
Bsp_Gpio_Init();
printf("SystemClk:%d\r\n",SystemCoreClock);
printf("This is printf example\r\n");
while(1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_5);
GPIO_ResetBits(GPIOB, GPIO_Pin_3);
Delay_Ms(1000);
GPIO_SetBits(GPIOB, GPIO_Pin_3);
GPIO_ResetBits(GPIOB, GPIO_Pin_4);
Delay_Ms(1000);
GPIO_SetBits(GPIOB, GPIO_Pin_4);
GPIO_ResetBits(GPIOB, GPIO_Pin_5);
Delay_Ms(1000);
}
}
页:
[1]