網(wǎng)站平面設(shè)計(jì)培訓(xùn)百度網(wǎng)站提交入口網(wǎng)址
0. 引入
在單片機(jī)產(chǎn)品中,我們常常可以見(jiàn)到三種模塊:LCD燈、KEY按鍵、BEEP蜂鳴器
LED燈:一個(gè)比較常見(jiàn)的LED電路
LED0 ---------- 通過(guò)控制LED0引腳(電線)給它一個(gè)低電平(低電壓),LED燈就會(huì)亮
給它一個(gè)高電平(高電壓),LED燈就會(huì)滅
1 —> 高電平
0 —> 低電平
電流:從電勢(shì)高的地方流向電勢(shì)低的地方
CPU ===> 往LECD0引腳去 寫1,寫0"output" 輸出功能
KEY按鍵:一個(gè)比較常見(jiàn)的KEY電路
KEY0 ------ 通過(guò)讀取KEY0引腳的電平狀態(tài)來(lái)知曉用戶是否按下按鍵高電平(1) ---> 彈起
低電平(0) ---> 按下
CPU ===> 讀取KEY0引腳的電平狀態(tài)"input" 輸入功能
BEEP蜂鳴器:一個(gè)比較常見(jiàn)的BEEP電路
![]()
略
這些引腳最終是接入到MCU的某個(gè)引腳(gpio)上去的
控制LED燈、KEY按鍵、BEEP蜂鳴器等,可以在MCU上面寫程序去控制這些引腳
1. GPIO到底是什么?
GPIO:General Purpose Input Output 通用功能的輸入輸出 線
GPIO就是從芯片(芯片 = CPU + 總線 + 外設(shè)控制器)內(nèi)部引出一根功能復(fù)用的口線("電線"),可以由CPU配置成不同的功能
如:輸入功能,輸出功能,其他復(fù)用功能等
芯片或CPU控制整個(gè)世界就是通過(guò)這樣的引腳(口線,GPIO)STM32F4xx共有144個(gè)GPIO口線(引腳,pin),分為9組,記為GPIOA,GPIOB,GPIOC,GPIOD,GPIOE,GPIOF,GPIOG,GPIOH,GPIOI. 每組管理16個(gè)GPIO引腳,編號(hào)從0~15
如:GPIOA這一組有16個(gè)引腳,分別記為GPIOA0,GPIOA1,GPIOA2,... GPIOA15
其他組類似GPIOA0 -----> PA0
GPIOB3 ------> PB3
......
這些GPIO引腳都是功能復(fù)用的,并且由GPIO控制器來(lái)控制它們的
所有的外設(shè)都是由"外設(shè)控制器"來(lái)控制
GPIO控制器由不同的寄存器來(lái)配置或控制它們(GPIOs)
每組GPIO地址分配如下:GPIOA 0x4002 0000 ~ 0x4002 03ff GPIOB 0x4002 0400 ~ 0X4002 07FF GPIOC 0x4002 0800 ~ 0x4002 0BFF GPIOD 0x4002 0C00 ~ 0x4002 0FFF GPIOE 0x4002 1000 ~ 0x4002 13FF GPIOF 0x4002 1400 ~ 0x4002 17FF GPIOG 0x4002 1800 ~ 0x4002 1BFF GPIOH 0x4002 1C00 ~ 0x4002 1FFF GPIOI 0x4002 2000 ~ 0x4002 23FF
2. STM32F4xx GPIO內(nèi)部結(jié)構(gòu)原理
每個(gè)GPIO內(nèi)部都可以配置成:1. 輸入功能:input mode
CPU可以獲取該GPIO口的外部輸入的一個(gè)電平狀態(tài)
輸入功能有四種模式:
(1) 輸入懸空(input floating):不接上拉和下拉電阻
輸入引腳處于浮空狀態(tài),?即沒(méi)有特定電壓狀態(tài),?引腳懸浮在空中
IO引腳的電平狀態(tài)完全是外部輸入所決定的,這時(shí)CPU能夠通過(guò)讀取數(shù)據(jù)的操作知道狀態(tài)