開始規劃我的2024年micro:bit基礎程式設計指南 輸入函式組(特殊分析)7
微控制器GPIO口的四種工作模式分析
以下——
版權宣告:本文為CSDN博主希銳原創文章,繼CC 4之後0 BY-SA版權協議,**請附上原始出處鏈結和本宣告。
原文鏈結:該系列微控制器GPIO埠四種模式
前言。 如何配置埠模式。
埠模式配置暫存器(pxm0、pxm1)。
1.準雙向埠模式。
準雙向埠的特點。
2.開漏輸出模式。
開漏輸出模式功能。
3.推挽輸出模式。
4.高阻抗輸入模式。
前言。
STC51系列微控制器GPIO口的四種基本工作模式是:準雙向埠、推挽輸出、高阻抗輸入和開漏輸出。
gpio該埠以四種模式執行
隨著技術的更新和發展,微控制器的效能不斷增強,GPIO的工作模式也更多,以STC8G微控制器為例,所有GPIO埠都有4種最基本的工作模式,準確地說,所有IO口的每一位(每個引腳)都有4種工作模式: 準雙向埠,推挽輸出,高阻抗輸入,開漏輸出。也可能是不同的引腳具有不同的模式,每個引腳獨立工作。
微控制器上電後:P3除外0 和 p31、其他IO口全部為高阻抗狀態,使用者在使用IO口前必須設定好IO口的工作模式,即在初始化程式設計中,編寫並設定相應的專用功能暫存器單元。 否則,程式上電後,預設狀態為高阻抗狀態,功能不匹配,因此不會有相應的輸入輸出功能(這是要求,讓我吃了很多虧。 顯然程式沒有問題,但沒有輸出)。
因此,為了養成良好的程式設計習慣,我在程式設計之初就寫了起始架構和原創架構模型,以提醒自己在程式之初就提前考慮、設計、設定程式內容部分。
如下(配置IO口工作模式),不管怎麼用,都不需要先設定為準雙向口模式。 也就是說,首先想到的是配置GPIO埠的能力。
如何配置埠模式。
當然,我的程式架構有點問題,我是雙向對齊io口,遇到不同的引腳設定不同的模式怎麼辦?GPIO埠引腳的功能設定是根據特殊功能暫存器中的位元組進行操作的,暫存器的操作是逐字節執行的,因此如果要將埠引腳設定為不同的應用,必須首先將相關位元組進行邏輯轉換為or, 或不,並將最終結果寫入相應的控制暫存器。
埠模式配置暫存器(pxm0、pxm1)。
這是STC15系列微控制器的資料表,相關內容如下
可以看出,每組IO口由兩組特殊功能暫存器共同控制(以P1口為例)。
每個位兩個暫存器組成兩位控制碼,00-01-10-11對應每個位(引腳)的控制模式。
例如,控制P1埠匯流排,即SFR:P1M1 P1M0;如果控制 P5 埠匯流排,即 SFR:P5M1 P5M0。
在這種兩個暫存器的組合中,STC微控制器中總共有5組IO口,每組IO口對應兩個控制暫存器,即總共有10組SFR口控制模式暫存器。
需要注意的是,這些暫存器位址都不支援位定址,因此它們只能以十六進製格式直接配置為 SFR。
也就是說,GPIO埠引腳的功能設定是根據特殊功能暫存器中的位元組來操作的,暫存器的操作是逐字節執行的,所以如果要將埠引腳設定為不同的應用,必須首先將相關位元組進行邏輯轉換為or, 或不,然後將最終結果寫入相應的控制暫存器。
例如,p10 需要漏極開路輸出模式,P11為高阻抗輸入模式等(如圖所示)....
則對應暫存器p1m1=0x03;p1m0=0x09;相應的程式可以以這種方式分配(與其他埠一樣)。