STM32 GPIO的深度了解 功能鎖存函式

2021-09-25 15:19:25 字數 2169 閱讀 7334

stm32的開發學習主要涉及軟硬體兩個部分的實現,包含眾多外設和匯流排的理解配置。stm32的整個學習曲線並不陡峭,但入門卻相當困難,因此在學習之初,多動手實驗和測試相當重要,gpio作為整個stm32與外部連線的埠,難度不高,卻十分重要。從深入解析gpio外設開始,一步步熟悉掌握stm32各個模組,就是stm32的整個學習流程。

gpio模組回顧

在嵌入式軟體開發中,幾乎所有功能的實現都需要gpio埠輸出才能發揮作用。gpio埠的操作包括時鐘使能,暫存器配置,埠資訊修改。這些基礎的東西上一章已經講過,我這裡就不在細說,我這裡主要講gpio涉及到的其它庫函式。

1. 讀取gpio埠資料函式

gpio_readinputdatabit(gpiox,gpio_pin_y);//讀取單個輸入埠的資料

gpio_readinputdata(gpiox);//讀取整個輸入埠的資料

gpio_readoutputdatabit(gpiox, gpio_pin_y);//讀取單個輸出埠的資料

gpio_readoutputdata (gpiox);//讀取整個輸入出埠的位資料

這4個庫函式是用來直接讀取埠資料的,其中x:a-g y: 0~15

上面的函式實現的是讀取當前gpio口或位的輸入輸出資料,庫函式沒有什麼可說的。

但這幾個函式涉及到下面兩個暫存器:

埠資料輸入暫存器(gpioa_idr~gpiog_idr);

埠資料輸出暫存器(gpioa_odr~gpiog_odr);

這兩個暫存器都是16位的,高16位保留,讀取值為0,低16位代表著對應gpio埠位[15:0]的狀態,偏移值位0ch,具體位址可參考暫存器表。上面的庫函式讀取data就是讀取這兩個暫存器中選定那個的低16位,讀取databit就是讀取選定暫存器16位中的任意選定位。

2 . 寫入gpio埠資料函式

gpio_writebit(gpiox, gpio_pin_y,bit_set/bit_reset);//置位或者復位單個輸出埠的資料

gpio_write(gpiox, 0x1111);//置位或者復位整個輸出埠的資料

其中x:a-g y: 0~15

這兩個函式是對gpio_setbits和gpio_resetbits的補充,可以滿足對多個埠同時設定狀態的特性。

埠復位置位暫存器(gpioa_bsrr~gpiog_bsrr) ,32bit復位置位暫存器,w(只寫,下同),

[31~16]寫0無效,寫1對應gpiox_odr位置0

[15~0]寫0無效,寫1對應gpiox_odr位置1

埠復位暫存器(gpioa_brr~gpiog_brr),32bit復位暫存器w

高16位保留,低16位

[15~0]寫0無效,寫1對應gpiox_odr位置0 若gpiox_brr和gpiox_bsrr同時設定,以gpiox_bsrr為準。

3. gpio功能鎖存函式

gpio_pinlockconfig(gpiox, gpio_pin_y);//鎖存選擇埠配置暫存器的對應位

埠鎖存暫存器(gpioa_lckr~gpiog_lckr),32bit暫存器,高16位保留,低16可隨時讀出,1代表對應配置位被啟用鎖存,0代表可以被啟用,啟用是有固定的寫入順序的。鎖存是不能亂用的,如果鎖存了乙個埠的功能暫存器,那麼在下次系統復位前,埠的功能就不可更改,這在某些情況下是有利的,特別是在程式中如果重新定義某些gpio口的功能時,在確定其中某一gpio埠在整個系統執行中狀態保持不變,鎖存就避免誤修改,但是如果鎖存的gpio在後續的**段中有不同的功能,就會無法修改,產生錯誤。因此鎖存和gpio_structinit, gpio_deinit,gpio_afiodeinit這些初始化函式一樣,使用前要考慮清楚。

4.gpio特殊功能函式

函式gpio_eventoutputconfig(gpio_portsourcegpiox,gpio_pinsourcey);事件輸出。

函式gpio_extilineconfig(gpio_portsourcegpiox, gpio_pinsourcey); 外設埠作為中斷線號輸入

這兩個函式我就不多說了,在exti-nvic中會有詳細解釋。

函式gpio_pinremapconfig(u32gpio_remap, functionalstate newstate);改變指定管腳的對映,很多復用功能的引出腳可以通過重對映,從不同的i/o管腳引出,即復用功能的引出腳位是可通過程式改變的。就是上面庫函式。

STM32GPIO部分介紹

最近在老師交給了乙個專案,需要用到stm32微控制器,這裡就在學習的過程中所注意到的一些地方或細節部分記錄了下來,筆者所使用的是stm32f407zgt6晶元 探索者 檢視晶元的資料手冊 這個 對每個i o口的功能進行了很詳細的介紹。每個i o除了作為i o使用外,還可以作為其他的復用。已以pe2口...

STM32 GPIO模式總結

4種輸入模式 浮空輸入 上拉輸入 下拉輸入 模擬輸入 4種輸出模式 開漏輸出 復用開漏輸出 推挽輸出 復用推挽輸出 3種最大輸出速度 2mhz 10mhz 50mhz 浮空輸入模式 1 外部通過io口輸入電平,外部電平通過上下拉部分 浮空模式下都關閉,既無 上拉也無下拉電阻 2 傳輸到施密特觸發器 ...

STM32 GPIO簡單介紹

2018 3 28 stm32 1.簡單配置暫存器環境 2.ministm32f103rc 51個io口 1.擁有著4組io口 gpioa0 a15 gpiob0 b15 gpioc0 c15 gpiod0 d2 2.gpio的工作方式 四種輸入模式,四種輸出模式 輸入方式 1.輸入浮空模式 由引腳...