17 3 15 關於GPIO學習筆記

2022-04-02 15:13:07 字數 1415 閱讀 3660

1--輸入浮空

2--輸入上拉

3--輸入下拉

4--模擬輸入

5--開漏輸出

6--推挽輸出

7--推挽復用

8--開漏復用

埠配置暫存器(32位,共兩個,crl和crh)

資料暫存器(32位,共兩個,idr和odr)

置位/復位暫存器(32位,乙個,bsrr)

復位暫存器(16位,乙個,brr)

鎖存暫存器(32位,乙個,lckr)

常用的io暫存器只有四個,即crl、crh、idr、odr,他們分別是設定io口工作狀態和輸入/輸出資料的,其中crl和crh共2個32位暫存器控制16個io口的狀態(crl和crh完全一樣,只是crl控制的是低8位輸出口gpio

x(0:7),crh控制的是高八位gpiox(8:15)),,暫存器情況如圖所示:

上圖為crl暫存器,控制低8位狀態,crh類似。

常用的狀態配置:

0x0 模擬輸入模式(adc用)

0x3 推挽輸出模式 (作輸出口用 50mhz速率)

0x8 上/下拉輸入模式 (作輸入口用)

0xb 復用輸出  (作io口的第二功能 50mhz速率)

例子

我們甚至portc的11位位上拉輸入,12位為推挽輸出,**如下

1     gpio->crh&=0xfff00fff;  //

清除原來的設定,不影響其他位

23 gpio->crh|=0x00038000; //

pc11輸入,pc12輸出

45 gpio->odr=1

<<11; //

pc11上拉,idr 輸入資料暫存器,只使用了低16位,唯讀暫存器,同理,odr也只使用了低16位,位可讀寫暫存器。

這樣我們就完成了設定。

另外,idr 輸入資料暫存器,只使用了低16位,唯讀暫存器,同理,odr也只使用了低16位,位可讀寫暫存器。

idr暫存器描述如圖:

就是開啟gpio的時鐘。stm32對每個外設的時鐘都設定了開關,讓使用者可以精確地控制,關閉不需要的裝置,達到節省供電的目的。如果不用的就完全關閉,盡可能降低晶元功耗。

說白了,時鐘的功能就好像是乙個小開關,你要用什麼暫存器就先對應的開啟開關,即:使能對應的時鐘

GPIO學習筆記

用彙編點亮乙個led 1 看原理圖 gpk4 0 led 亮 gpk4 1 led 滅2 怎麼讓 gpk4 輸出高低電平 看晶元手冊,操作暫存器實現 配置功能 輸入 輸出 其他設定其輸出高 低電平3 檢視晶元手冊 gpk4 19 16 0000 input 0001 output 0010 host...

stm32學習筆記 GPIO

2011 03 06 15 10 stm32基本上每個引腳都有8種配置模式 浮空輸入 帶弱上拉輸入 帶弱下拉輸入 模擬輸入 推挽輸出 開漏輸出 復用推挽輸出 復用開漏輸出 通常有5種方式使用某個引腳功能,它們的配置方式如下 1 作為普通gpio輸入 根據需要配置該引腳為浮空輸入 帶弱上拉輸入或帶弱下...

NodeMCU 學習筆記(二)GPIO操作

lua語法 函式 function 函式名 引數 幹活,幹活 return 引數,引數 end條件 if 條件 then 幹活,幹活 else 幹活,幹活 1 點亮乙個led燈,電路如上圖。pin 0 0就是d0 gpio.mode pin,gpio.output gpio.write pin,gp...