GPIO再討論

可以使用系統(tǒng)調(diào)用close終止文件描述符與其對(duì)應(yīng)文件之間的關(guān)聯(lián),終止之后文件描述符將會(huì)被釋放并且能夠被重新使用。系統(tǒng)調(diào)用close成功調(diào)用的時(shí)候返回0紫岩,調(diào)用出錯(cuò)的時(shí)候返回-1。

通過(guò)前面的學(xué)習(xí),我們知道總共有7組GPIO慰毅,分別為GPIOA-GPIOG。每組GPIO都有16個(gè)引腳扎阶,對(duì)于每一個(gè)引腳來(lái)說(shuō)事富,它們都擁有8種引腳模式,其中分為4種輸入模式乘陪,4種輸出模式统台。也就是說(shuō)對(duì)于一個(gè)引腳來(lái)說(shuō),光是分配引腳模式就需要2bit啡邑,何況還有關(guān)于引腳的速度之類(lèi)的設(shè)置贱勃。所以對(duì)于每一組GPIO來(lái)說(shuō),他都擁有2個(gè)配置寄存器谤逼,分別為GPIOX_CRL以及GPIOX_CRH贵扰。

GPIO結(jié)構(gòu)圖

根據(jù)GPIO結(jié)構(gòu)圖我們可以看出I/O引腳并聯(lián)了兩個(gè)用于保護(hù)的二極管,GPIO結(jié)構(gòu)圖中的上部分即是輸入模式的硬件圖流部。共有4種輸入模式戚绕,分別為:上拉輸入模式GPIO_Mode_IPU,下拉輸入模式GPIO_Mode_IPD枝冀,浮空輸入模式GPIO_Mode_IN_FLOATING舞丛,模擬輸入方式GPIO_Mode_AIN耘子。

I/O引腳并聯(lián)完了兩個(gè)用于保護(hù)的二極管之后,接著就又并聯(lián)了一個(gè)由開(kāi)關(guān)球切,上拉電阻谷誓,VDD組成的支路,還并聯(lián)了一個(gè)由開(kāi)關(guān)吨凑,下拉電阻捍歪,VSS組成的支路。接著再串聯(lián)一個(gè)TTL斯密特觸發(fā)器鸵钝,這個(gè)TTL斯密特觸發(fā)器的作用就是將模擬信號(hào)轉(zhuǎn)化成數(shù)字信號(hào)糙臼,再TTL斯密特觸發(fā)器之后接著又串聯(lián)了一個(gè)GPIOX_IDR輸入數(shù)據(jù)寄存器,經(jīng)由TTL斯密特觸發(fā)器轉(zhuǎn)換而來(lái)的信號(hào)就死保存在這個(gè)輸入數(shù)據(jù)寄存器GPIOX_IDR中恩商。

我們可以通過(guò)修改GPIOX_CRL弓摘,GPIOX_CRH兩個(gè)寄存器里面的數(shù)據(jù)來(lái)控制兩個(gè)開(kāi)關(guān)的閉合情況,以此得到上拉輸入模式GPIO_Mode_IPU或者下拉輸入模式GPIOX_Mode_IPD痕届。

那么怎么理解上拉輸入模式以及下拉輸入模式呢韧献?答案就是,再默認(rèn)情況下(GPIO引腳沒(méi)有輸入的情況下)研叫,如果處于上拉輸入模式的話(huà)锤窑,則TTL斯密特觸發(fā)器得出的數(shù)據(jù)為1,高電平嚷炉;如果處于下拉輸入模式的話(huà)渊啰,那么施密特觸發(fā)器得出的數(shù)據(jù)就是0,低電平申屹。

對(duì)于浮空輸入模式GPIO_Mode_IN_FLOATING绘证,他則是這樣一種情況:即沒(méi)有接上拉電阻,也沒(méi)有接下拉電阻哗讥,直接就是將引腳的輸入串聯(lián)上TTL施密特觸發(fā)器嚷那。由于這個(gè)時(shí)候的輸入阻抗較大,所以一般把這種模式用于標(biāo)準(zhǔn)的通信協(xié)議如I2C杆煞,USART的接收端魏宽。

對(duì)于模擬輸入方式GPIO_Mode_AIN來(lái)說(shuō),它沒(méi)有并聯(lián)上拉電阻或者下拉電阻并且短路了TTL施密特觸發(fā)器后面的電路决乎,直接將引腳采集而來(lái)的模擬信號(hào)經(jīng)由另一線(xiàn)路傳送到了其它外設(shè)上面队询,比如說(shuō)ADC外設(shè)。因此构诚,如果我們想要利用某個(gè)引腳復(fù)用ADC采集引腳功能的話(huà)蚌斩,那么必須將這個(gè)引腳的輸入模式設(shè)置為模擬輸入模式GPIO_Mode_AIN。


輸出模式

有4種輸出模式范嘱,分別為推挽輸出GPIO_Mode_Out_PP送膳,開(kāi)漏輸出GPIO_Mode_Out_OD员魏,復(fù)用推挽輸出GPIO_Mode_AF_PP,復(fù)用開(kāi)漏輸出GPIO_Mode_AF_OD肠缨。其中推挽輸出用來(lái)輸出電平在0-3.3v的場(chǎng)合逆趋;開(kāi)漏輸出用于輸出電平在5v的場(chǎng)合盏阶。開(kāi)漏輸出用在5v的高電平場(chǎng)合晒奕。

端口模式的配置范例:

void PortConfig(void){
  GPIO_InitTypeDef config;
  RCC_APBXPeriphClockCmd(RCC_APBXPERIPH_GPIOX, ENABLE);
  config.GPIO_Pin = GPIO_Pin_x;
  config.GPIO_Mode = GPIO_Mode_XXX;
  //config.GPIO_Speed = GPIO_Speed_XMHz;//輸出才需要配置
  GPIO_Init(GPIOX, &structure);
}

需要注意的地方,GPIO被設(shè)置為輸入模式的時(shí)候名斟,不需要設(shè)置GPIO端口的最大速度脑慧。當(dāng)然,如果配置了這個(gè)速度也沒(méi)有關(guān)系砰盐,因?yàn)镚PIO_Init函數(shù)會(huì)自動(dòng)忽略它闷袒。

開(kāi)啟外設(shè)時(shí)鐘的時(shí)候,我們可以使用|來(lái)配置多個(gè)參數(shù)岩梳。比如下面這樣:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOB, ENABLE);

幾個(gè)重要的API:

uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOX, uint16_t GPIO_Pin);
uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOX,  uint16_t GPIO_Pin);
GPIO_WriteBit(GPIO_TypeDef *GPIOX, uint16_t GPIO_Pin);

END

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末囊骤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子冀值,更是在濱河造成了極大的恐慌也物,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件列疗,死亡現(xiàn)場(chǎng)離奇詭異滑蚯,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)抵栈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)告材,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人古劲,你說(shuō)我怎么就攤上這事斥赋。” “怎么了产艾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵灿渴,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我胰舆,道長(zhǎng)骚露,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任缚窿,我火速辦了婚禮棘幸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倦零。我一直安慰自己误续,他們只是感情好吨悍,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著蹋嵌,像睡著了一般育瓜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上栽烂,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天躏仇,我揣著相機(jī)與錄音,去河邊找鬼腺办。 笑死焰手,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的怀喉。 我是一名探鬼主播书妻,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼躬拢!你這毒婦竟也來(lái)了躲履?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤聊闯,失蹤者是張志新(化名)和其女友劉穎工猜,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體馅袁,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡域慷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了汗销。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片犹褒。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖弛针,靈堂內(nèi)的尸體忽然破棺而出叠骑,到底是詐尸還是另有隱情,我是刑警寧澤削茁,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布宙枷,位于F島的核電站,受9級(jí)特大地震影響茧跋,放射性物質(zhì)發(fā)生泄漏慰丛。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一瘾杭、第九天 我趴在偏房一處隱蔽的房頂上張望诅病。 院中可真熱鬧,春花似錦、人聲如沸贤笆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)芥永。三九已至篡殷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埋涧,已是汗流浹背板辽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留飞袋,地道東北人戳气。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓链患,卻偏偏與公主長(zhǎng)得像巧鸭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子麻捻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容