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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

GPIO工作原理(stm32F10x)

[復制鏈接]
跳轉到指定樓層
樓主
GPIO -- General Purpose Input Output (通用輸入/輸出)簡稱為GPIO, GPIO在每一款單片機中的地位都是至關重要的。 下面說一下它的工作原理。 我用的是MINISTM32F103RCT6這款單片機。

1.1 GPIO工作方式
工作方式:(4輸入、4輸出),三種最大翻轉速度
3種最大翻轉速度
2MHz
10MHz
50MHz
4種輸入方式:
1, 輸入浮空模式:CPU可以讀輸入數據寄存器里面的數據。輸入電平經過TTL施密特觸發器到輸入數據寄存器,
這時上拉下拉電阻都是沒接通的。
2, 輸入上拉模式:和輸入浮空差不多, 唯一的區別就是電平輸入的時候加了一個上拉電阻。
3, 輸入下拉模式:電平輸入的時候加了一個下拉電阻。
4, 模擬模式:TTL施密特觸發器是截止的( 前面三個都是接通的), 注意此刻輸入量并不是高低電平,
而是0-3V電壓; 并且上拉下拉電阻都是沒有接通的。
注意:輸入模式數據都是輸入到輸入數據寄存器中, 然后CPU直接讀輸入數據寄存器中。

ps:上圖是盜的。。。
4種輸出方式:
1, 開漏輸出模式:輸出電平通過 位設置/清除寄存器 映射到 輸出數據寄存器 然后通過輸出控制電路, 如果輸出的是1(高電平)那么N-MOS管是關閉的, 實際輸出電平是由I/O外部的上拉/下拉電阻控制的。 并且此時CPU可以讀輸出的電平, 但是因為輸出1的時候實際輸出電平是由I/O口外部上拉/下拉決定的, 所以此時讀入的可能不是1。 但是如果輸出的是0那么N-MOS管是開啟的,此時電平被拉到VSS, 此時I/O口輸出的也就是低電平; 并且可以通過CPU輸入數據寄存器來讀取。
2, 開漏復用輸出模式:與開漏輸出模式唯一的區別就是來源, 開漏復用輸出模式的電平來源是來自于片上外設模塊。
3, 推挽輸出模式:與開漏輸出模式前面都是一樣的, 但是當輸出1時, N-MOS管是關閉的,P-MOS管開啟; 所以輸出為1.
當輸出為0時, P-MOS管關閉, N-MOS管開啟; 輸出為0;
4, 復用推挽輸出模式:與推挽輸出模式的唯一區別就是來源, 復用推挽輸出模式的來源是片上外設模塊。
學習的時候可以將第一種輸出模式和第二種輸出模式放一塊, 第三種輸出模式和第四種輸出模式放一塊。

上電復位后, GPIO默認為浮空狀態,部分特殊功能引腳為特定狀態。
復位后, JTAG引腳被置于輸入上拉或者下拉模式:
PA15:JTDI置于上拉模式
PA14:JTCK置于下拉模式
PA13:JTMS置于上拉模式
PB4:JNTRST置于上拉模式

推挽輸出和開漏輸出區別:
推挽輸出:
可以輸出強高低電平,連接數字器件
開漏輸出:
只可以輸出強低電平,高電平得靠外部電阻拉高。輸出端相當于三極管的集電極. 要得到高電平狀態需要上拉電阻才行. 適合于做電流型的驅動,其吸收電流的能力相對強(一般20ma以內)

1.2GPIO端口寄存器包括
兩個32位配置寄存器(GPIOx_CRL, GPIOx_CRH)
兩個32位數據寄存器(GPIOx_IDR和GPIOx_ODR)
一個32位置位/復位寄存器(GPIOx_BRR)
一個16位復位寄存器(GPIOx_BSRR)
一個32位鎖定寄存器(GPIOx_LCKR), (不常用)
每個I/O端口可以自由編程, 然而I/O端口寄存器必須按32位字被訪問(不允許半字或字節訪問)。

1.2.1端口配置高/低寄存器(GPIOx_CRH, GPIOx_CRL)
stm32 GPIO_CRH是32位的寄存器, 但是配置每一個I/O口需要4位,也就是一個寄存器可以控制8個I/O口, 但是每一組I/O有16位所以需要兩個32位寄存器(還有GPIO_CRL), CRH控制高16位, CRL控制低16位寄存器。
每個I/O由4位決定其是 輸入還是輸出 并且是什么模式。 將這4位分為兩組:CNFy[1:0] 和 MOEDy[1:0]
MODEy[1:0]
00:輸入模式(復位后的狀態)
01:輸出模式(最大速度10MHz)
10:輸出模式(最大速度2MHz)
11:輸出模式(最大數據50MHz)
CNFy[1:0]:
在輸入模式
00:模擬輸入模式
01:浮空輸入模式
10:上拉/下拉輸入模式
11:保留
在輸出模式
00:通用推挽輸出模式
01:通用開漏輸出模式
10:復用功能推挽輸出模式
11:復用功能開漏輸出模式


1.2.3端口輸入數據寄存器(GPIOx_IDR)
高16位保留, 低16位每一位控制一個I/O口。如果為 1 就是高電平, 為 0 就是低電平。


1.2.4端口輸出數據寄存器(GPIO_ODR)
與IDR寄存器對應(相反), 高16位保留, 低16位每一位控制一個I/O口。如果為 1 就是輸出高電平, 為 0 就是輸出低電平。但是ODR寄存器還有一個作用:就是在輸入模式下設置到底是上拉還是下拉。前面的CRH/CRL寄存器中當MODEy為 00 時(即輸入模式), CNFy為 10 (即上拉/下拉輸入模式)時,由
ODR確定到底是上拉還是下拉。將對應的ODR寄存器的位設置為 1 代表上拉, 設置為 0 代表下拉。


1.2.5端口位設置/清除寄存器(GPIOx_BSRR)
它是一個 32 位寄存器, 如果使用它的低 16 位(BSy), 那么每一位的含義為:
0:對對應的ODRy位不產生影響。
1:設置對應的ODRy位為1.
也就是說這個寄存器是用來控制ODR寄存器的, 如果低 16 位某些位為 1, 就是說ODRy寄存器對應的也為 1。但是為 0 時不產生影響, 但是如果是ODR寄存器設置為 0 那么就會輸出低電平。這有什么好處呢? 在實時系統中, 如果要設置ODR寄存器, 首先要讀入ODR寄存器的值, 然后賦一個值,然后達到控制電平的目的, 如果只是要設置高電平的話, 如果是使用BSRR寄存器就可以直接賦值為 1 了, 這樣就簡單了很多 ^_^。
如果使用的是高 16 位(BRy)的話, 那么每一位含義:
0:對對應的ODRy位不產生影響。
1:清除對應的ODRy位為0。 也就是輸出低電平
這樣一來就可以設置整個的ODR寄存器的, 如果要輸出高電平控制(BSy), 如果要輸出低電平控制(BRy) ^-^
注意:如果同時設置了BSy和BRy的對應位, BSy位起作用。


1.2.6端口位清除寄存器(GPIOx_BRR)
BRR寄存器其實作用和BSRR的高 16 位作用是一致的。
所以通常BSRR寄存器用低 16 位, 然后用BRR寄存器來實現BSRR高 16 位的功能。

stm32引腳功能說明
stm32大部分端口都具有復用功能, 也就是說可以作為通用I/O還可以作為一些外設接口。
復用作用:最大限度的利用端口資源。
重映射功能:將某些端口的功能映射到其他端口。
所有I/O口都可以作為中斷輸入。像51只能有兩個I/O可作為中斷輸入。-_-

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品69久久久久水密桃 | 麻豆a级片 | 在线观看免费国产 | 精品成人 | 欧美区日韩区 | 一区二区三区国产在线观看 | 精一区二区 | 亚洲综合视频 | 国产一级久久久久 | 久久这里只有精品首页 | 久久精品国产一区 | 日韩三片 | 免费久久网站 | 欧美一级在线 | 欧美一区二区三区在线播放 | 久久精品16 | 伊人网一区 | 欧美精品99 | 国产精品美女久久久久 | 色爽女 | 久久久久久女 | 国产视频h | 日韩在线免费视频 | 亚洲一区二区三区在线 | 日韩精品在线观看免费 | 一区二区三区视频在线 | 久久久www成人免费精品张筱雨 | 久久国产精品网 | 国产国产精品久久久久 | av福利网 | 91精品国产91久久久久久吃药 | 91久久精品国产91久久 | 欧美日本亚洲 | 成人欧美一区二区 | 国产精品免费一区二区三区 | v片网站| 日本一区二区影视 | 成人在线视频网站 | 欧美不卡一区二区三区 | 特级毛片| 国产精品久久久久久久久久久新郎 |