版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第五章第五章 GPIO及外部中斷的使用及外部中斷的使用5.1 綜述綜述通用通用IO復(fù)位期間和剛復(fù)位后,復(fù)用功能未開啟,I/O端口被配置成浮空輸入模式(CNFx1:0=01b,MODEx1:0=00b)。復(fù)位后,JTAG引腳被置于輸入上拉或下拉模式:PA15:JTDI置于上拉模式PA14:JTCK置于下拉模式PA13:JTMS置于上拉模式PB4: JNTRST置于上拉模式單獨的位設(shè)置或位清除單獨的位設(shè)置或位清除當(dāng)對GPIOx_ODR的個別位編程時,軟件不需要禁止中斷:在單次APB2寫操作里,可以只更改一個或多個位。這是通過對“置位/復(fù)位寄存器”(GPIOx_BSRR,復(fù)位是 GPIOx_BRR)
2、中想要更改的位寫1來實現(xiàn)的。沒被選擇的位將不被更改。5.1 綜述綜述外部中斷外部中斷/喚醒線喚醒線所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。5.1 綜述綜述軟件重新映射軟件重新映射I/O復(fù)用功能復(fù)用功能為了使不同器件封裝的外設(shè)I/O功能的數(shù)量達到最優(yōu),可以把一些復(fù)用功能重新映射到其他一些腳上。這可以通過軟件配置相應(yīng)的寄存器來完成(參考AFIO寄存器描述)。這時,復(fù)用功能就不再映射到它們的原始引腳上了。GPIO鎖定機制鎖定機制鎖定機制允許凍結(jié)IO配置。當(dāng)在一個端口位上執(zhí)行了所定(LOCK)程序,在下一次復(fù)位之前,將不能再更改端口位的配置。5.1 綜述綜述復(fù)用功能復(fù)用功
3、能(AF)使用默認復(fù)用功能前必須對端口位配置寄存器編程。對于復(fù)用的輸入功能,端口必須配置成輸入模式(浮空、上拉或下拉)且輸入管腳必須由外部驅(qū)動對于復(fù)用輸出功能,端口必須配置成復(fù)用功能輸出模式(推挽或開漏)。對于雙向復(fù)用功能,端口位必須配置復(fù)用功能輸出模式(推挽或開漏)。這時,輸入驅(qū)動器被配置成浮空輸入模式。5.1 綜述綜述輸入配置當(dāng)I/O端口配置為輸入時:輸出緩沖器被禁止施密特觸發(fā)輸入被激活根據(jù)輸入配置(上拉,下拉或浮動)的不同,弱上拉和下拉電阻被連接出現(xiàn)在I/O腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)輸出配置輸出配置當(dāng)I/O端口被配置為輸出時
4、:輸出緩沖器被激活施密特觸發(fā)輸入被激活弱上拉和下拉電阻被禁止出現(xiàn)在I/O腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)在推挽式模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值。5.1 綜述綜述復(fù)用功能配置復(fù)用功能配置5.1 綜述當(dāng)I/O端口被配置為復(fù)用功能時:在開漏或推挽式配置中,輸出緩沖器被打開內(nèi)置外設(shè)的信號驅(qū)動輸出緩沖器(復(fù)用功能輸出)密特觸發(fā)輸入被激活弱上拉和下拉電阻被禁止在每個APB2時鐘周期,出現(xiàn)在I/O腳上的數(shù)據(jù)被采樣到輸入數(shù)據(jù)寄存器開漏模式時,讀輸入數(shù)據(jù)寄存器時可得到I/O口狀態(tài)在推挽模式時,讀輸出數(shù)據(jù)寄存器時可得到最后
5、一次寫的值模擬輸入配置當(dāng)I/O端口被配置為模擬輸入配置時:輸出緩沖器被禁止;禁止施密特觸發(fā)輸入,實現(xiàn)了每個模擬I/O引腳上的零消耗。施密特觸發(fā)輸出值被強置為0;弱上拉和下拉電阻被禁止;讀取輸入數(shù)據(jù)寄存器時數(shù)值為0。5.1 綜述5.2 庫函數(shù)庫函數(shù)具體函數(shù)用法詳情見STM32固件庫使用手冊5.3 IO端口的外設(shè)端口的外設(shè)把把OSC32_IN/OSC32_OUT作為作為GPIO 端口端口PC14/PC15當(dāng)LSE振蕩器關(guān)閉時,LSE振蕩器引腳OSC32_IN/OSC32_OUT可以分別用做GPIO的PC14/PC15,LSE功能始終優(yōu)先于通用I/O口的功能。把把OSC32_IN/OSC32_OUT
6、作為作為GPIO 端口端口PC14/PC15外部振蕩器引腳OSC_IN/OSC_OUT可以用做GPIO的PD0/PD1,通過設(shè)置復(fù)用重映射和調(diào)試I/O配置寄存器(AFIO_MAPR)實現(xiàn)。這個重映射只適用于36、48和64腳的封裝(100腳和144腳的封裝上有單獨的PD0和PD1的引腳,不必重映射)。5.3 IO端口的外設(shè)端口的外設(shè)5.3 IO端口的外設(shè)端口的外設(shè)CAN復(fù)用功能重映射復(fù)用功能重映射CAN信號可以被映射到端口A、端口B或端口D上,如下表所示。對于端口D,在36、48和64腳的封裝上沒有重映射功能。5.3 IO端口的外設(shè)端口的外設(shè)JTAG/SWD復(fù)用功能重映射復(fù)用功能重映射調(diào)試接口
7、信號被映射到GPIO端口上,如下表所示。表 調(diào)試接口信號5.3 IO端口的外設(shè)端口的外設(shè)表 調(diào)試端口映像5.3 IO端口的外設(shè)端口的外設(shè)ADC復(fù)用功能重映射復(fù)用功能重映射ADC1外部觸發(fā)注入轉(zhuǎn)換復(fù)用功能重映射(1)ADC1外部觸發(fā)規(guī)則轉(zhuǎn)換復(fù)用功能重映射(1)ADC2外部觸發(fā)注入轉(zhuǎn)換復(fù)用功能重映射(1)5.3 IO端口的外設(shè)端口的外設(shè)ADC2外部觸發(fā)規(guī)則轉(zhuǎn)換復(fù)用功能重映射(1)定時器復(fù)用功能重映射定時器復(fù)用功能重映射5.3 IO端口的外設(shè)端口的外設(shè)定時器4的通道1到通道4可以從端口B重映射到端口D。其他定時器的重映射列在下表。參見復(fù)用重映射和調(diào)試I/O配置寄存器(AFIO_MAPR)定時器5復(fù)用
8、功能重映像(1)定時器4復(fù)用功能重映像5.3 IO端口的外設(shè)端口的外設(shè)定時器3復(fù)用功能重映像定時器2復(fù)用功能重映像定時器1復(fù)用功能重映像5.3 IO端口的外設(shè)端口的外設(shè)5.3 IO端口的外設(shè)端口的外設(shè)USART復(fù)用功能重映射USART3重映像USART2重映像5.3 IO端口的外設(shè)端口的外設(shè)USART1重映像5.3 IO端口的外設(shè)端口的外設(shè)I2C 1 復(fù)用功能重映射復(fù)用功能重映射I2C 1重映像SPI 1復(fù)用功能重映射復(fù)用功能重映射SPI1重映像5.4 位運算位運算 左移運算符()左移運算符()左移位相當(dāng)于該數(shù)乘以,左移位相當(dāng)于該數(shù)乘以22,152=60,即乘了。但此結(jié)論只適用于該數(shù)左移時被溢
9、出舍棄的高位中不包含的情況。假設(shè)以一個字節(jié)(位)存一個整數(shù),若為無符號整型變量,則時,左移一位時溢出的是,而左移位時,溢出的高位中包含。右移運算符右移運算符()右移運算符是a2表示將a的各二進制位右移2位,移到右端的低位被舍棄,對無符號數(shù),高位補0。例如:a=017時:a的值用二進制形式表示為00001111, 舍棄低2位11: a2=00000011右移一位相當(dāng)于除以2 右移n位相當(dāng)于除以2n。5.4 位運算位運算5.4 位運算位運算“按位與按位與”運算符()運算符()按位與是指:參加運算的兩個數(shù)據(jù),按二進制位進行“與”運算。如果兩個相應(yīng)的二進制位都為,則該位的結(jié)果值為;否則為。即:,例:并
10、不等于,應(yīng)該是按位與運算: 00000011(3)& & 00000101(5) 00000001(1) 注意:如果參加如果參加&運算的是負數(shù)運算的是負數(shù)(如(如-3&-5),則要以補碼形式),則要以補碼形式表示為二進制數(shù),然后再按位表示為二進制數(shù),然后再按位進行進行“與與”運算。運算。3&5的值得5.4 位運算位運算“按位或按位或”運算符(運算符(|)兩個相應(yīng)的二進制位中只要有一個為,該位的結(jié)果值為。即 |,|,|,|例: 060|017,將八進制數(shù)60與八進制數(shù)17進行按位或運算。 00110000| 00001111 00111111 “取反取反”運算符()運算符() 是一個單目(元)運
11、算符,用來對一個二進制數(shù)按位取反,即將變,將變。例如,是對八進制數(shù)(即二進制數(shù))按位求反。 0000000000010101() 1111111111101010 (八進制數(shù)177752)5.4 位運算位運算“異或異或”運算符(運算符()5.4 位運算位運算異或運算符也稱XOR運算符。它的規(guī)則是:若參加運算的兩個二進制位同號則結(jié)果為(假)異號則結(jié)果為(真)即:00=0,01=1,10=1, 11=0 00111001 00101010 00010011 即:071052=023 (八進制數(shù))5.5 GPIO控制實例控制實例控制LED閃爍跑馬燈按鍵輸入5.6 外部中斷和中斷控制器外部中斷和中斷控
12、制器嵌套向量中斷控制器嵌套向量中斷控制器特性60個可屏蔽中斷通道(不包含16個Cortex-M3的中斷線);16個可編程的優(yōu)先等級(使用了4位中斷優(yōu)先級);低延遲的異常和中斷處理;電源管理控制;系統(tǒng)控制寄存器的實現(xiàn);嵌套向量中斷控制器(NVIC)和處理器核的接口緊密相連,可以實現(xiàn)低延遲的中斷處理和有效處理地處理晚到的中斷。中斷和異常向量5.6 外部中斷和中斷控制器外部中斷和中斷控制器STM32F10 xxx產(chǎn)品的向量表5.6 外部中斷和中斷控制器外部中斷和中斷控制器5.6 外部中斷和中斷控制器外部中斷和中斷控制器5.6 外部中斷和中斷控制器外部中斷和中斷控制器5.6 外部中斷和中斷控制器外部中
13、斷和中斷控制器外部中斷外部中斷/事件控制器事件控制器(EXTI)外部中斷/事件控制器由19個產(chǎn)生事件/中斷要求的邊沿檢測器組成。每個輸入線可以獨立地配置輸入類型(脈沖或掛起)和對應(yīng)的觸發(fā)事件(上升沿或下降沿或者雙邊沿都觸發(fā))。每個輸入線都可以被獨立的屏蔽。掛起寄存器保持著狀態(tài)線的中斷要求。主要特性EXTI控制器的主要特性如下:每個中斷/事件都有獨立的觸發(fā)和屏蔽每個中斷線都有專用的狀態(tài)位支持多達19個中斷/事件請求檢測脈沖寬度低于APB2時種寬度的外部信號。參見數(shù)據(jù)手冊中電氣特性部分的相關(guān)參數(shù)。5.6 外部中斷和中斷控制器外部中斷和中斷控制器5.6 外部中斷和中斷控制器外部中斷和中斷控制器硬件中
14、斷選擇硬件中斷選擇通過下面的過程來配置19個線路做為中斷源:配置19個中斷線的屏蔽位(EXTI_IMR)配置所選中斷線的觸發(fā)選擇位(EXTI_RTSR和EXTI_FTSR);配置那些控制映像到外部中斷控制器(EXTI)的NVIC中斷通道的使能和屏蔽位,使得19個中斷線中的請求可以被正確地響應(yīng)。硬件事件選擇硬件事件選擇通過下面的過程,可以配置19個線路為事件源配置19個事件線的屏蔽位(EXTI_EMR)配置事件線的觸發(fā)選擇位(EXTI_RTSR和EXTI_FTSR)5.6 外部中斷和中斷控制器外部中斷和中斷控制器軟件中斷軟件中斷/事件的選擇事件的選擇19個線路可以被配置成軟件中斷/事件線。下面是
15、產(chǎn)生軟件中斷的過程:配置19個中斷/事件線屏蔽位(EXTI_IMR, EXTI_EMR)設(shè)置軟件中斷寄存器的請求位(EXTI_SWIER)5.6 外部中斷和中斷控制器外部中斷和中斷控制器NVIC庫函數(shù)庫函數(shù)5.6 外部中斷和中斷控制器外部中斷和中斷控制器5.6 外部中斷和中斷控制器外部中斷和中斷控制器EXTI庫函數(shù)庫函數(shù)5.6 外部中斷和中斷控制器外部中斷和中斷控制器外部中斷實例外部中斷實例按鍵輸入按鍵輸入實驗?zāi)康?1. 熟練掌握單片機GPIO輸入輸出的使用。 2.掌握外部中斷的編程步驟。 3.使用外部中斷完成按鍵程序的編寫。5.6 外部中斷和中斷控制器外部中斷和中斷控制器硬件設(shè)計硬件設(shè)計硬件
16、連接圖如下,實驗板上stm32f103x處理器GPIOC的GPIO_Pin_2連接KEY,通過配置GPIO實現(xiàn)如下功能:按下按鍵SW1使LED4熄滅,再次按下時點亮。5.6 外部中斷和中斷控制器外部中斷和中斷控制器軟件設(shè)計軟件設(shè)計步驟一:添加庫函數(shù),以及操作函數(shù)。添加庫函數(shù)有:startup/start_stm32f10 x_hd.c;CMSIS/core_cm3.c;system_stm32f10 x.c;FWlib/stm32f10 x_gpio.c;stm32f10 x_rcc.c;stm32f10 x_exti.cFWlib/misc.c。操作函數(shù)有:USER/main.c ;stm3
17、2f10 x_it.c ;led.c ;exti.c;EXTI2_IRQHandler()。步驟二:打開system_stm32f10 x.c文件,配置系統(tǒng)時鐘為72MHZ。步驟三:打開打開led.c文件,使用函數(shù)為LED_GPIO_Config()配置PA10;該函數(shù)的實現(xiàn)步驟如下:5.6 外部中斷和中斷控制器外部中斷和中斷控制器void LED_GPIO_Config(void)GPIO_InitTypeDef GPIO_InitStructure;配置PB14RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitS
18、tructure.GPIO_Pin = GPIO_Pin_14; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB, GPIO_Pin_14); / 關(guān)閉LED4,熄滅步驟四:在led.h函數(shù)中設(shè)置宏定義:#define LED4(a)if (a)GPIO_SetBits(GPIOB,GPIO_Pin_14);滅 else GPIO_R
19、esetBits(GPIOB,GPIO_Pin_14)亮5.6 外部中斷和中斷控制器外部中斷和中斷控制器步驟五:配置外部中斷,打開exti.c文件,在這里我們重點解釋函數(shù)EXTI_PE5_Config()的配置步驟。void EXTI_PC0_Config(void)GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AF IO,ENABLE); 使能EXTIC線的時鐘和第二功能 AF
20、IO時鐘NVIC_Configuration();配置EXTIC線的中斷優(yōu)先級配置EXTI 中斷線 I/O GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;使用PC2作為外部中斷線 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; /上拉輸入 GPIO_Init(GPIOC, &GPIO_InitStructure);GPIO初始化GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource2); GPIOC外部中斷進行初始化選定要配置為 EXTI的 I/O口線和 I
21、/O口的工作模式 EXTI_InitStructure.EXTI_Line = EXTI_Line2;2號中斷線 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;中斷模式 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /下降沿中斷 EXTI_InitStructure.EXTI_LineCmd = ENABLE;使能中斷 EXTI_Init(&EXTI_InitStructure); 初始化5.6 外部中斷和中斷控制器外部中斷和中斷控制器步驟六:配置嵌套向量中斷控制器 NVIC,在步驟三中已調(diào)用了函數(shù)NVIC_Configuration();NVIC配置步驟:static void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure;定義結(jié)構(gòu)體 NVIC_PriorityGroupConfig(NVIC_Priority
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 埃萊爾-當(dāng)洛綜合征的臨床護理
- JJF(陜) 111-2024 超聲流量計在線校準規(guī)范
- 《教綜合布線技術(shù)》課件
- 《保險家庭財產(chǎn)保險》課件
- 風(fēng)險識別與評估技巧培訓(xùn)
- 培養(yǎng)創(chuàng)新思維的方法計劃
- 深入分析行業(yè)趨勢制定行動方案計劃
- 2024-2025學(xué)年九年級數(shù)學(xué)人教版下冊專題整合復(fù)習(xí)卷第28章 銳角三角函數(shù)整章測試(含答案)
- 杠桿基金合同三篇
- 拖拉機及農(nóng)林牧漁用掛車相關(guān)行業(yè)投資方案
- 2025蛇年七言春聯(lián)帶橫批(60幅)
- 用戶管理模塊
- Unit 1 Making friends Part B Lets learn(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語三年級上冊
- 防火門及防火卷簾施工方案
- 廣東省廣州市越秀區(qū)2022-2023學(xué)年八年級上學(xué)期期末歷史試題(含答案)
- 【MOOC】跨文化交際通識通論-揚州大學(xué) 中國大學(xué)慕課MOOC答案
- 學(xué)歷提升之路
- 播音主持專業(yè)教學(xué)計劃
- GB/T 44787-2024靜電控制參數(shù)實時監(jiān)控系統(tǒng)通用規(guī)范
- 電梯困人應(yīng)急演練方案
- 【初中歷史】西晉的短暫統(tǒng)一和北方各族的內(nèi)遷課件 2024-2025學(xué)年統(tǒng)編版七年級歷史上冊
評論
0/150
提交評論