(一)stm32f103~~GPIO基本操作一(led灯)

GPIO基本操作,如果更换IO口只需要更换端口设置即可


 

led.h文件

#ifndef __LED_H

#ifndef __LED_H

#define __LED_H

#include "sys.h"

#define LED0_PIN           GPIO_Pin_5

#define LED0_PORT       GPIOB

#define LED1_PIN           GPIO_Pin_5

#define LED1_PORT       GPIOE

#define LED0_ON        GPIO_ResetBits(LED0_PORT,LED0_PIN)  //LED0对应引脚GPIOB.5拉低,亮

#define LED0_OFF      GPIO_SetBits(LED0_PORT,LED0_PIN)  //LED0对应引脚GPIOB.5拉高,灭

#define LED1_ON        GPIO_ResetBits(LED1_PORT,LED1_PIN)  //LED1对应引脚GPIOE.5拉低,亮

#define LED1_OFF      GPIO_SetBits(LED1_PORT,LED1_PIN)   //LED1对应引脚GPIOE.5拉高,灭

void led_init(void);  //初始化led的GPIO端口

#endif


LED.C文件

#include"led.h"

#include"stm32f10x.h"  //只要调用库函数,就需要添加此头文件

void led_init(void)

{

  GPIO_InitTypeDef  GPIO_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Pin = LED0_PIN; 

  GPIO_Init(LED0_PORT, &GPIO_InitStructure); 

  GPIO_InitStructure.GPIO_Pin = LED1_PIN;   

  GPIO_Init(LED1_PORT, &GPIO_InitStructure);

  LED0_OFF; //端口初始化完成后,关闭两个小灯

  LED1_OFF;

}


 

main文件

#include "stm32f10x.h"

#include "delay.h"//从跑马灯就需要使用该头文件

#include "led.h"  //跑马灯需要的头文件

int main(void)

{

    delay_init();   //初始化延时函数

    led_init();         //初始化LED端口

    while(1)

    {

        LED0_OFF;

        LED1_ON;

        delay_ms(1500); 

        LED0_ON;

        LED1_OFF;

        delay_ms(1500); 

    }

}


 

这里是库函数底层结构

RCC_APB2PeriphClockCmd():主要是用于打开端口时钟的,主要有2个参数

        RCC_APB2Periph_GPIOB;//对用端口需要打开的始终,如果是多个端口,可以使用"  | "或符号一起使用

        DISABLE ;     DISABLE;//失能   或者使能

GPIO_InitTypeDef定义的gpio初始化的结构体主要有三个参数

        GPIO_Pin; //GPIO的端口号

        GPIO_Speed;//GPIO的速度,可选参数为

                GPIO_Speed_10MHz = 1,

                GPIO_Speed_2MHz,

                GPIO_Speed_50MHz;

        GPIO_Mode//GPIO的可选模式,可选参数

                GPIO_Mode_AIN = 0x0, //模拟输入,主要用于ADC

                GPIO_Mode_IN_FLOATING = 0x04,//浮空输入,主要用于按键检测

                GPIO_Mode_IPD = 0x28,  //Ï下拉输入

                GPIO_Mode_IPU = 0x48,  //上拉输入

                GPIO_Mode_Out_OD = 0x14, //开楼输出

                GPIO_Mode_Out_PP = 0x10,  //通用推完输出

                GPIO_Mode_AF_OD = 0x1C, //复用开漏输出

                GPIO_Mode_AF_PP = 0x18  //复用推完输出

 

posted @ 2018-09-23 23:07  大黄蜂_001  阅读(6089)  评论(0编辑  收藏  举报