基于ARM的單片機應用及實踐課件-第五章_第1頁
基于ARM的單片機應用及實踐課件-第五章_第2頁
基于ARM的單片機應用及實踐課件-第五章_第3頁
基于ARM的單片機應用及實踐課件-第五章_第4頁
基于ARM的單片機應用及實踐課件-第五章_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章GPIO及外部中斷的使用5.1綜述通用I\O復位期間和剛復位后,復用功能未開啟,I/O端口被配置成浮空輸入模式(CNFx[1:0]=01b,MODEx[1:0]=00b)。復位后,JTAG引腳被置于輸入上拉或下拉模式:─PA15:JTDI置于上拉模式─PA14:JTCK置于下拉模式─PA13:JTMS置于上拉模式─PB4:JNTRST置于上拉模式單獨的位設置或位清除當對GPIOx_ODR的個別位編程時,軟件不需要禁止中斷:在單次APB2寫操作里,可以只更改一個或多個位。這是通過對“置位/復位寄存器”(GPIOx_BSRR,復位是GPIOx_BRR)中想要更改的位寫’1’來實現(xiàn)的。沒被選擇的位將不被更改。5.1綜述外部中斷/喚醒線所有端口都有外部中斷能力。為了使用外部中斷線,端口必須配置成輸入模式。5.1綜述軟件重新映射I/O復用功能為了使不同器件封裝的外設I/O功能的數(shù)量達到最優(yōu),可以把一些復用功能重新映射到其他一些腳上。這可以通過軟件配置相應的寄存器來完成(參考AFIO寄存器描述)。這時,復用功能就不再映射到它們的原始引腳上了。GPIO鎖定機制鎖定機制允許凍結IO配置。當在一個端口位上執(zhí)行了所定(LOCK)程序,在下一次復位之前,將不能再更改端口位的配置。5.1綜述復用功能(AF)使用默認復用功能前必須對端口位配置寄存器編程。●對于復用的輸入功能,端口必須配置成輸入模式(浮空、上拉或下拉)且輸入管腳必須由外部驅動●對于復用輸出功能,端口必須配置成復用功能輸出模式(推挽或開漏)。●對于雙向復用功能,端口位必須配置復用功能輸出模式(推挽或開漏)。這時,輸入驅動器被配置成浮空輸入模式。5.1綜述輸入配置當I/O端口配置為輸入時:●輸出緩沖器被禁止●施密特觸發(fā)輸入被激活●根據(jù)輸入配置(上拉,下拉或浮動)的不同,弱上拉和下拉電阻被連接●出現(xiàn)在I/O腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器●對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)輸出配置當I/O端口被配置為輸出時:●輸出緩沖器被激活●施密特觸發(fā)輸入被激活●弱上拉和下拉電阻被禁止●出現(xiàn)在I/O腳上的數(shù)據(jù)在每個APB2時鐘被采樣到輸入數(shù)據(jù)寄存器●在開漏模式時,對輸入數(shù)據(jù)寄存器的讀訪問可得到I/O狀態(tài)●在推挽式模式時,對輸出數(shù)據(jù)寄存器的讀訪問得到最后一次寫的值。5.1綜述復用功能配置5.1綜述當I/O端口被配置為復用功能時:●在開漏或推挽式配置中,輸出緩沖器被打開●內置外設的信號驅動輸出緩沖器(復用功能輸出)●密特觸發(fā)輸入被激活●弱上拉和下拉電阻被禁止●在每個APB2時鐘周期,出現(xiàn)在I/O腳上的數(shù)據(jù)被采樣到輸入數(shù)據(jù)寄存器●開漏模式時,讀輸入數(shù)據(jù)寄存器時可得到I/O口狀態(tài)●在推挽模式時,讀輸出數(shù)據(jù)寄存器時可得到最后一次寫的值模擬輸入配置當I/O端口被配置為模擬輸入配置時:●輸出緩沖器被禁止;●禁止施密特觸發(fā)輸入,實現(xiàn)了每個模擬I/O引腳上的零消耗。施密特觸發(fā)輸出值被強置為’0’;●弱上拉和下拉電阻被禁止;●讀取輸入數(shù)據(jù)寄存器時數(shù)值為’0’。5.1綜述5.2庫函數(shù)具體函數(shù)用法詳情見STM32固件庫使用手冊5.3I\O端口的外設把OSC32_IN/OSC32_OUT作為GPIO端口PC14/PC15當LSE振蕩器關閉時,LSE振蕩器引腳OSC32_IN/OSC32_OUT可以分別用做GPIO的PC14/PC15,LSE功能始終優(yōu)先于通用I/O口的功能。把OSC32_IN/OSC32_OUT作為GPIO端口PC14/PC15外部振蕩器引腳OSC_IN/OSC_OUT可以用做GPIO的PD0/PD1,通過設置復用重映射和調試I/O配置寄存器(AFIO_MAPR)實現(xiàn)。這個重映射只適用于36、48和64腳的封裝(100腳和144腳的封裝上有單獨的PD0和PD1的引腳,不必重映射)。5.3I\O端口的外設5.3I\O端口的外設CAN復用功能重映射CAN信號可以被映射到端口A、端口B或端口D上,如下表所示。對于端口D,在36、48和64腳的封裝上沒有重映射功能。5.3I\O端口的外設JTAG/SWD復用功能重映射調試接口信號被映射到GPIO端口上,如下表所示。表調試接口信號5.3I\O端口的外設表調試端口映像5.3I\O端口的外設ADC復用功能重映射ADC1外部觸發(fā)注入轉換復用功能重映射(1)ADC1外部觸發(fā)規(guī)則轉換復用功能重映射(1)ADC2外部觸發(fā)注入轉換復用功能重映射(1)5.3I\O端口的外設ADC2外部觸發(fā)規(guī)則轉換復用功能重映射(1)定時器復用功能重映射5.3I\O端口的外設定時器4的通道1到通道4可以從端口B重映射到端口D。其他定時器的重映射列在下表。參見復用重映射和調試I/O配置寄存器(AFIO_MAPR)定時器5復用功能重映像(1)定時器4復用功能重映像5.3I\O端口的外設定時器3復用功能重映像定時器2復用功能重映像定時器1復用功能重映像5.3I\O端口的外設5.3I\O端口的外設USART復用功能重映射USART3重映像USART2重映像5.3I\O端口的外設USART1重映像5.3I\O端口的外設I2C1復用功能重映射I2C1重映像SPI1復用功能重映射SPI1重映像5.4位運算

左移運算符(<<)左移1位相當于該數(shù)乘以2,左移2位相當于該數(shù)乘以22=4,15<<2=60,即乘了4。但此結論只適用于該數(shù)左移時被溢出舍棄的高位中不包含1的情況。假設以一個字節(jié)(8位)存一個整數(shù),若a為無符號整型變量,則a=64時,左移一位時溢出的是0,而左移2位時,溢出的高位中包含1。右移運算符(>>)右移運算符是a>>2表示將a的各二進制位右移2位,移到右端的低位被舍棄,對無符號數(shù),高位補0。例如:a=017時:a的值用二進制形式表示為00001111,舍棄低2位11:a>>2=00000011右移一位相當于除以2右移n位相當于除以2n。5.4位運算5.4位運算“按位與”運算符(&)按位與是指:參加運算的兩個數(shù)據(jù),按二進制位進行“與”運算。如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。即:0&0=0,0&1=0,1&0=0,1&1=1例:3&5并不等于8,應該是按位與運算:

00000011(3)&

00000101(5)

00000001(1)

注意:如果參加&運算的是負數(shù)(如-3&-5),則要以補碼形式表示為二進制數(shù),然后再按位進行“與”運算。3&5的值得15.4位運算“按位或”運算符(|)兩個相應的二進制位中只要有一個為1,該位的結果值為1。即0|0=0,0|1=1,1|0=1,1|1=1例:060|017,將八進制數(shù)60與八進制數(shù)17進行按位或運算。00110000|0000111100111111“取反”運算符(~)~是一個單目(元)運算符,用來對一個二進制數(shù)按位取反,即將0變1,將1變0。例如,~025是對八進制數(shù)25(即二進制數(shù)00010101)按位求反。

0000000000010101(~)1111111111101010(八進制數(shù)177752)5.4位運算“異或”運算符(∧)5.4位運算異或運算符∧也稱XOR運算符。它的規(guī)則是:若參加運算的兩個二進制位同號則結果為0(假)異號則結果為1(真)即:0∧0=0,0∧1=1,1∧0=1,1∧1=000111001∧0010101000010011即:071∧052=023(八進制數(shù))5.5GPIO控制實例控制LED閃爍跑馬燈按鍵輸入5.6外部中斷和中斷控制器嵌套向量中斷控制器特性●60個可屏蔽中斷通道(不包含16個Cortex?-M3的中斷線);●16個可編程的優(yōu)先等級(使用了4位中斷優(yōu)先級);●低延遲的異常和中斷處理;●電源管理控制;●系統(tǒng)控制寄存器的實現(xiàn);嵌套向量中斷控制器(NVIC)和處理器核的接口緊密相連,可以實現(xiàn)低延遲的中斷處理和有效處理地處理晚到的中斷。中斷和異常向量5.6外部中斷和中斷控制器STM32F10xxx產(chǎn)品的向量表5.6外部中斷和中斷控制器5.6外部中斷和中斷控制器5.6外部中斷和中斷控制器5.6外部中斷和中斷控制器外部中斷/事件控制器(EXTI)外部中斷/事件控制器由19個產(chǎn)生事件/中斷要求的邊沿檢測器組成。每個輸入線可以獨立地配置輸入類型(脈沖或掛起)和對應的觸發(fā)事件(上升沿或下降沿或者雙邊沿都觸發(fā))。每個輸入線都可以被獨立的屏蔽。掛起寄存器保持著狀態(tài)線的中斷要求。主要特性EXTI控制器的主要特性如下:●每個中斷/事件都有獨立的觸發(fā)和屏蔽●每個中斷線都有專用的狀態(tài)位●支持多達19個中斷/事件請求●檢測脈沖寬度低于APB2時種寬度的外部信號。參見數(shù)據(jù)手冊中電氣特性部分的相關參數(shù)。5.6外部中斷和中斷控制器5.6外部中斷和中斷控制器硬件中斷選擇通過下面的過程來配置19個線路做為中斷源:●配置19個中斷線的屏蔽位(EXTI_IMR)●配置所選中斷線的觸發(fā)選擇位(EXTI_RTSR和EXTI_FTSR);●配置那些控制映像到外部中斷控制器(EXTI)的NVIC中斷通道的使能和屏蔽位,使得19個中斷線中的請求可以被正確地響應。硬件事件選擇通過下面的過程,可以配置19個線路為事件源●配置19個事件線的屏蔽位(EXTI_EMR)●配置事件線的觸發(fā)選擇位(EXTI_RTSR和EXTI_FTSR)5.6外部中斷和中斷控制器軟件中斷/事件的選擇19個線路可以被配置成軟件中斷/事件線。下面是產(chǎn)生軟件中斷的過程:●配置19個中斷/事件線屏蔽位(EXTI_IMR,EXTI_EMR)●設置軟件中斷寄存器的請求位(EXTI_SWIER)5.6外部中斷和中斷控制器NVIC庫函數(shù)5.6外部中斷和中斷控制器5.6外部中斷和中斷控制器EXTI庫函數(shù)5.6外部中斷和中斷控制器外部中斷實例—按鍵輸入實驗目的

1.熟練掌握單片機GPIO輸入輸出的使用。2.掌握外部中斷的編程步驟。3.使用外部中斷完成按鍵程序的編寫。5.6外部中斷和中斷控制器硬件設計硬件連接圖如下,實驗板上stm32f103x處理器GPIOC的GPIO_Pin_2連接KEY,通過配置GPIO實現(xiàn)如下功能:按下按鍵SW1使LED4熄滅,再次按下時點亮。5.6外部中斷和中斷控制器軟件設計步驟一:添加庫函數(shù),以及操作函數(shù)。添加庫函數(shù)有:startup/start_stm32f10x_hd.c;CMSIS/core_cm3.c;system_stm32f10x.c;FWlib/stm32f10x_gpio.c;stm32f10x_rcc.c;stm32f10x_exti.cFWlib/misc.c。操作函數(shù)有:USER/main.c;stm32f10x_it.c;led.c;exti.c;EXTI2_IRQHandler()。步驟二:打開system_stm32f10x.c文件,配置系統(tǒng)時鐘為72MHZ。步驟三:打開打開led.c文件,使用函數(shù)為LED_GPIO_Config()配置PA10;該函數(shù)的實現(xiàn)步驟如下:5.6外部中斷和中斷控制器

voidLED_GPIO_Config(void){ GPIO_InitTypeDefGPIO_InitStructure;\\配置PB14 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.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);//關閉LED4,熄滅}步驟四:在led.h函數(shù)中設置宏定義:#defineLED4(a) if(a) GPIO_SetBits(GPIOB,GPIO_Pin_14);\\滅 else GPIO_ResetBits(GPIOB,GPIO_Pin_14)\\亮5.6外部中斷和中斷控制器步驟五:配置外部中斷,打開exti.c文件,在這里我們重點解釋函數(shù)EXTI_PE5_Config()的配置步驟。

voidEXTI_PC0_Config(void){GPIO_InitTypeDefGPIO_InitStructure;EXTI_InitTypeDefEXTI_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);\\使能EXTIC線的時鐘和第二功能AFIO時鐘NVIC_Configuration();\\配置EXTIC線的中斷優(yōu)先級配置EXTI中斷線I/OGPIO_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/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,在步驟三中已調用了函數(shù)NVIC_Configuration();NVIC配置步驟:

staticvoidNVIC_Configuration(void){NVIC_InitTypeDefNVIC_InitStructure;\\定義結構體NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論