一、基于stm32f103系列
二、Proteus仿真图
![](https://img-blog.csdnimg.cn/direct/4a042ecd06624dd49c285c408945b288.png)
三、程序(main.c led.c led.h includes.h)
includes.h 头文件定义;
#include "stm32f10x.h"
#include "vartypes.h"
#include "led.h"
1. main.c
/*main.c */
#include "includes.h"
int main(void)
{
LEDInit ();
while (1)
{
LED(1);
}
}
2. led.h
/*led.h */
#include "vartypes.h"
#ifndef _LED_H //防止头文件重复
#define _LED_H
void LEDInit(void );
void LED(Int08U );
#endif
3. led.c
/*led.c */
void LEDInit(void )
{
//1.定义结构体变量
GPIO_InitTypeDef g;
//2.使能GPIOA组时钟
RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA ,ENABLE );
g.GPIO_Pin =GPIO_Pin_1 ;//配置对应引脚
g.GPIO_Mode =GPIO_Mode_Out_PP ;
g.GPIO_Speed =GPIO_Speed_10MHz ;
GPIO_Init(GPIOA,&g );
}
void LED (Int08U state)
{
if(state==0)
{
GPIO_SetBits(GPIOA ,GPIO_Pin_1);
}else
{
GPIO_ResetBits(GPIOA ,GPIO_Pin_1);
}
}