IO接口
一個(gè)圖連帶著復(fù)習(xí)下微機(jī)和數(shù)電.

基本上所有的STM32的GPIO都長這樣,最外面是保護(hù)二極管和上下拉電阻(可控),然后連輸入驅(qū)動(dòng)器和輸出驅(qū)動(dòng)器.
4個(gè)輸入模式:
a.模擬輸入 信號(hào)直接走analog那一支,只有在當(dāng)前引腳配置成ADC的時(shí)候使用.
b.上拉輸入 上拉電阻打開,輸入信號(hào)走schmitt觸發(fā)器進(jìn)來.對于按鍵檢測功能,如果沒有輸入為高電平,有輸入會(huì)拉低.
c.下拉輸入 和上拉相反,下拉電阻打開.輸入信號(hào)也是走schmitt觸發(fā)器進(jìn)來.對于按鍵檢測功能,如果沒有輸入為低電平,有輸入會(huì)拉高.
d.浮空輸入 上拉電阻和下拉電阻全部關(guān)閉,輸入信號(hào)直接是走schmitt觸發(fā)器進(jìn)來,電壓是不確定的,用于UART等串行通信.
4個(gè)輸出模式
推拉輸出 開漏輸出?復(fù)用推拉輸出 復(fù)用開漏輸出
推拉輸出:兩個(gè)MOS管都工作,直接出高電平/低電平.驅(qū)動(dòng)能力一般.
復(fù)用功能:SPI,PWM,SDIO等
開漏輸出:和OC門類似.只有NMOS管工作(注意PMOS上那個(gè)大叉),不能直接出高電平/低電平,需要配合外面的上拉電阻工作,輸出電平可調(diào),負(fù)載能力也可調(diào).自帶"線與".用于IIC等.
復(fù)用功能:IIC
STM32程序(HAL)庫用法:不同的硬件可能有差異,下面給的是針對STM32H7的HAL庫
先查表確定復(fù)用功能,如果要復(fù)用就在GPIO_InitTypeDef結(jié)構(gòu)里面填上復(fù)用的功能(IIC/SPI/UART/TIM/...)并配置成"復(fù)用推拉輸出".IIC注意是復(fù)用開漏輸出.如果是普通輸出就填GPIO_MODE_OUT_PP(推拉輸出)或者GPIO_MODE_OUT_OD(開漏輸出).如果是按鍵根據(jù)原理圖配置上拉輸入或者下拉輸入,也可同時(shí)綁定外部中斷.
Speed點(diǎn)成高速(IIC的點(diǎn)成低速).
Pull根據(jù)需求打開上拉或者下拉或者關(guān)閉.
Pin是初始化的引腳.可以用位運(yùn)算一次初始化一堆引腳.
舉個(gè)栗子
把E13,E14,E15,E12配置成推拉輸出
或者是配置IIC的回調(diào)函數(shù) 把B8,B9復(fù)用成I2C1.把B10,B11復(fù)用成I2C2