CH32F103C8T6GPIO操作函数(控制LED闪烁)
#include "ch32f10x.h"
void gpio_init(void );
void LED_1(uint8_t a);
void LED_2(uint8_t a);
void delay_us(u16 time);
void delay_ms(u16 time);
int main()
{
gpio_init();
while(1)
{
LED_1(1);
LED_2(1);
delay_ms(500);
LED_1(0);
LED_2(0);
delay_ms(500);
}
}
void gpio_init(void )
{
GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );//使能APB2时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推挽输出模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度
GPIO_Init( GPIOA, &GPIO_InitStructure );
}
void LED_1(uint8_t a)//a to be define 0(off) or 1(on) Using for LED1
{
if(a)GPIO_SetBits( GPIOA, GPIO_Pin_0);
else GPIO_ResetBits(GPIOA, GPIO_Pin_0);
}
void LED_2(uint8_t a)//a to be define 0(off) or 1(on) Using for LED2
{
if(a)GPIO_SetBits( GPIOA, GPIO_Pin_1);
else GPIO_ResetBits(GPIOA, GPIO_Pin_1);
}
//粗延时函数,微秒
void delay_us(u16 time)
{
u16 i=0;
while(time--)
{
i=10; //自己定义
while(i--) ;
}
}
//毫秒级的延时
void delay_ms(u16 time)
{
u16 i=0;
while(time--)
{
i=12000; //自己定义
while(i--) ;
}
}