久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2170|回復: 0
打印 上一主題 下一主題
收起左側

(菜鳥筆記)STM32配置GPIO時對內部硬件的‘開與關’

[復制鏈接]
跳轉到指定樓層
樓主
說心里話,STM32 GPIO的配置操作并不比51單片機復雜多少,但不同的應用場景可能會涉及到需要了解IO配置過程中更深入的細節,比方說內部施密特觸發器的通斷到底如何控制,復用信號又是如何送到IO口上的,等等。
這些操作在手冊上都說到了,但個人覺得這些知識點比較分散,不利于初學者掌握其中的細微之處,所以我想把GPIO配置的控制邏輯梳理了一下,看看寄存器哪些位的哪些配置值都干了哪些事兒,‘接通’或‘斷開’了內部的哪些硬件。
下圖是GPIO基本結構圖。
為清晰表達出內部構件被使能或禁能,我使用了‘開關’概念,當然,實際它們不會真的是一些硬件開關,而是為了表達邏輯1、0狀態。



1、通用輸入模式配置(以PA3為例)

將PA3配置成輸入模式的前提是GPIOA_CRL的MODE3[1:0]=00。
如果想把它配置成模擬輸入用于ADC,那就在GPIOA_CRL的CNF3[1:0]寫入00。
因為STM32F沒有復用輸入模式,所以要想把它配置成復用輸入USART2_RX,要么是讓CNF3[1:0]=01使PA3成為浮空輸入模式;要么是讓CNF3[1:0]=10配置成內部弱上拉輸入模式,但必須在此前加上一條對GPIOA_ODR的ODR3=1的操作。
這是一個很有趣也很費解的操作,既然是配置輸入,怎么又跟輸出寄存器扯上關系了呢?請看手冊上的說明:

既然配置成輸入時輸出緩沖器已經被關閉,那么ODR3的寫1操作就一定不是指向末端的PMOS和NMOS管。肯定有一個內部邏輯,使ODR3關聯到上拉及下拉電阻開關。至于這個邏輯到底是個啥樣的硬件,官方沒說,咱們也不好意細問。知道有這么回事兒,別在配置上下拉輸入時出現錯誤就行了。
如果PA3配置成了復用輸入USART2_RX,讀GPIOA_IDR的IDR3是允許的,而且讀回來的就是PA3當前的邏輯狀態,因為APB2的時鐘會采樣PA3,除了送到USART2模塊的RX以外,還鎖存到GPIOA_IDR的IDR3上。此時要閑著沒事兒非得讀一下GPIOA_ODR的ODR3,操作上也是允許的,但似乎也沒啥實際意義,因為讀回去的位狀態是之前對ODR3的最后一次寫入值。
如果PA3配置成了模擬輸入,施密特觸發器就會被斷開,讀IDR3就不再是PA3的數據了。
2、通用輸出模式配置(以PA2為例)

將PA2配置成輸出模式的前提是GPIOA_CRL的MODE2[1:0]=01、10或11。
由于在輸出模式下施密特觸發器一直是被打開的,每個APB2時鐘也像輸入模式一樣把PA2鎖存到GPIOA_IDR的IDR2,所以此時讀GPIOA_IDR能夠返回PA2當前的輸出邏輯狀態,但這可不是說此時PA2又可以當成輸入口使用,尤其是處于推挽輸出模式下,PA2外面的信號是進不來的。在開漏模式下,倒是可以把PA2當成輸入,這一點在下面會有描述。
還有一點值得注意,如果想把PA2配置成USART2_TX,那就必須將它配置成復用推挽或復用開漏輸出模式,千萬不能讓CNF2[1:0]=00(通用推挽)或01(通用開漏),否則USART2_TX送不到PA2上,因為這個時候‘復用/通用切換開關’是指向GPIOA_ODR的ODR2位而不是指向USART2_TX。
3、輸入輸出模式配置(以PB11為例)
有的時候需要將某個引腳當成IO口使用,比方說用PB11模擬I2C的SDA口線。
請注意,這里說的是‘模擬’SDA,而不是把PB11配置成復用的I2C2 SDA口。
咱們都知道,SDA線上必須外加上拉電阻,到底是為啥就不多說了。
作為模擬的SDA,有一繁一簡兩個方法:需要PB11送數就把它配置成通用輸出模式,回頭又需要它收數了再配置成輸入模式,在理論上這種方式是可行的,但切來切去的也真夠麻煩。
簡單的方法就是把PB11配置成通用開漏輸出模式,輸出時自不必說,當輸入時只要先在ODR11寫個1就行了。

此時PB11是通用開漏模式,輸出端的PMOS被禁用,在ODR11上寫1并不能打開這個MOS管,而NMOS的驅動邏輯是0,所以這個MOS管也會被斷開。但由于此時施密特觸發器是接通的,所以引腳上的信號會被APB2時鐘采樣和鎖存,讀取IDR11就可以獲取PB11的輸入數據。這種在端口鎖存上寫1變輸入的方式與51單片機準輸入IO口的操作是一樣的。
上面說的是模擬I2C,如果是直接啟用復用功能那就不用這么麻煩了,人家早就把相關的邏輯操作搞得妥妥的了。按照手冊上的說明,只需將PB11配置成復用開漏就一切OK。

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品一二区 | 亚洲视频二区 | 久久久精品 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 久久久久国产一级毛片 | av网站免费在线观看 | 欧美电影大全 | 天天躁日日躁狠狠很躁 | 久草在线| 久久国产一区 | 欧美另类视频在线 | 日韩伦理一区二区三区 | av电影手机版 | 91精品国产91久久久久久 | 亚洲综合视频 | 亚洲精品视频在线看 | 日韩一区二区三区精品 | 亚洲精品视频一区二区三区 | 99热欧美| 免费能直接在线观看黄的视频 | av毛片免费 | 夜夜夜夜草 | 久久久久久综合 | 国产视频福利在线观看 | 亚洲精品视频在线 | 欧美成人一区二区三区 | 福利视频一区二区 | 日韩在线欧美 | 国产精品 亚洲一区 | 久久一 | 亚洲综合首页 | 成人高清在线 | 日韩a v在线免费观看 | 国产精品91久久久久久 | 欧美另类视频 | 羞羞的视频在线观看 | 免费一级淫片aaa片毛片a级 | 亚洲精品二区 | 日日摸夜夜添夜夜添特色大片 | 国产福利网站 | 91精品国产综合久久精品图片 |