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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2279|回復: 0
收起左側

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

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


1、通用輸入模式配置(以PA3為例)
圖8.jpg
將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的操作。
這是一個很有趣也很費解的操作,既然是配置輸入,怎么又跟輸出寄存器扯上關系了呢?請看手冊上的說明:
圖9.jpg
既然配置成輸入時輸出緩沖器已經被關閉,那么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為例)
圖10.jpg
將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就行了。
圖11.jpg
此時PB11是通用開漏模式,輸出端的PMOS被禁用,在ODR11上寫1并不能打開這個MOS管,而NMOS的驅動邏輯是0,所以這個MOS管也會被斷開。但由于此時施密特觸發器是接通的,所以引腳上的信號會被APB2時鐘采樣和鎖存,讀取IDR11就可以獲取PB11的輸入數據。這種在端口鎖存上寫1變輸入的方式與51單片機準輸入IO口的操作是一樣的。
上面說的是模擬I2C,如果是直接啟用復用功能那就不用這么麻煩了,人家早就把相關的邏輯操作搞得妥妥的了。按照手冊上的說明,只需將PB11配置成復用開漏就一切OK。

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91五月天| 久草热播| 秋霞a级毛片在线看 | 欧美激情亚洲 | 成人影院免费视频 | 亚洲精品视频免费 | 国产福利视频在线观看 | 中文字幕精 | 亚洲www啪成人一区二区 | 久久久青草婷婷精品综合日韩 | 国产精品视频一二三区 | 久久精品一区 | 成人免费一区二区三区视频网站 | 亚洲天堂av在线 | 国产精品爱久久久久久久 | 国产精品视频一二三区 | 亚洲精品乱码 | 九九久久精品 | 欧美一区永久视频免费观看 | 一级a爱片性色毛片免费 | 欧美一级大片 | 亚洲人成在线观看 | 美女黄视频网站 | 精品一区二区三区四区在线 | 国产精品视频偷伦精品视频 | 国产精品一码二码三码在线 | 国产精品视频一二三区 | 国产精品久久久久久久久久免费看 | 精品国产一区二区三区久久 | 欧美一区二区三区视频 | 国产精品色 | 日韩精品一区二区三区中文在线 | 亚洲成人福利视频 | 亚洲精品视频网站在线观看 | 国产精品久久精品 | 成人精品视频99在线观看免费 | 免费v片在线观看 | 超碰成人免费 | 日本久久精 | 91免费在线看 | 性一爱一乱一交一视频 |