




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、GPIO功能描述每個(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è)位可以由軟件分別配置成多種模式。輸入浮空輸入上拉輸入下拉模擬輸入開漏輸出推挽式輸出推挽式復(fù)用功能開漏復(fù)用功能 每個(gè)I/O端口位可以自由編程,然而I/0端口寄存器必須按32位字被訪問(wèn)(不允許半字或字節(jié)訪問(wèn))。GPIOx_BSRR和GPIOx_BRR寄存器允
2、許對(duì)任何GPIO寄存器的讀/更改的獨(dú)立訪問(wèn);這樣,在讀和更改訪問(wèn)之間產(chǎn)生IRQ時(shí)不會(huì)發(fā)生危險(xiǎn)。 下圖給出了一個(gè)I/O端口位的基本結(jié)構(gòu)。 復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,I/O端口被配置成浮空輸入模式(CNFx1:0=01b,MODEx1:0=00b)。復(fù)位后,JTAG引腳被置于輸入上拉或下拉模式:PA15:JTDI置于上拉模式PA14:JTCK置于下拉模式PA13:JTMS置于上拉模式PB4: JNTRST置于上拉模式 當(dāng)作為輸出配置時(shí),寫到輸出數(shù)據(jù)寄存器上的值(GPIOx_ODR)輸出到相應(yīng)的I/O引腳。可以以推挽模式或開漏模式(當(dāng)輸
3、出0時(shí),只有N-MOS被打開)使用輸出驅(qū)動(dòng)器。輸入數(shù)據(jù)寄存器(GPIOx_IDR)在每個(gè)APB2時(shí)鐘周期捕捉I/O引腳上的數(shù)據(jù)。所有GPIO引腳有一個(gè)內(nèi)部弱上拉和弱下拉,當(dāng)配置為輸入時(shí),它們可以被激活也可以被斷開。 當(dāng)對(duì)GPIOx_ODR的個(gè)別位編程時(shí),軟件不需要禁止中斷:在單次APB2寫操作里,可以只更改一個(gè)或多個(gè)位。這是通過(guò)對(duì)“置位/復(fù)位寄存器”(GPIOx_BSRR,復(fù)位是 GPIOx_BRR)中想要更改的位寫1來(lái)實(shí)現(xiàn)的。沒(méi)被選擇的位將不被更改。 復(fù)用功能(AF)使用默認(rèn)復(fù)用功能前必須對(duì)端口位配置寄存器編程。對(duì)于復(fù)用的輸入功能,端口必須配置成輸入模式(浮空
4、、上拉或下拉)且輸入管腳必須由外部驅(qū)動(dòng)注意:也可以通過(guò)軟件來(lái)模擬復(fù)用功能輸入管腳,這種模擬可以通過(guò)對(duì)GPIO控制器編程來(lái)實(shí)現(xiàn)。此時(shí),端口應(yīng)當(dāng)被設(shè)置為復(fù)用功能輸出模式。顯然,這時(shí)相應(yīng)的管腳不再由外部驅(qū)動(dòng),而是通過(guò)GPIO控制器由軟件來(lái)驅(qū)動(dòng)。對(duì)于復(fù)用輸出功能,端口必須配置成復(fù)用功能輸出模式(推挽或開漏)。對(duì)于雙向復(fù)用功能,端口位必須配置復(fù)用功能輸出模式(推挽或開漏)。這時(shí),輸入驅(qū)動(dòng)器被配置成浮空輸入模式。如果把端口配置成復(fù)用輸出功能,則引腳和輸出寄存器斷開,并和片上外設(shè)的輸出信號(hào)連接。如果軟件把一個(gè)GPIO腳配置成復(fù)用輸出功能,但是外設(shè)沒(méi)有被激活,它的輸出將不確定。 軟件重新映射I/O復(fù)
5、用功能為了使不同器件封裝的外設(shè)I/O功能的數(shù)量達(dá)到最優(yōu),可以把一些復(fù)用功能重新映射到其他一些腳上。這可以通過(guò)軟件配置相應(yīng)的寄存器來(lái)完成(參考AFIO寄存器描述)。這時(shí),復(fù)用功能就不再映射到它們的原始引腳上了。 輸入配置當(dāng)I/O端口配置為輸入時(shí):輸出緩沖器被禁止施密特觸發(fā)輸入被激活根據(jù)輸入配置(上拉,下拉或浮動(dòng))的不同,弱上拉和下拉電阻被連接出現(xiàn)在I/O腳上的數(shù)據(jù)在每個(gè)APB2時(shí)鐘被采樣到輸入數(shù)據(jù)寄存器對(duì)輸入數(shù)據(jù)寄存器的讀訪問(wèn)可得到I/O狀態(tài) 輸出配置當(dāng)I/O端口被配置為輸出時(shí):輸出緩沖器被激活開漏模式:輸出寄存器上的0激活N-MOS,而輸
6、出寄存器上的1將端口置于高阻狀態(tài)(P-MOS從不被激活)。推挽模式:輸出寄存器上的0激活N-MOS,而輸出寄存器上的1將激活P-MOS。施密特觸發(fā)輸入被激活弱上拉和下拉電阻被禁止出現(xiàn)在I/O腳上的數(shù)據(jù)在每個(gè)APB2時(shí)鐘被采樣到輸入數(shù)據(jù)寄存器在開漏模式時(shí),對(duì)輸入數(shù)據(jù)寄存器的讀訪問(wèn)可得到I/O狀態(tài)在推挽式模式時(shí),對(duì)輸出數(shù)據(jù)寄存器的讀訪問(wèn)得到最后一次寫的值。 模擬輸入配置當(dāng)I/O端口被配置為模擬輸入配置時(shí):輸出緩沖器被禁止;禁止施密特觸發(fā)輸入,實(shí)現(xiàn)了每個(gè)模擬I/O引腳上的零消耗。施密特觸發(fā)輸出值被強(qiáng)置為0;弱上拉和下拉電阻被禁止;讀取輸入數(shù)據(jù)寄存器時(shí)數(shù)值為0。
7、60; 例程(1) 本例展示了如何通過(guò)設(shè)置GPIO BSRR寄存器(Port bit set/reset registe)和GPIO BRR寄存器 (Port bit reset register)來(lái)翻轉(zhuǎn)IO的狀態(tài)。 通過(guò)設(shè)置這兩個(gè)寄存器,可以利用單比特操作(single atomic write access)來(lái)改變一個(gè)或者幾個(gè)IO端口的狀態(tài)。 #include "stm32f10x_lib.h" /* Private typedef -*/* Pri
8、vate define -*/* Private macro -*/* Private variables -*/GPIO_InitTypeDef GPIO_InitStructure;ErrorStatus HSEStartUpStatus; /* Private function prototypes -*/void RCC_Configuration(void);void NVIC_Configuration(void);void Delay(vu32 nCount); /* Private functions -*/ /* Function Name
9、60; : main* Description : Main program.* Input : None* Output : None* Return : None*/int main(void)#ifdef DEBUG debug();#endif
10、 /* Configure the system clocks */ RCC_Configuration(); /* NVIC Configuration */ NVIC_Configuration(); /* Enable GPIOC clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /使能APB2外設(shè)(GPIOC)時(shí)鐘 /* Configure PC
11、.04-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_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure);
12、60; while (1) /* Turn on led connected to PC.04pin */ GPIO_SetBits(GPIOC, GPIO_Pin_4); /* Insert delay */ Delay(0xAFFFF); /* Turn on led connected to PC.05 and PC.06 pins */
13、 GPIO_SetBits(GPIOC, GPIO_Pin_5 | GPIO_Pin_6); /* Turn off led connected to PC.04 pin */ GPIO_ResetBits(GPIOC, GPIO_Pin_4); /* Insert delay */ Delay(0xAFFFF);
14、0; /* Turn on led connected to PC.07 pin */ GPIO_SetBits(GPIOC, GPIO_Pin_7); /* Turn off led connected to PC.05 and PC.06 pins */ GPIO_ResetBits(GPIOC, GPIO_Pin_6 | GPIO_Pin_5); /* Insert dela
15、y */ Delay(0xAFFFF); /* Turn off led connected to PC.07 pin */ GPIO_ResetBits(GPIOC, GPIO_Pin_7); /* Function Name : RCC_Configuration* Description : Configures the different system clocks.* Input
16、160; : None* Output : None* Return : None*/void RCC_Configuration(void) /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable
17、HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus = SUCCESS) /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);&
18、#160; /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ &
19、#160; RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* PLLCLK = 8MHz * 9 = 72 MHz */ RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); /* Enable PLL *
20、/ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET) /* Select PLL as system clock source */ RCC_SYSCLKConfig(RC
21、C_SYSCLKSource_PLLCLK); /* Wait till PLL is used as system clock source */ while(RCC_GetSYSCLKSource() != 0x08) /* Function Name : NVIC_Configuration* Description : Configures Vector T
22、able base location.* Input : None* Output : None* Return : None*/void NVIC_Configuration(void)#ifdef VECT_TAB_RAM /* Set the Vector
23、Table base location at 0x20000000 */ NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);#else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */ NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif /* Function Name : Delay* Descrip
24、tion : Inserts a delay time.* Input : nCount: specifies the delay time length.* Output : None* Return : None*/void Delay(vu32 nCount) for(; nCount != 0; nCount-); #ifdef DEBUG/* Function Name : assert_failed* Description : Reports the name of the source file and the source line number*
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝店裝修發(fā)包合同
- 2025年度養(yǎng)豬場(chǎng)生物安全防控體系建設(shè)合同
- 2025年度勞動(dòng)合同到期解除協(xié)議書及離職員工離職證明及離職手續(xù)辦理指南
- 2025年度建筑勞務(wù)施工節(jié)能減排合作協(xié)議
- 2025年度分紅股收益分配與權(quán)益變更協(xié)議
- 2025年度數(shù)據(jù)保密審計(jì)與保密合同
- 2025年度公司免責(zé)的旅游服務(wù)合作協(xié)議
- 2025年度創(chuàng)業(yè)公司股權(quán)激勵(lì)及轉(zhuǎn)讓協(xié)議
- 2025年網(wǎng)絡(luò)游戲行業(yè)發(fā)展現(xiàn)狀分析:網(wǎng)絡(luò)游戲國(guó)內(nèi)用戶規(guī)模不斷擴(kuò)大
- 崗位晉升申請(qǐng)書
- 腦卒中患者的康復(fù)護(hù)理查房
- 酶工程技術(shù)在茶葉深加工中的應(yīng)用
- 大模型在教育科技中的應(yīng)用
- 人教版英語(yǔ)八年級(jí)下冊(cè)全冊(cè)教案教學(xué)設(shè)計(jì)及教學(xué)反思
- 02J401 鋼梯【含03年修改】圖集
- 烹飪概論教學(xué)大綱
- Android移動(dòng)應(yīng)用開發(fā)基礎(chǔ)教程-教案
- 腦梗合并心衰護(hù)理查房
- JGT472-2015 鋼纖維混凝土
- 第九屆鵬程杯五年級(jí)數(shù)學(xué)競(jìng)賽初試真題
- 電梯結(jié)構(gòu)與原理-第2版-全套課件
評(píng)論
0/150
提交評(píng)論