該微控制器在gpio功能方面有以下特點:
(1)4種輸入模式:
gpio_mode_ain 模擬輸入
gpio_mode_in_floating 浮空輸入
gpio_mode_ipd 下拉輸入
gpio_mode_ipu 上拉輸入
(2)4種輸出模式:
gpio_mode_out_od 開漏輸出
gpio_mode_out_pp 推挽輸出
gpio_mode_af_od 復用開漏輸出
gpio_mode_af_pp 復用推挽輸出
(3)4種最大輸出速度:2mhz,25mhz,50mhz,100mhz
圖為該微控制器晶元的io口對應的結構圖:
平時接觸比較多的有:推挽輸出,開漏輸出,上拉輸入。
推挽輸出和開漏輸出的區別:
推挽輸出可以輸出高電平和低電平,因為推挽結構是由兩個三極體實現的,兩隻對稱的功率開關管子每次只導通乙個。因此輸出既可以向負載灌電流,也可以從負載抽取電流。
開漏輸出因為輸出端只有集電極,只可輸出低電平,所以如果想要輸出高電平,需要同時使用上拉電阻,但是這也意味著只要改變上拉電源電壓便可以改變輸出電平。
以下為使用io口時的模式選擇情況:
1.浮空輸入-in_floating,用的還不多,可以在識別key時候使用(因為key也是邏輯電平)
2.帶上下拉輸入_ipu/_ipd,根據實際情況隨意選擇
3.模擬輸入_ain,可用於模數轉換中(adc)模擬電平的輸入
4.開漏輸出 _out_od,可以輸出為0,要想輸出為1,要接上拉電阻。可以讀取io輸入電平變化
5.推挽輸出_out_pp,可以輸出0,1,相當於gnd,vcc
6.復用功能的推挽/開漏輸出 _af_pp/_af_od,輸出時候使用片外設功能
注意:如果為無上拉電阻,io預設高電平;可以用上拉輸入,浮空輸入和開漏輸出讀取電平
通常有5種方式使用引腳功能,配置方式如下:
(1)普通情況下gpio輸入:浮空輸入,上下拉輸入,同時不使用引腳復用功能
(2)普通情況下gpio輸出:推挽開漏輸出,不要使用復用功能
(3)gpio模擬輸入:引腳為模擬輸入模式,不要使用復用功能
(4)內建外設的輸入:在(1)基礎上使能復用功能
(5)內建外設輸出:在(2)的基礎上使能復用功能
注意:如果有多個復用功能對應同乙個引腳,比如經過查詢原理圖知道
pb0io口可以復用為定時器一的ch2n通道(即二號高階通道),定時器三的ch3通道等,在程式設計之後的執行時,只使這個引腳實現這些功能的一種。
以官方跑馬燈實驗庫函式版本為例:
其框架排布如下:
由於是筆記的第一篇,因此對框架作解釋:
為啦方便查詢,keil的框架和實際資料夾的框架保持一致。
首先是user資料夾,其中包括主檔案,和兩個官方檔案
hardware檔案一般用來配置引腳以實現外設功能,如本文通過io口輸出高低電平來實現燈的亮滅
system檔案包含系統檔案,和引腳的功能有關,如圖中的sys是時鐘方面的,delay是延時函式方面的,usart為串列埠通訊方面的(這裡其實不用的)
core檔案中只有乙個檔案,但是必須要有
fwilb檔案中為官方庫,配置gpio以及復用功能的庫函式的宣告和定義以及一些變數和結構體的巨集定義都在裡面。
在配置好框架後,我們主要負責兩個地方:主檔案和led.c檔案
首先是hardware中的led檔案:
#ifndef __led_h
#define __led_h
#include
"sys.h"
//這裡不一定要包含這個檔案,但是led.c中必須包含
void
led_init
(void);
#endif
//與開頭的#ifndef對應
以下為led.c配置檔案
#include
"led.h"
void
led_init
(void
)
由原理圖可知led外設的結構,當對應埠輸出低電平時,燈亮,當埠輸出高電平,燈不亮
因此我們可以在led_init()末尾加這樣一句話來確保剛開始時候燈是滅的
gpio_setbits
(gpiof, gpio_pin_9|gpio_pin_10)
;
下邊是主檔案的**
#include
"sys.h"
#include
"delay.h"
#include
"usart.h"
#include
"led.h"
intmain
(void
)}
—————————————————————————————
輸入例項(因為上邊這個例項是輸出)
按鍵輸入例項:(僅看初始化部分即可)
//檢測引腳輸入電平的函式
else
if(key0==
1&&key1==
1&&key2==
1&&wk_up==
0)key_up=1;
return0;
}
stm32學習筆記 GPIO
2011 03 06 15 10 stm32基本上每個引腳都有8種配置模式 浮空輸入 帶弱上拉輸入 帶弱下拉輸入 模擬輸入 推挽輸出 開漏輸出 復用推挽輸出 復用開漏輸出 通常有5種方式使用某個引腳功能,它們的配置方式如下 1 作為普通gpio輸入 根據需要配置該引腳為浮空輸入 帶弱上拉輸入或帶弱下...
stm32學習筆記之GPIO配置
1 gpio mode ain 模擬輸入 2 gpio mode in floating 浮空輸入 3 gpio mode ipd 下拉輸入 4 gpio mode ipu 上拉輸入 5 gpio mode out od 開漏輸出 6 gpio mode out pp 推挽輸出 7 gpio mod...
STM32學習筆記之GPIO 三
首先從最簡單的角度介紹gpio是什麼東西。首先gpio最基本 最簡單的作用是我們可以通過程式設計的方式讓它作輸入或者輸出,而輸入 輸出的形式為高低電平 通常0v為低電平,3.3v為高電平 要讓gpio作輸入或者輸出,首先就需要對io口相關的暫存器進行配置。先介紹一下什麼是暫存器,暫存器是 處理器內的...