(一)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  //復用推完輸出

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM