【大學(xué)課件】單片機中斷的應(yīng)用2_第1頁
【大學(xué)課件】單片機中斷的應(yīng)用2_第2頁
【大學(xué)課件】單片機中斷的應(yīng)用2_第3頁
【大學(xué)課件】單片機中斷的應(yīng)用2_第4頁
【大學(xué)課件】單片機中斷的應(yīng)用2_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

單片機中斷的應(yīng)用歡迎來到單片機中斷應(yīng)用的課程。本課程將深入探討中斷機制,幫助您掌握這一重要的單片機編程技術(shù)。概述中斷定義中斷是單片機暫停當(dāng)前任務(wù),轉(zhuǎn)而執(zhí)行特定服務(wù)程序的機制。應(yīng)用范圍中斷廣泛應(yīng)用于實時控制、數(shù)據(jù)采集和通信等領(lǐng)域。學(xué)習(xí)目標(biāo)掌握中斷原理,能夠設(shè)計和實現(xiàn)各種中斷應(yīng)用。為什么需要中斷?實時響應(yīng)中斷允許單片機快速響應(yīng)外部事件,提高系統(tǒng)實時性。資源效率避免輪詢帶來的資源浪費,提高系統(tǒng)整體效率。并發(fā)處理使單片機能夠同時處理多個任務(wù),增強系統(tǒng)功能。中斷的基本原理1中斷請求外部事件或內(nèi)部定時器觸發(fā)中斷請求。2程序暫停當(dāng)前程序執(zhí)行暫停,保存現(xiàn)場。3中斷服務(wù)跳轉(zhuǎn)到中斷服務(wù)程序執(zhí)行特定任務(wù)。4恢復(fù)執(zhí)行中斷服務(wù)結(jié)束后,恢復(fù)主程序執(zhí)行。中斷向量定義中斷向量是中斷服務(wù)程序的入口地址。存儲位置通常存儲在單片機程序存儲器的低地址區(qū)。作用使單片機能夠快速找到并執(zhí)行相應(yīng)的中斷服務(wù)程序。配置方法在程序中設(shè)置中斷向量表,指定各中斷的處理函數(shù)。中斷處理程序保存現(xiàn)場保存關(guān)鍵寄存器內(nèi)容,如狀態(tài)寄存器和程序計數(shù)器。執(zhí)行任務(wù)完成特定的中斷服務(wù)任務(wù),如數(shù)據(jù)采集或設(shè)備控制。清除標(biāo)志清除相關(guān)中斷標(biāo)志位,防止重復(fù)觸發(fā)。恢復(fù)現(xiàn)場恢復(fù)保存的寄存器內(nèi)容,準(zhǔn)備返回主程序。中斷優(yōu)先級1最高優(yōu)先級復(fù)位中斷2高優(yōu)先級外部中斷3中優(yōu)先級定時器中斷4低優(yōu)先級串口中斷5最低優(yōu)先級軟件中斷中斷優(yōu)先級決定了多個中斷同時發(fā)生時的處理順序。高優(yōu)先級中斷可以打斷低優(yōu)先級中斷的執(zhí)行。中斷嵌套定義高優(yōu)先級中斷可以打斷正在執(zhí)行的低優(yōu)先級中斷。結(jié)構(gòu)形成多層次的中斷處理結(jié)構(gòu)。優(yōu)勢提高系統(tǒng)對高優(yōu)先級事件的響應(yīng)速度。中斷禁止與恢復(fù)全局中斷禁止禁止所有中斷,用于保護關(guān)鍵代碼段。示例:CLI指令(清除中斷標(biāo)志位)局部中斷禁止禁止特定中斷,允許其他中斷繼續(xù)工作。示例:清除特定中斷使能位中斷恢復(fù)重新使能被禁止的中斷。示例:SEI指令(設(shè)置中斷標(biāo)志位)中斷應(yīng)用實例1:LED點陣顯示1設(shè)計目標(biāo)使用中斷實現(xiàn)8x8LED點陣的動態(tài)掃描顯示。2硬件準(zhǔn)備連接LED點陣到單片機I/O口,設(shè)計驅(qū)動電路。3軟件實現(xiàn)利用定時中斷進行LED點陣的逐行掃描。4效果展示實現(xiàn)文字滾動、圖案顯示等動態(tài)效果。LED點陣顯示設(shè)計思路1定時中斷初始化配置定時器,設(shè)置適當(dāng)?shù)闹袛嘀芷凇?顯示緩沖區(qū)設(shè)計創(chuàng)建數(shù)組存儲顯示數(shù)據(jù)。3掃描函數(shù)編寫在中斷中實現(xiàn)逐行掃描。4顯示更新主程序中更新顯示緩沖區(qū)內(nèi)容。LED點陣驅(qū)動電路驅(qū)動電路原理圖使用74HC595移位寄存器和ULN2803驅(qū)動芯片實現(xiàn)行列控制。PCB布局合理布局元件,注意信號線路的布置,減少干擾。實物圖焊接完成的LED點陣驅(qū)動電路板。中斷實現(xiàn)LED點陣掃描voidTIM2_IRQHandler(void){staticuint8_trow=0;//清除行選擇HAL_GPIO_WritePin(ROW_PORT,ROW_PINS,GPIO_PIN_SET);//輸出列數(shù)據(jù)HAL_GPIO_WritePin(COL_PORT,COL_PINS,display_buffer[row]);//選擇當(dāng)前行HAL_GPIO_WritePin(ROW_PORT,ROW_PIN[row],GPIO_PIN_RESET);//更新行計數(shù)row=(row+1)%8;//清除中斷標(biāo)志__HAL_TIM_CLEAR_IT(&htim2,TIM_IT_UPDATE);}中斷應(yīng)用實例2:定時中斷精確計時實現(xiàn)毫秒級精確計時,用于各種定時控制應(yīng)用。周期性任務(wù)執(zhí)行固定周期的任務(wù),如傳感器采樣、狀態(tài)更新等。系統(tǒng)節(jié)拍為操作系統(tǒng)或任務(wù)調(diào)度提供基本時間基準(zhǔn)。定時中斷的作用精確延時替代循環(huán)延時,提高系統(tǒng)實時性。不會阻塞其他任務(wù)的執(zhí)行。多任務(wù)協(xié)調(diào)為多個任務(wù)提供時間片,實現(xiàn)準(zhǔn)并行處理。可用于簡單的任務(wù)調(diào)度。周期性事件觸發(fā)定期執(zhí)行特定任務(wù),如數(shù)據(jù)采集、顯示刷新等。保證任務(wù)的精確周期性。定時器初始化配置voidTimer_Init(void){//使能定時器時鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

//配置定時器TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Period=999;TIM_TimeBaseStructure.TIM_Prescaler=71;TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

//使能定時器中斷TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

//啟動定時器TIM_Cmd(TIM2,ENABLE);}定時中斷處理程序進入中斷保存當(dāng)前上下文,準(zhǔn)備執(zhí)行中斷服務(wù)程序。任務(wù)執(zhí)行完成定時任務(wù),如更新系統(tǒng)時鐘、觸發(fā)周期性事件。清除標(biāo)志清除定時器中斷標(biāo)志,防止重復(fù)觸發(fā)。退出中斷恢復(fù)保存的上下文,返回主程序繼續(xù)執(zhí)行。中斷應(yīng)用實例3:外部中斷應(yīng)用場景按鍵檢測、傳感器觸發(fā)、緊急停止等需要快速響應(yīng)的情況。觸發(fā)方式可配置為上升沿、下降沿或雙邊沿觸發(fā)。優(yōu)勢無需輪詢,節(jié)省CPU資源,響應(yīng)速度快。注意事項需考慮按鍵抖動問題,采取軟件或硬件去抖措施。外部中斷的作用按鍵檢測實現(xiàn)按鍵的即時響應(yīng),提高用戶交互體驗。傳感器觸發(fā)快速響應(yīng)環(huán)境變化,如紅外感應(yīng)、限位開關(guān)等。緊急事件處理及時處理緊急停止、故障報警等重要事件。外部中斷初始化配置voidEXTI_Config(void){GPIO_InitTypeDefGPIO_InitStructure;EXTI_InitTypeDefEXTI_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;//使能GPIOA時鐘和AFIO時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//配置PA0為輸入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;GPIO_Init(GPIOA,&GPIO_InitStructure);//將EXTI線0連接到PA0GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);//配置EXTI線0EXTI_InitStructure.EXTI_Line=EXTI_Line0;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);//配置NVICNVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x0F;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x0F;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}外部中斷處理程序1中斷觸發(fā)外部事件觸發(fā)中斷,程序跳轉(zhuǎn)到中斷服務(wù)程序。2去抖處理通過軟件延時或多次采樣確認信號穩(wěn)定。3執(zhí)行任務(wù)根據(jù)中斷源執(zhí)行相應(yīng)的處理任務(wù)。4清除標(biāo)志清除中斷標(biāo)志位,為下次中斷做準(zhǔn)備。中斷應(yīng)用實例4:串口中斷接收中斷當(dāng)接收緩沖區(qū)有新數(shù)據(jù)時觸發(fā),實現(xiàn)高效的數(shù)據(jù)接收。發(fā)送中斷發(fā)送緩沖區(qū)為空時觸發(fā),用于連續(xù)發(fā)送大量數(shù)據(jù)。錯誤中斷檢測并處理通信錯誤,如幀錯誤、奇偶校驗錯誤等。串口接收中斷中斷觸發(fā)條件接收緩沖區(qū)非空時觸發(fā)中斷。數(shù)據(jù)處理讀取接收到的數(shù)據(jù),存入緩沖區(qū)或直接處理。緩沖區(qū)管理使用循環(huán)緩沖區(qū)存儲接收到的數(shù)據(jù)。溢出處理檢測并處理接收緩沖區(qū)溢出情況。串口發(fā)送中斷準(zhǔn)備數(shù)據(jù)將要發(fā)送的數(shù)據(jù)放入發(fā)送緩沖區(qū)。啟動發(fā)送開啟發(fā)送中斷,開始發(fā)送第一個字節(jié)。中斷處理在中斷中繼續(xù)發(fā)送后續(xù)數(shù)據(jù)。完成發(fā)送所有數(shù)據(jù)發(fā)送完畢后,關(guān)閉發(fā)送中斷。中斷應(yīng)用實例5:AD轉(zhuǎn)換中斷連續(xù)采樣實現(xiàn)高速、連續(xù)的模擬信號采集。多通道采集輪詢多個模擬輸入通道,實現(xiàn)多路信號采集。數(shù)據(jù)處理在中斷中進行濾波、平均等數(shù)據(jù)處理。AD轉(zhuǎn)換中斷初始化voidADC_Config(void){ADC_InitTypeDefADC_InitStructure;

//使能ADC時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);

//配置ADCADC_InitStructure.ADC_Mode=ADC_Mode_Independent;ADC_InitStructure.ADC_ScanConvMode=DISABLE;ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;ADC_InitStructure.ADC_NbrOfChannel=1;ADC_Init(ADC1,&ADC_InitStructure);

//配置ADC通道ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_55Cycles5);

//使能ADC中斷ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);

//啟動ADCADC_Cmd(ADC1,ENABLE);}AD轉(zhuǎn)換中斷處理1中斷觸發(fā)AD轉(zhuǎn)換完成后觸發(fā)中斷。2讀取數(shù)據(jù)從ADC數(shù)據(jù)寄存器讀取轉(zhuǎn)換結(jié)果。3數(shù)據(jù)處理對采集到的數(shù)據(jù)進行濾波或其他處理。4啟動下次轉(zhuǎn)換如果需要連續(xù)采樣,啟動下一次AD轉(zhuǎn)換。中斷應(yīng)用注意事項中斷時間保持中斷服務(wù)程序簡短,避免長時間占用CPU。共享資源注意中斷與主程序間共享資源的互斥訪問。中斷嵌套合理配置中斷優(yōu)先級,避免低優(yōu)先級中斷長期得不

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論