STM32教程(五)HAL庫之GPIO函數及實例詳細介紹!

2020-12-06 電子攻城獅

今天介紹STM32 HAL庫的GPIO函數庫,首先打開stm32f4xx_hal_gpio.h文件,我們能看到一些結構體定義以及GPIO引腳的地址定義等等,

這些都很好理解,我們需要重點看HAL庫中GPIO的函數庫有哪些?以及這些函數庫有什麼作用以及怎麼使用這些函數?我們找到有以下8個函數

void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);

void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);

GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

下面我們逐一介紹這8個函數:

1、void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);

這個函數我們在stm32f4xx_hal_gpio.c文件中找到它的實體,可以很清楚的看到它的解釋(不過是英文,需要點英文基礎,不過有不認識的單詞可以自己使用工具去翻譯),這個函數主要用來初始化我們需要用到的引腳的工作模式,包括具體引腳的工作速度、是否復用模式、上下拉等等參數。

2、void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);

這個函數的主要功能是將我們在1函數初始化之後的引腳恢復成默認的狀態,即各個寄存器復位時的值。這個函數比較容易理解。

3、GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

這個函數主要功能是讀取我們想要知道的引腳的電平狀態、函數返回值為0或1。

4、void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

這個函數從字面意思來看就是給某個引腳寫0或1,但是不要理解成,寫1就是使能之類的意思,有些寄存器寫1是擦除的意思,這一點要謹記。

5、void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

這個函數用來翻轉某個引腳的電平狀態,我用的最多的場合是LED燈的翻轉,也就是LED閃爍,哈哈。

6、HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);

這個函數看函數名稱就是鎖住的意思,比如說一個管腳的當前狀態是1,讀管腳值使用鎖定,當這個管腳電平變化時保持鎖定時的值。

7、void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);

這個函數是外部中斷服務函數,用來響應外部中斷的觸發,函數實體裡面有兩個功能,1是清除中斷標記位,2是調用下面8要介紹的回調函數。很好理解,我們學習51單片機的時候肯定用過中斷服務函數。

8、void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);

這個函數是中斷回調函數,可以理解為中斷函數具體要響應的動作。

以上就是關於STM32 HAL庫GPIO的函數的介紹。

基於之前的教程的模板,我只要在while(1)裡面添加一句代碼就可以實現點亮LED了。

我只需要調用HAL_GPIO_WritePin()函數,填好參數就可以了。

HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET);

至此,關於STM32 HAL庫GPIO的介紹就先告一段落了,下期講STM32的啟動過程,即STM32是怎麼從上電一直運行到main()函數裡的。

相關焦點

  • STM32學習筆記——使用函數庫編程控制GPIO口輸出
    看了網上許多人的代碼以及各類開發板所帶的例程,大多數使用的都是官方發布的函數庫來編程,通過查詢後發現,使用函數庫來編程可以簡化開發過程,並不需要追溯到各個寄存器,通過查看庫手冊,新手也可以快速應用STM32,因此
  • 嵌入式Linux設備驅動開發之:GPIO驅動程序實例
    在表11.15中,詳細描述了GPF的主要控制寄存器。GPB的相關寄存器的描述與此類似,具體可以參考S3C2410處理器數據手冊。在下一個小節中介紹的驅動程序中,s3c2410_gpio_cfgpin()函數和s3c2410_gpio_pullup()函數將進行對某個埠的配置,而s3c2410_gpio_setpin()函數實現向數據寄存器的某個埠的輸出。
  • stm32庫函數學習篇通用定時器輸入捕獲功能
    本文引用地址:http://www.eepw.com.cn/article/201611/318488.htm先有必要了解stm32定時器的輸入觸發模塊,如下圖:比如TIM_ITConfig()函數中如下:void TIM_ITConfig(TIM_TypeDef *TIMx,uint16_tTIM_IT,FunctionalStateNewState)
  • STM32四種庫對比:寄存器、標準外設庫、HAL、LL
    https://www.st.com/en/embedded-software/stm32snippets.html (公號不支持外連結,請複製連結到瀏覽器打開) 相信學習過STM32的朋友,對標準外設庫都不陌生,是一組外圍設備的C語言代碼集合。
  • Excel實例教程:利用SUMPRODUCT函數根據條件求和
    Excel實例教程:利用SUMPRODUCT函數根據條件求和(視頻教程點下方文字連結)Excel實例教程:利用SUMPRODUCT函數根據條件求和>根據條件求和函數SUMPRODUCT函數:SUMPRODUCT( )功能:在指定的單元格區域中,計算符合給定條件單元格的總和。
  • GPIO相關寄存器配置詳解
    一、寄存器介紹(詳見中文參考手冊7.4):每組GPIO下面包含10個寄存器。也就是10個寄存器,一共可以控制一組GPIO的16個IO口。最多7組IO,也就是70個寄存器。----------------------------------------------------------------------------------------------------------------------------------注意:如果在配置IO的寄存器前一定要先配置時鐘的寄存器,與庫函數版本一樣
  • MIO與EMIO的關係解析 GPIO、MIO、EMIO的區別
    s32 XGpioPs_CfgInitialize(XGpioPs *InstancePtr, XGpioPs_Config *ConfigPtr, u32 EffectiveAddr); 這個函數初始化gpio,第一個參數需要一個XGpioPs的結構體指針,直接在函數開頭實例化就好了,結構體的組成在.h文件。
  • 未來函數檢測的詳細教程
    各位朋友下午好,今天來給大家講講通達信的未來函數的檢測教程,許多朋友都在使用指標公式,但談到「未來函數」便心生恐懼,下面我便帶來通達信指標未來函數的詳細檢測方法。3.在公式管理器中,選擇公式組中的技術指標公式,在技術指標公式中選擇其他類型4.在其他類型裡找到你想做未來函數檢測的指數公式。5.找到並打開未來函數檢測工具6.雙擊打開指數公式,並複製公式代碼。7.將複製的公式代碼粘貼到未來函數檢測工具裡。
  • 使用STM32 的DSP庫進行FFT變換
    * 使用三角函數生成採樣點,供FFT計算* 進行FFT測試時,按下面順序調用函數即可:* dsp_asm_init();* dsp_asm_test();*/#include "stm32f10x.h"#include "dsp_asm.h"#include "stm32_dsp.h"#include "table_fft.h"
  • stm32單片機中使用GPIO口模擬PWM輸出解析
    gpio   General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,或總線擴展器,人們利用工業標準I2C、SMBus或SPI接口簡化了I/O口的擴展。當微控制器或晶片組沒有足夠的I/O埠,或當系統需要採用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。
  • Excel Replace函數與ReplaceB函數的使用方法,含7個替換實例
    以下是 Excel Replace函數與ReplaceB函數的使用方法,總共有7個實例,分別為把單槓替換為雙槓,替換姓名中間一個字,把部分數字替換為星號*,替換某個字後的所有字符,替換一段字符中間指定個字符、替換數字、字母和特殊字符和替換單字節與雙字節,實例操作所用版本均為 Excel 2016。
  • 13個基於STM32的經典項目設計實例,全套資料~
    STM32單片機現已火遍大江南北,各種教程資料也是遍布各大網站論壇,可謂一抓一大把,但大部分都差不多。今天總結了幾篇電路城上關於STM32 的製作,不能說每篇都是經典,但都是在其他地方找不到的,很有學習參考意義的設計實例。尤其對於新手,是一個學習stm32單片機的“活生生”的範例。
  • Python 繪圖庫 Matplotlib 入門教程
    scatter函數的詳細說明參見這裡:matplotlib.pyplot.scatter餅狀圖pie函數用來繪製餅狀圖。pie函數的詳細說明參見這裡:matplotlib.pyplot.pie條形圖bar函數用來繪製條形圖。
  • 教程| pandas輕鬆入門 之 數據結構介紹 1
    pandas經常和其它工具一同使用,如數值計算工具NumPy和SciPy,分析庫statsmodels和scikit-learn,和數據可視化庫matplotlib。pandas是基於NumPy數組構建的,特別是基於數組的函數和不使用for循環的數據處理。雖然pandas採用了大量的NumPy編碼風格,但二者最大的不同是pandas是專門為處理表格和混雜數據設計的。
  • 基於STM32的OV7670攝像頭總結
    一、OV7670模塊:本文引用地址:http://www.eepw.com.cn/article/201709/364999.htm  介紹一下OV7670傳感器:CMOS器件;標準的SCCB接口,兼容IIC接口;內置感光陣列,時序發生器,AD轉換器,模擬信號處理,數位訊號處理器.
  • Python零基礎入門教程,如何使用函數?
    大綱函數語法格式及調用參數:默認值、元組和字典可變參數的使用全局變量和局部變量作用域,局部變量如何升級為全局變量函數是可重複使用的,實現單一功能的代碼塊。可以把項目中某一功能想像成積木模型,函數是組成模型的大大小小積木塊。
  • RStudio介紹及入門
    在忙完了畢業之後,終於有時間可以抽空寫R語言系列的教程啦!那今天就請Ten years old詳細講解一下,RStudio介紹及入門。1 函數R是一種解釋性的語言,直接在命令窗格輸入語句就可以執行,語句功能多通過函數實現。R語言中的函數基本形式:函數(輸入數據,參數=)。
  • python機器學習:常用庫的介紹及安裝
    2、如果安裝了Anaconda後發現還有一些需要安裝的庫怎麼辦?這個時候可以通過Anaconda的DOS界面來安裝(可以通過「開始->所有程序->Anaconda下面找到Anaconda Prompt後單機打開即可),具體安裝命令是pip install + 你要安裝的庫名稱。
  • 大數據分析Python NumPy庫使用教程
    NumPy(Numerical Python) 是 Python 語言的一個擴展程序庫,支持大量的維度數組與矩陣運算,此外也針對數組運算提供大量的數學函數庫。