




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、STM32之GPIO筆記_zhuan 1 STM32的輸入輸出管腳有下面8種可能的配置:(4輸入+2輸出+2復(fù)用輸出) 浮空輸入_IN_FLOATING 帶上拉輸入_IPU 帶下拉輸入_IPD 模擬輸入_AIN 開(kāi)漏輸出_OUT_OD 推挽輸出_OUT_PP 復(fù)用功能的推挽輸出_AF_PP 復(fù)用功能的開(kāi)漏輸出_AF_OD1.1 I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這個(gè)速度是指I/O口驅(qū)動(dòng)電路的響應(yīng)速度而不是輸出信號(hào)的速度,輸出信號(hào)的速度與程序有關(guān)(芯片內(nèi)部在I/O口的輸出部分安排了多個(gè)響應(yīng)速度不同的輸出驅(qū)動(dòng)電路,用戶可以根據(jù)自己的需要選擇合適的驅(qū)動(dòng)電路
2、)。通過(guò)選擇速度來(lái)選擇不同的輸出驅(qū)動(dòng)模塊,達(dá)到最佳的噪聲控制和降低功耗的目的。高頻的驅(qū)動(dòng)電路,噪聲也高,當(dāng)不需要高的輸出頻率時(shí),請(qǐng)選用低頻驅(qū)動(dòng)電路,這樣非常有利于提高系統(tǒng)的EMI性能。當(dāng)然如果要輸出較高頻率的信號(hào),但卻選用了較低頻率的驅(qū)動(dòng)模塊,很可能會(huì)得到失真的輸出信號(hào)。關(guān)鍵是GPIO的引腳速度跟應(yīng)用匹配(推薦10倍以上?)。比如:1.1.1 對(duì)于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引腳速度就夠了,既省電也噪聲小。1.1.2 對(duì)于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引腳速度或許不夠,這時(shí)可以選用10M的GPIO引腳速度。1.1.3
3、 對(duì)于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引腳速度顯然不夠了,需要選用50M的GPIO的引腳速度。1.2 GPIO口設(shè)為輸入時(shí),輸出驅(qū)動(dòng)電路與端口是斷開(kāi),所以輸出速度配置無(wú)意義。1.3 在復(fù)位期間和剛復(fù)位后,復(fù)用功能未開(kāi)啟,I/O端口被配置成浮空輸入模式。1.4 所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。1.5 GPIO口的配置具有上鎖功能,當(dāng)配置好GPIO口后,可以通過(guò)程序鎖住配置組合,直到下次芯片復(fù)位才能解鎖。2 在STM32中如何配置片內(nèi)外設(shè)使用的IO端口首先,一個(gè)外設(shè)經(jīng)過(guò) 配置輸入的時(shí)鐘和 初始化后即被激活(開(kāi)啟);如果使用該外設(shè)的輸
4、入輸出管腳,則需要配置相應(yīng)的GPIO端口(否則該外設(shè)對(duì)應(yīng)的輸入輸出管腳可以做普通GPIO管腳使用);再對(duì)外設(shè)進(jìn)行詳細(xì)配置。對(duì)應(yīng)到外設(shè)的輸入輸出功能有下述三種情況:一、外設(shè)對(duì)應(yīng)的管腳為輸出:需要根據(jù)外圍電路的配置選擇對(duì)應(yīng)的管腳為復(fù)用功能的推挽輸出或復(fù)用功能的開(kāi)漏輸出。二、外設(shè)對(duì)應(yīng)的管腳為輸入:則根據(jù)外圍電路的配置可以選擇浮空輸入、帶上拉輸入或帶下拉輸入。三、ADC對(duì)應(yīng)的管腳:配置管腳為模擬輸入。 如果把端口配置成復(fù)用輸出功能,則引腳和輸出寄存器斷開(kāi),并和片上外設(shè)的輸出信號(hào)連接。將管腳配置成復(fù)用輸出功能后,如果外設(shè)沒(méi)有被激活,那么它的輸出將不確定。 3 通用IO端口(GPIO)初始化:3.1 GP
5、IO初始化3.1.1 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | B | C, ENABLE):使能APB2總線外設(shè)時(shí)鐘3.1.2 RCC_ APB2PeriphResetCmd (RCC_APB2Periph_GPIOA | B | C, DISABLE):釋放GPIO復(fù)位3.2 配置各個(gè)PIN端口(模擬輸入_AIN、輸入浮空_IN_FLOATING、輸入上拉_IPU、輸入下拉_IPD、開(kāi)漏輸出_OUT_OD、推挽式輸出_OUT_PP、推挽式復(fù)用輸出_AF_PP、開(kāi)漏復(fù)用輸出_AF_OD)3.3 GPIO初始化完成=最近剛開(kāi)始學(xué)習(xí)STM32,所
6、以從最基本的GPIO開(kāi)始學(xué)起;首先看看STM32的datasheet上對(duì)GPIO口的簡(jiǎn)單介紹:每個(gè)GPI/O 端口有兩個(gè)32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個(gè)32位數(shù)據(jù)寄存器(GPIOx_IDR,GPIOx_ODR),一個(gè)32 位置位/復(fù)位寄存器(GPIOx_BSRR),一個(gè)16 位復(fù)位寄存器(GPIOx_BRR)和一個(gè)32 位鎖定寄存器(GPIOx_LCKR)。GPIO 端口的每個(gè)位可以由軟件分別配置成多種模式。每個(gè)I/O 端口位可以自由編程,然而I/0 端口寄存器必須按32 位字被訪問(wèn)(不允許半字或字節(jié)訪問(wèn))。GPIOx_BSRR 和GPIOx_BRR 寄存器允
7、許對(duì)任何GPIO 寄存器的讀/更改的獨(dú)立訪問(wèn);這樣,在讀和更改訪問(wèn)之間產(chǎn)生IRQ 時(shí)不會(huì)發(fā)生危險(xiǎn)。端口位配置 CNFx1:0=xxb,MODEx1:0=xxb再看GPIO功能很強(qiáng)大:1.通用I/O(GPIO):最最基本的功能,可以驅(qū)動(dòng)LED、可以產(chǎn)生PWM、可以驅(qū)動(dòng)蜂鳴器等等;2.單獨(dú)的位設(shè)置或位清除:方便軟體作業(yè),程序簡(jiǎn)單。端口配置好以后只需GPIO_SetBits(GPIOx, GPIO_Pin_x)就可以實(shí)現(xiàn)對(duì)GPIOx的pinx位為高電平;3.外部中斷/喚醒線:端口必須配置成輸入模式時(shí),所有端口都有外部中斷能力;4.復(fù)用功能(AF):復(fù)用功能的端口兼有IO功能等。復(fù)位期間和剛復(fù)位后,復(fù)
8、用功能未開(kāi)啟,I/O 端口被配置成浮空輸入模式:(CNFx1:0=01b,MODEx1:0=00b)。5.軟件重新映射I/O復(fù)用功能:為了使不同器件封裝的外設(shè)I/O 功能的數(shù)量達(dá)到最優(yōu),可以把一些復(fù)用功能重新映射到其他一些腳上。這可以通過(guò)軟件配置相應(yīng)的寄存器來(lái)完成。這時(shí),復(fù)用功能就不再映射到它們的原始引腳上了;6.GPIO鎖定機(jī)制:當(dāng)在一個(gè)端口位上執(zhí)行了所定(LOCK)程序,在下一次復(fù)位之前,將不能再更改端口位的配置。GPIO基本設(shè)置GPIOMode_TypeDef GPIO mode 定義及偏移地址GPIO_Mode_AIN = 0x0, /模擬輸入GPIO_Mode_IN_FLOATING
9、 = 0x04, /懸空輸入GPIO_Mode_IPD = 0x28, /下拉輸入GPIO_Mode_IPU = 0x48, /上拉輸入GPIO_Mode_Out_OD = 0x14, /開(kāi)漏輸出GPIO_Mode_Out_PP = 0x10, /推挽輸出GPIO_Mode_AF_OD = 0x1C, /開(kāi)漏復(fù)用GPIO_Mode_AF_PP = 0x18 /推挽復(fù)用GPIO輸入輸出速度選擇:typedef enum GPIO_Speed_10MHz = 1,GPIO_Speed_2MHz, GPIO_Speed_50MHzGPIOSpeed_TypeDef;#define IS_GPIO_S
10、PEED(SPEED) (SPEED = GPIO_Speed_10MHz) | (SPEED = GPIO_Speed_2MHz) | (SPEED = GPIO_Speed_50MHz)做一個(gè)GPIO輸出的試驗(yàn)當(dāng)I/O 端口被配置為推挽模式輸出時(shí):輸出寄存器上的0 激活N-MOS,而輸出寄存器上的1 將激活P-MOS。用這段程序?qū)崿F(xiàn):GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;int main(void)#ifdef DEBUGdebug();#endif/* 設(shè)置系統(tǒng)時(shí)鐘 */RCC_Configuration();/* 嵌套中斷設(shè)置*
11、/NVIC_Configuration();/* 激活GPIOC clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);/* Configure PC.04, PC.05, PC.06 and PC.07 as Output push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStr
12、ucture.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOC, &GPIO_InitStructure);while (1) /*本試驗(yàn)僅能實(shí)現(xiàn)LED1亮、熄功能*/GPIO_SetBits(GPIOC, GPIO_Pin_4); /設(shè)置PC.04 pin為高電平,點(diǎn)亮LED1Delay();GPIO_ResetBits(GPIOC, GPIO_Pin_4); /設(shè)置PC.04 pin為低電平,熄滅LED1Delay();做一個(gè)GPIO輸入的試驗(yàn):以EK-STM32F中LCDdemo做例子這個(gè)試驗(yàn)中把GPIO的PD.04做為按鍵輸入,當(dāng)下降沿來(lái)
13、臨時(shí)觸發(fā)。LCDdemo中的例程如下:首先配置按鍵PD.03, PD.04為按鍵輸入接口。void Button_Config(void)GPIO_InitTypeDef GPIO_InitStructure;/* Enable GPIOD clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);/* Configure PD.03, PD.04 as output push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 ;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD, &GPIO_InitStructure);下面為按鍵作用是啟動(dòng)外部中斷GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource3);EXTI_InitStructure.EXTI_Line = EXTI
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)技能人才薪酬分配激勵(lì)體系中的公平性建設(shè)
- 超市客戶行為分析與市場(chǎng)調(diào)研
- 旅游公司客戶服務(wù)體驗(yàn)提升與投訴管理
- 主題公園顧客反饋與投訴處理機(jī)制
- DeepSeek+AI大模型賦能企業(yè)供應(yīng)鏈計(jì)劃管理APS及運(yùn)輸管理OTM一體化解決方案
- 【課件】有理數(shù)的乘法(第一課時(shí))課件2024-2025學(xué)年+人教版(2024)+七年級(jí)數(shù)學(xué)上冊(cè)+
- 冷鏈物流基地建設(shè)的策略及實(shí)施路徑
- 加強(qiáng)城市基礎(chǔ)設(shè)施建設(shè)改造實(shí)施方案
- 競(jìng)聘面試題模板及答案
- 山東語(yǔ)文面試題及答案
- 腎移植手術(shù)的配合
- 2023年廣東省佛山市華英學(xué)校小升初數(shù)學(xué)試卷及答案
- 第16課(1) 你常去圖書(shū)館嗎1 - ThaitoChina
- 2022年上證所信息網(wǎng)絡(luò)有限公司招聘筆試試題及答案解析
- DB32-T 4357-2022 建筑工程施工機(jī)械安裝質(zhì)量檢驗(yàn)規(guī)程
- DB15T 2537-2022涉路工程安全性評(píng)價(jià)報(bào)告編制指南
- 淺談?lì)I(lǐng)導(dǎo)干部如何當(dāng)好副職
- DB51∕T 1627-2013 渠道工程施工質(zhì)量檢驗(yàn)與評(píng)定規(guī)程
- 信息報(bào)送審批表
- 化工精餾知識(shí)考試題庫(kù)及答案
- 奇美牌口風(fēng)琴吹奏說(shuō)明電子版
評(píng)論
0/150
提交評(píng)論