学习stm32已经很长时间了,打算把以前做过的一些小东西整理一下,写出来,以输出倒逼输入,让自己知道有哪些东西是一知半解的。

首先是led.h文件

#ifndef __LED_H
#define __LED_H

void led_init(void);


#endif

前两行和最后一行是一个框架,防止头文件被重复加载

然后是led.c文件

#include "led.h"
#include "stm32f10x.h"    //库函数头文件


void led_init(void)
{
    GPIO_InitTypeDef GPIO_Ini;   //C语言声明要放在最前面

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //首先要调用该函数使能IO口的时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);


    GPIO_Ini.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_Ini.GPIO_Pin=GPIO_Pin_5;
    GPIO_Ini.GPIO_Speed=GPIO_Speed_50MHz;


    GPIO_Init(GPIOB,&GPIO_Ini);        //第二步初始化IO口的模式,比如是输入还是输出等等
    GPIO_SetBits(GPIOB,GPIO_Pin_5);    //最后操作IO口输出高低电平

    GPIO_Init(GPIOE,&GPIO_Ini);
    GPIO_SetBits(GPIOE,GPIO_Pin_5);

}

最后是main文件

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"



int main()
{
    delay_init();
    led_init();

    while(1)
    {
        GPIO_SetBits(GPIOB,GPIO_Pin_5); //设置为高电平
        GPIO_SetBits(GPIOE,GPIO_Pin_5);
        delay_ms(500);                  //延时函数可以采用小工具自动生成
        GPIO_ResetBits(GPIOB,GPIO_Pin_5);  //设置为低电平
        GPIO_ResetBits(GPIOE,GPIO_Pin_5);
        delay_ms(500);
    }
}
02-12 02:48