標(biāo)題:
STM32F103 GPIO學(xué)習(xí)總結(jié)
[打印本頁]
作者:
qinqin
時間:
2015-6-6 21:30
標(biāo)題:
STM32F103 GPIO學(xué)習(xí)總結(jié)
每個通用IO口都有兩個32位的配置寄存器(GPIOx_CRL, GPIOx_CRH),兩個32位的數(shù)據(jù)寄存器 (GPIOx_IDR, GPIOx_ODR), 一個32位的set/reset寄存器 (GPIOx_BSRR),一個16位的reset寄存器(GPIOx_BRR),一個32位的鎖定寄存器(GPIOx_LCKR).
每個general purpose io口都可以獨立配置為以下八種模式的其中一種,浮空輸入,上拉輸入,下拉輸入,模擬輸入,開漏輸出,推挽輸出,復(fù)用開漏輸出,復(fù)用推挽輸出。
每個io口都可以獨立配置,但是寄存器只能32位的訪問,不支持半個字的訪問和位訪問,GPIOx_BSRR和GPIOx_BRR寄存器允許對任何gpio寄存器的讀和修改獨立訪問,這樣,在讀和修改訪問之間產(chǎn)生IRQ時不會有風(fēng)險。
stm32的io口是3.3V的但兼容5V輸入,在3.3V供電的stm32芯片中,要輸出5V電平,只需將io口配置為開漏輸出然后接上拉電阻即可。
復(fù)位后stm32的io口默認(rèn)為浮空輸入模式 (CNFx[1:0]=01b, MODEx[1:0]=00b). JATG管腳為上拉或下拉模式,
PA15: JTDI 上拉 PA14: JTCK 下拉 PA13: JTMS 上拉 PB4: JNTRST 上拉 。
當(dāng)配置為輸出模式時被寫入輸出數(shù)據(jù)寄存器 (GPIOx_ODR) 里的值在管腳上輸出,可能用推挽輸出和開漏輸出(輸出低電平時僅NMOS使能)。
在每個APB2時鐘下 Input Data register (GPIOx_IDR) 捕獲io口的狀態(tài)。
每個GPIO口內(nèi)部有弱上拉電阻和弱下拉電阻,輸入時可選使能。
作者:
cmc987567
時間:
2015-6-7 16:18
謝謝分享,拷走了,
作者:
qinqin
時間:
2015-6-8 01:21
如果配置一個引腳為復(fù)用功能輸出,將斷開輸出寄存器與引腳的連接,并將引腳與片內(nèi)外設(shè)連接。
如果配置一個引腳為復(fù)用功能,但片內(nèi)外設(shè)沒有工作,那么引腳的輸出是不確定的。
IO的重映射:為了使不同封裝的外設(shè)的io功能數(shù)量達到最優(yōu),可以把一些引腳的復(fù)用功能重映射到其他引腳上,這是通過軟件配置相應(yīng)寄存器來實現(xiàn)的。這時原引腳就沒有這些功能了。
GPIO鎖定系統(tǒng):GPIO鎖定系統(tǒng)允許io的配置被凍結(jié),當(dāng)一個端口執(zhí)行鎖定程序,在下一次復(fù)位之前,不能更改端口位的配置。
輸入配置:當(dāng)io口被配置為輸入模式時,輸出緩沖器被禁止,施密特觸發(fā)器輸入使能,內(nèi)部弱上拉電阻和下拉電阻使能或不取決與輸入配置(上拉,下拉,或浮空),每個APB2周期io口的狀態(tài)都會被采樣到 Input Data Register ,訪問 Input Data Register 可以知道io口狀態(tài)。
輸出配置:當(dāng)io口被配置為輸出模式時,開漏模式時輸出0使能NMOS,輸出1將使端口進入高阻抗?fàn)顟B(tài)(PMOS不被激活),施密特觸發(fā)輸入被激活,弱上拉下拉電阻被禁用,每個APB2周期io口的狀態(tài)都會被采樣到 Input Data Register ,訪問 Input Data Register 可以知道io口開漏輸出模式的狀態(tài),訪問 Output Data register可以獲得最后一個在推挽輸出模式輸出的值。
復(fù)用功能配置:當(dāng)io口被配置為復(fù)用功能,開漏輸出和推挽輸出時輸出緩沖器打開,內(nèi)置外設(shè)信號驅(qū)動輸出緩沖器(復(fù)用功能輸出),施密特觸發(fā)輸入使能,弱上拉下拉電阻被禁用,每個APB2周期io口的狀態(tài)都會被采樣到 Input Data Register ,訪問 Input Data Register 可以知道io口開漏輸出模式的狀態(tài),訪問 Output Data register可以獲得最后一個在推挽輸出模式輸出的值。
啟動復(fù)用功能寄存器允許你將復(fù)用放入功能映射到其他的引腳。
模擬輸入配置:當(dāng)io口被配置為模擬輸入模式,輸出緩沖器被禁止,施密特觸發(fā)器禁用使模擬輸入的io口0消耗,施密特觸發(fā)器的輸出置零,訪問 Input Data Register 得到零。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1