0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HK32MCU應(yīng)用筆記(十二)| HK32F103xC/D/E的GPIO的應(yīng)用及注意事項(xiàng)

jf_pJlTbmA9 ? 來源:航順芯片 ? 作者:航順芯片 ? 2023-09-18 10:58 ? 次閱讀

HK32F103x/C/D/E是航順芯片推出的中大容量的103系列芯片,而作為32位MCU最常用功能就是GPIO。HK32F103x的每個(gè)GPI/O端口有兩個(gè)32位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個(gè)32位數(shù)據(jù)寄存器(GPIOx_IDR 和 GPIOx_ODR),一個(gè)32位置位/復(fù)位寄存器(GPIOx_BSRR),一個(gè)16位復(fù)位寄存器(GPIOx_BRR)和一個(gè)32位鎖定寄存器(GPIOx_LCKR)。

每個(gè)I/O端口的特定硬件特征,GPIO端口的每個(gè)位可以由軟件分別配置成多種模式。

輸入浮空

輸入上拉

輸入下拉

模擬輸入

開漏輸出

推挽式輸出

推挽式復(fù)用功能

開漏復(fù)用功能

每個(gè)I/O端口位可以自由編程,然而必須按照32位字訪問I/O端口寄存器(不允許半字或字節(jié)訪問)。GPIOx_BSRR 和 GPIOx_BRR 寄存器允許對(duì)任何GPIO寄存器進(jìn)行讀/更改的獨(dú)立訪問;這樣,在讀和更改訪問之間產(chǎn)生IRQ時(shí)不會(huì)發(fā)生危險(xiǎn)。每個(gè)GPIO管腳都可以由軟件配置成輸出(推拉或開路)、輸入(帶或不帶上拉或下拉)或其它的外設(shè)功能端口。多數(shù) GPIO 管腳都與數(shù)字或模擬的外設(shè)共用。所有的 GPIO 管腳都有大電流通過能力。在需要的情況下,I/O 管腳的外設(shè)功能可以通過一個(gè)特定的操作鎖定,以避免意外的寫入 I/O 寄存器。

下圖就是I/O 端口位的基本結(jié)構(gòu):

wKgZomUD66KAJZR6AAJgQi9brtw376.png

5伏兼容 I/O 端口位的基本結(jié)構(gòu)

wKgaomUD66SAHGXvAAJekPeb_O4112.png

注意:VDD_FT 對(duì)5伏容忍I/O腳是特殊的,它與VDD不同

端口位配置表

wKgaomUD66WAMjjnAAFF94ESWMI754.png

輸出模式位

wKgZomUD66eAY9IMAACCDdzD3S0678.png

單獨(dú)的位設(shè)置或位清除

當(dāng)對(duì)GPIOx_ODR的個(gè)別位編程時(shí),軟件不需要禁止中斷:在單次APB2寫操作里,可以只更改一個(gè)或多個(gè)位。這是通過對(duì)“置位/復(fù)位寄存器”(GPIOx_BSRR,復(fù)位是 GPIOx_BRR)中想要更改的位寫’1’來實(shí)現(xiàn)的。沒被選擇的位將不被更改。

復(fù)用功能(AF)

使用默認(rèn)復(fù)用功能前必須對(duì)端口位配置寄存器編程。

● 對(duì)于復(fù)用的輸入功能,端口必須配置成輸入模式(浮空、上拉或下拉)且輸入引腳必須由外部驅(qū)動(dòng)

注意:也可以通過軟件來模擬復(fù)用功能輸入引腳,這種模擬可以通過對(duì) GPIO 控制器編程來實(shí)現(xiàn)。此時(shí),端口應(yīng)當(dāng)被設(shè)置為復(fù)用功能輸出模式。顯然,這時(shí)相應(yīng)的引腳不再由外部驅(qū)動(dòng),而是通過 GPIO 控制器由軟件來驅(qū)動(dòng)。

● 對(duì)于復(fù)用輸出功能,端口必須配置成復(fù)用功能輸出模式(推挽或開漏)。

● 對(duì)于雙向復(fù)用功能,端口位必須配置復(fù)用功能輸出模式(推挽或開漏)。這時(shí),輸入驅(qū)動(dòng)器被配置成浮空輸入模式。

如果把端口配置成復(fù)用輸出功能,則引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號(hào)連接。如果軟件把一個(gè)GPIO腳配置成復(fù)用輸出功能,但是外設(shè)沒有被激活,它的輸出將不確定。

輸入配置

當(dāng) I/O 端口配置為輸入時(shí):

● 輸出緩沖器被禁止

● 施密特觸發(fā)輸入被激活

● 根據(jù)輸入配置(上拉,下拉或浮動(dòng))的不同,弱上拉和下拉電阻被連接

● 出現(xiàn)在I/O腳上的數(shù)據(jù)在每個(gè)APB2時(shí)鐘被采樣到輸入數(shù)據(jù)寄存器

● 對(duì)輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)

輸出配置

當(dāng) I/O 端口被配置為輸出時(shí):

● 輸出緩沖器被激活

─ 開漏模式:輸出寄存器上的’0’激活 N-MOS,而輸出寄存器上的’1’將端口置于高阻狀態(tài)(P-MOS 從不被激活)。

─ 推挽模式:輸出寄存器上的’0’激活 N-MOS,而輸出寄存器上的’1’將激活 P-MOS。

● 施密特觸發(fā)輸入被激活

● 弱上拉和下拉電阻被禁止

● 出現(xiàn)在I/O腳上的數(shù)據(jù)在每個(gè)APB2時(shí)鐘被采樣到輸入數(shù)據(jù)寄存器

● 在開漏模式時(shí),對(duì)輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)

● 在推挽式模式時(shí),對(duì)輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值。

復(fù)用功能配置

當(dāng) I/O 端口被配置為復(fù)用功能時(shí):

● 在開漏或推挽式配置中,輸出緩沖器被打開

● 內(nèi)置外設(shè)的信號(hào)驅(qū)動(dòng)輸出緩沖器(復(fù)用功能輸出)

● 施密特觸發(fā)輸入被激活

● 弱上拉和下拉電阻被禁止

● 在每個(gè)APB2時(shí)鐘周期,出現(xiàn)在I/O腳上的數(shù)據(jù)被采樣到輸入數(shù)據(jù)寄存器

● 開漏模式時(shí),讀輸入數(shù)據(jù)寄存器時(shí)可得到I/O口狀態(tài)

● 在推挽模式時(shí),讀輸出數(shù)據(jù)寄存器時(shí)可得到最后一次寫的值

模擬輸入配置

當(dāng) I/O 端口被配置為模擬輸入配置時(shí):

● 輸出緩沖器被禁止

● 禁止施密特觸發(fā)輸入,實(shí)現(xiàn)了每個(gè)模擬I/O引腳上的零消耗。施密特觸發(fā)輸出值被強(qiáng)置為’0’

● 弱上拉和下拉電阻被禁止

● 讀取輸入數(shù)據(jù)寄存器時(shí)數(shù)值為’0’

下面就HK32F103xC/D/E在操作上需要應(yīng)用開發(fā)者注意的。

用戶在使用HK32F103xC/D/E時(shí),使用軟件循環(huán)產(chǎn)生定時(shí),用GPIO翻轉(zhuǎn)模擬時(shí)序,發(fā)現(xiàn)跟友商不一致。這是我們?cè)O(shè)計(jì)跟友商不一樣。

解決方法如下:

不開 Cache,HK32F103xCxDxE 效率低一點(diǎn)。

打開 Cache,HK32F103xCxDxE 效率明顯提高。

以上有關(guān)寄存器的介紹可以參考我們HK的HK32F103xC/D/E的應(yīng)用手冊(cè)。

來源:航順芯片

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349916
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1188

    瀏覽量

    51832
  • 航順芯片
    +關(guān)注

    關(guān)注

    1

    文章

    102

    瀏覽量

    22769
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    HK32MCU應(yīng)用筆記(二十)| HK32F103xC/D/E USB枚舉情況分析(二)

    HK32MCU應(yīng)用筆記(二十)| HK32F103xC/D/E USB枚舉情況分析(二)
    的頭像 發(fā)表于 09-18 10:58 ?532次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(二十)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b> USB枚舉情況分析(二)

    HK32MCU應(yīng)用筆記(十九)| HK32F103xC/D/E USB枚舉情況分析

    HK32MCU應(yīng)用筆記(十九)| HK32F103xC/D/E USB枚舉情況分析
    的頭像 發(fā)表于 09-18 10:58 ?754次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十九)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b> USB枚舉情況分析

    HK32MCU應(yīng)用筆記(十八)| HK32F103xC/D/E-DAC的應(yīng)用及注意事項(xiàng)

    HK32MCU應(yīng)用筆記(十八)| HK32F103xC/D/E-DAC的應(yīng)用及注意事項(xiàng)
    的頭像 發(fā)表于 09-18 10:58 ?995次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十八)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-DAC的應(yīng)用及<b class='flag-5'>注意事項(xiàng)</b>

    HK32MCU應(yīng)用筆記(十七)| HK32F103xC/D/E-flash擦寫應(yīng)用及注意事項(xiàng)

    HK32MCU應(yīng)用筆記(十七)| HK32F103xC/D/E-flash擦寫應(yīng)用及注意事項(xiàng)
    的頭像 發(fā)表于 09-18 10:58 ?1016次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十七)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-flash擦寫應(yīng)用及<b class='flag-5'>注意事項(xiàng)</b>

    HK32MCU應(yīng)用筆記(十六)| HK32F103xC/D/E-Timer的應(yīng)用及注意事項(xiàng)

    HK32MCU應(yīng)用筆記(十六)| HK32F103xC/D/E-Timer的應(yīng)用及注意事項(xiàng)
    的頭像 發(fā)表于 09-18 10:58 ?717次閱讀

    HK32MCU應(yīng)用筆記(十五)| HK32F103xC/D/E-同步注入模式下,ADC2工作狀態(tài)不能單獨(dú)配置

    HK32MCU應(yīng)用筆記(十五)| HK32F103xC/D/E-同步注入模式下,ADC2工作狀態(tài)不能單獨(dú)配置
    的頭像 發(fā)表于 09-18 10:58 ?652次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十五)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-同步注入模式下,ADC2工作狀態(tài)不能單獨(dú)配置

    HK32MCU應(yīng)用筆記(十四)| HK32F103x/C/D/E-TIM1的應(yīng)用及注意事項(xiàng)

    HK32MCU應(yīng)用筆記(十四)| HK32F103x/C/D/E-TIM1的應(yīng)用及注意事項(xiàng)
    的頭像 發(fā)表于 09-18 10:58 ?739次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十四)| <b class='flag-5'>HK32F103</b>x/C/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-TIM1的應(yīng)用及<b class='flag-5'>注意事項(xiàng)</b>

    HK32MCU應(yīng)用筆記(十三)| HK32F103xC/D/E-ADC的應(yīng)用及注意事項(xiàng)

    HK32MCU應(yīng)用筆記(十三)| HK32F103xC/D/E-ADC的應(yīng)用及注意事項(xiàng)
    的頭像 發(fā)表于 09-18 10:58 ?1037次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十三)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>-ADC的應(yīng)用及<b class='flag-5'>注意事項(xiàng)</b>

    HK32MCU應(yīng)用筆記(十一)| HK32F103xC/D/E的flash讀保護(hù)應(yīng)用及注意事項(xiàng)

    HK32MCU應(yīng)用筆記(十一)| HK32F103xC/D/E的flash讀保護(hù)應(yīng)用及注意事項(xiàng)
    的頭像 發(fā)表于 09-18 10:58 ?911次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十一)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>的flash讀保護(hù)應(yīng)用及<b class='flag-5'>注意事項(xiàng)</b>

    HK32MCU應(yīng)用筆記(十)| HK32F103xC/D/E的ADC常規(guī)和注入通道同時(shí)觸發(fā)時(shí)的處理機(jī)制

    HK32MCU應(yīng)用筆記(十)| HK32F103xC/D/E的ADC常規(guī)和注入通道同時(shí)觸發(fā)時(shí)的處理機(jī)制
    的頭像 發(fā)表于 09-18 10:58 ?675次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(十)| <b class='flag-5'>HK32F103xC</b>/<b class='flag-5'>D</b>/<b class='flag-5'>E</b>的ADC常規(guī)和注入通道同時(shí)觸發(fā)時(shí)的處理機(jī)制

    HK32MCU應(yīng)用筆記(九)| HK32F103x8xB系列CAN的應(yīng)用解決方案

    HK32MCU應(yīng)用筆記(九)| HK32F103x8xB系列CAN的應(yīng)用解決方案
    的頭像 發(fā)表于 09-18 10:59 ?621次閱讀

    HK32MCU應(yīng)用筆記(六)| HK32MCU芯片調(diào)試心得

    HK32MCU應(yīng)用筆記(六)| HK32MCU芯片調(diào)試心得
    的頭像 發(fā)表于 09-18 10:59 ?740次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(六)| <b class='flag-5'>HK32MCU</b>芯片調(diào)試心得

    HK32MCU應(yīng)用筆記(五)| 關(guān)于應(yīng)用HK32F030延時(shí)效率問題

    HK32MCU應(yīng)用筆記(五)| 關(guān)于應(yīng)用HK32F030延時(shí)效率問題
    的頭像 發(fā)表于 09-18 11:00 ?619次閱讀

    HK32MCU應(yīng)用筆記(四)| 關(guān)于老版本HK32F103串口USART偶爾出現(xiàn)數(shù)據(jù)錯(cuò)誤

    HK32MCU應(yīng)用筆記(四)| 關(guān)于老版本HK32F103串口USART偶爾出現(xiàn)數(shù)據(jù)錯(cuò)誤
    的頭像 發(fā)表于 09-18 11:00 ?1049次閱讀

    HK32MCU應(yīng)用筆記(一)| HK32F030X系列在PH測量筆的應(yīng)用

    HK32MCU應(yīng)用筆記(一)| HK32F030X系列在PH測量筆的應(yīng)用
    的頭像 發(fā)表于 09-18 11:00 ?1060次閱讀
    <b class='flag-5'>HK32MCU</b>應(yīng)<b class='flag-5'>用筆記</b>(一)| <b class='flag-5'>HK32F</b>030X系列在PH測量筆的應(yīng)用