怎樣通過庫函數操作stm32f407上的按鍵去亞搏手機版app下載LED小燈以及蜂鳴器的控制呢?今天我要通過庫函數操作亞搏手機版app下載stm32f407上的按鍵實現控制LED小燈以及蜂鳴器,亞搏手機版app下載實現的功能如下: 亞搏手機版app下載這篇文章同時會涉及到LED和蜂鳴器,亞搏手機版app下載相當于是對前兩次的學習進行一個復習,亞搏手機版app下載可能在前兩篇文章中沒有考慮到的細節今天都會盡量考慮進去,亞搏手機版app下載希望這篇文章可以更好的幫助到大家對GPIO的理解,廢話不多說,亞搏手機版app下載下面正式開始。
LED的初始化配置
通過庫函數來配置GPIO,亞搏手機版app下載我們需要用到的庫函數是GPIO_Init,亞搏手機版app下載對于這個函數,有如下的說明:
void GPIO_Init(GPIO_TypeDef* GPIOx,
GPIO_InitTypeDef* GPIO_InitStruct);
從GPIO_Init的函數原型可以看出,亞搏手機版app下載需要用到兩個參數,這兩個參數分別是:
GPIO_TypeDef* GPIOx:亞搏手機版app下載用來指明配置的GPIO是7組GPIO中的哪一組,亞搏手機版app下載這里控制LED用到的是GPIOF,所以亞搏手機版app下載該參數只需填入宏定義GPIOF即可
GPIO_InitTypeDef* GPIO_InitStruct:亞搏手機版app下載從參數名字就可以知道這個參數是一個結構體的地址,所以在這里為了更好的說明,亞搏手機版app下載我們自定義一個結構體:
GPIO_InitTypeDef led_gpio;
該結構體亞搏手機版app下載的成員呢有以下幾個:
uint32_t GPIO_Pin; //亞搏手機版app下載該參數對應的是某組GPIO中的某一個,畢竟一組GPIO有16個GPIO引腳
亞搏手機版app下載就如前面說到控制LED0的GPIO口是GPIOF_9;控制亞搏手機版app下載LED1的GPIO口是GPIOF_10;
下面這幾個參數我就放到正文里細說吧
GPIOMode_TypeDef GPIO_Mode;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOOType_TypeDef GPIO_OType;
GPIOPuPd_TypeDef GPIO_PuPd;
GPIO_InitStruct的后面亞搏手機版app下載4個參數就是用于配置GPIO模式寄存器的,亞搏手機版app下載我在第一篇文章里說到,亞搏手機版app下載配置GPIO的模式需要用到4個寄存器,如果你亞搏手機版app下載沒有看過我的第一篇文章的話,沒有關系,亞搏手機版app下載我再來詳細的說明一下:亞搏手機版app下載這里說到的寄存器分別是:
GPIOx_MODER:GPIO端口模式寄存器
GPIOx_OSPEEDR:GPIO端口輸出速度寄存器
GPIOx_OTYPER:GPIO端口輸出類型寄存器
GPIOx_PUPDR:GPIO端口上拉/下拉寄存器
分別對應著亞搏手機版app下載GPIO_InitStruct的后四個成員
下面我就來具體說說要控制LED,亞搏手機版app下載這4個GPIOF分別需要怎么配置:
>GPIOF_MODER
GPIOF_MODER 亞搏手機版app下載寄存器可選的配置分別有:輸入模式(復位狀態),亞搏手機版app下載通用輸出模式,復用功能模式,亞搏手機版app下載模擬模式,這里很容易想到,我們亞搏手機版app下載要向控制LED0,需要通過亞搏手機版app下載GPIOF_9輸出高電平或低電平,所以毫無疑問我們需要將亞搏手機版app下載GPIOF_MODER寄存器配置成通用輸出模式,對于亞搏手機版app下載該寄存器的四種模式在庫函數中有如下的說明: