




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目三中斷系統(tǒng)設(shè)計(jì)任務(wù)1按鍵中斷項(xiàng)目三中斷系統(tǒng)設(shè)計(jì)任務(wù)1任務(wù)2任務(wù)3按鍵中斷定時(shí)器中斷PWM脈寬調(diào)制知識(shí)目標(biāo):1.知道STM32中斷控制機(jī)制;2.知道NVIC中斷優(yōu)先級(jí)。技能目標(biāo):1.會(huì)進(jìn)行NVIC中斷優(yōu)先級(jí)設(shè)置。2.會(huì)外部中斷的編程方法;素養(yǎng)目標(biāo):1.操作規(guī)范,符合5S管理要求;2.具備自主探究、勤學(xué)好問(wèn)的態(tài)度。學(xué)習(xí)目標(biāo)設(shè)計(jì)要求利用STM32中斷系統(tǒng)控制KEY0鍵,要求:第一次按下KEY0鍵,LED0燈點(diǎn)亮,第二次按下LED0鍵燈熄滅,依次進(jìn)行,編寫(xiě)控制程序并進(jìn)行系統(tǒng)調(diào)試。硬件設(shè)計(jì)硬件連接:
知識(shí)導(dǎo)航外設(shè)在作好進(jìn)行一次數(shù)據(jù)輸入輸出準(zhǔn)備后,產(chǎn)生一個(gè)信號(hào)給微處理器請(qǐng)求傳輸數(shù)據(jù),這個(gè)信號(hào)叫中斷請(qǐng)求。引起中斷的原因,或者中斷請(qǐng)求信號(hào)的來(lái)源稱為中斷源。微處理器若可以進(jìn)行數(shù)據(jù)傳輸,則響應(yīng)中斷請(qǐng)求信號(hào),停止當(dāng)前正在執(zhí)行的程序,而轉(zhuǎn)向?qū)υ撏庠O(shè)進(jìn)行新的輸入輸出操作,稱為中斷響應(yīng)。對(duì)外設(shè)進(jìn)行新的輸入輸出操作所執(zhí)行的程序稱為中斷服務(wù)程序。處理完中斷服務(wù)程序后返回原來(lái)執(zhí)行的程序繼續(xù)執(zhí)行,稱為中斷返回。知識(shí)導(dǎo)航
STM32中斷系統(tǒng)CM3內(nèi)核支持256個(gè)中斷,其中包含16個(gè)內(nèi)核中斷和240個(gè)外部中斷,并且具有256級(jí)的可編程中斷設(shè)置。STM32沒(méi)有使用CM3內(nèi)核的全部東西,而只用了它的一部分。STM32有84個(gè)中斷,包括16個(gè)內(nèi)核中斷和68個(gè)可屏蔽中斷,具有16級(jí)可編程的中斷優(yōu)先級(jí)。STM32F103系列只有60個(gè)可屏蔽中斷(107系列才有68個(gè))。知識(shí)導(dǎo)航《STM32中文參考手冊(cè)》知識(shí)導(dǎo)航注意:STM32的中斷通道(中斷線)可能會(huì)由多個(gè)中斷源公用,這就意味著某一個(gè)中斷服務(wù)函數(shù)也可能會(huì)被多個(gè)中斷源所共用。知識(shí)導(dǎo)航幾十個(gè)中斷,怎么管理?知識(shí)導(dǎo)航
NVIC簡(jiǎn)介NVIC全稱:嵌套向量中斷控制器。
NVIC對(duì)中斷進(jìn)行統(tǒng)一的協(xié)調(diào)和控制,其最主要的工作就是控制中斷通道開(kāi)放與否,以及確定中斷的優(yōu)先級(jí)。優(yōu)先級(jí)的數(shù)值越小,則優(yōu)先級(jí)越高。知識(shí)導(dǎo)航STM32的中斷優(yōu)先級(jí)STM32內(nèi)核有兩個(gè)中斷優(yōu)先級(jí),分別是搶占優(yōu)先級(jí)(也稱為主優(yōu)先級(jí))和響應(yīng)優(yōu)先級(jí)(也稱為從優(yōu)先級(jí)),每個(gè)中斷源都需要被指定這兩種中斷優(yōu)先級(jí)。具有高搶占優(yōu)先級(jí)的中斷,可以在具有低搶占優(yōu)先級(jí)的中斷處理過(guò)程中被響應(yīng),即中斷嵌套。知識(shí)導(dǎo)航中斷管理方法對(duì)STM32中斷進(jìn)行分組,組0~4。對(duì)每個(gè)中斷設(shè)置一個(gè)搶占優(yōu)先級(jí)和一個(gè)響應(yīng)優(yōu)先級(jí)值。分組配置是在寄存器SCB->AIRCR中配置。組AIRCR[10:8]IP[7:4]分配情況分配結(jié)果01110:40位搶占優(yōu)先級(jí),4位響應(yīng)優(yōu)先級(jí)11101:31位搶占優(yōu)先級(jí),3位響應(yīng)優(yōu)先級(jí)21012:22位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)31003:13位搶占優(yōu)先級(jí),1位響應(yīng)優(yōu)先級(jí)40114:04位搶占優(yōu)先級(jí),0位響應(yīng)優(yōu)先級(jí)知識(shí)導(dǎo)航搶占優(yōu)先級(jí)&響應(yīng)優(yōu)先級(jí)區(qū)別高優(yōu)先級(jí)的搶占優(yōu)先級(jí)是可以打斷正在進(jìn)行的低搶占優(yōu)先級(jí)的中斷。搶占優(yōu)先級(jí)相同的中斷,高響應(yīng)優(yōu)先級(jí)不可以打斷低響應(yīng)優(yōu)先級(jí)的中斷。搶占優(yōu)先級(jí)相同的中斷,當(dāng)兩個(gè)中斷同時(shí)發(fā)生的情況下,哪個(gè)響應(yīng)優(yōu)先級(jí)高,哪個(gè)先執(zhí)行。如果兩個(gè)中斷的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)都是一樣的話,則看哪個(gè)中斷先發(fā)生就先執(zhí)行。知識(shí)導(dǎo)航舉例假定設(shè)置中斷優(yōu)先級(jí)組為2,然后設(shè)置中斷3(RTC中斷)的搶占優(yōu)先級(jí)為2,響應(yīng)優(yōu)先級(jí)為1;中斷6(外部中斷0)的搶占優(yōu)先級(jí)為3,響應(yīng)優(yōu)先級(jí)為0;中斷7(外部中斷1)的搶占優(yōu)先級(jí)為2,響應(yīng)優(yōu)先級(jí)為0。則這3個(gè)中斷的優(yōu)先級(jí)順序?yàn)椋褐袛?>中斷3>中斷6。知識(shí)導(dǎo)航特別說(shuō)明
一般情況下,系統(tǒng)代碼執(zhí)行過(guò)程中,只設(shè)置一次中斷優(yōu)先級(jí)分組。知識(shí)導(dǎo)航中斷優(yōu)先級(jí)分組函數(shù)(misc.c)函數(shù)原型:voidNVIC_PriorityGroupConfig(u32NVIC_PriorityGroup)函數(shù)功能:設(shè)置優(yōu)先級(jí)分組。參數(shù):NVIC_PriorityGroup優(yōu)先級(jí)分組位長(zhǎng)度。voidNVIC_PriorityGroupConfig(uint32_tNVIC_PriorityGroup){assert_param(IS_NVIC_PRIORITY_GROUP(NVIC_PriorityGroup));SCB->AIRCR=AIRCR_VECTKEY_MASK|NVIC_PriorityGroup;}舉例:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);知識(shí)導(dǎo)航NVIC_PriorityGroup值知識(shí)導(dǎo)航分組設(shè)置好之后,怎么設(shè)置單個(gè)中斷的搶占優(yōu)先級(jí)和響應(yīng)優(yōu)先級(jí)?知識(shí)導(dǎo)航中斷設(shè)置相關(guān)寄存器(core_cm3.h)__IOuint8_tIP[240];//中斷優(yōu)先級(jí)控制的寄存器組__IOuint32_tISER[8];//中斷使能寄存器組__IOuint32_tICER[8];//中斷失能寄存器組__IOuint32_tISPR[8];//中斷掛起寄存器組__IOuint32_tICPR[8];//中斷解掛寄存器組__IOuint32_tIABR[8];//中斷激活標(biāo)志位寄存器組知識(shí)導(dǎo)航對(duì)于每個(gè)中斷怎么設(shè)置優(yōu)先級(jí)?中斷優(yōu)先級(jí)控制的寄存器組:IP[240]。240個(gè)8位寄存器,每個(gè)中斷使用一個(gè)寄存器來(lái)確定優(yōu)先級(jí)。STM32F10x系列一共60個(gè)可屏蔽中斷,使用IP[59]~IP[0]。每個(gè)IP寄存器的高4位用來(lái)設(shè)置搶占和響應(yīng)優(yōu)先級(jí)(根據(jù)分組),低4位沒(méi)有用到。voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)知識(shí)導(dǎo)航函數(shù)NVIC_Init
函數(shù)原型:voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)
函數(shù)功能:根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設(shè)NVIC寄存器。NVIC_InitStruct:指向結(jié)構(gòu)NVIC_InitTypeDef的指針,包含了外設(shè)GPIO的配置信息。知識(shí)導(dǎo)航NVIC_InitTypeDef定義于文件“stm32f10x_nvic.h”typedefstruct{u8NVIC_IRQChannel;u8NVIC_IRQChannelPreemptionPriority;u8NVIC_IRQChannelSubPriority;FunctionalStateNVIC_IRQChannelCmd;}NVIC_InitTypeDef;知識(shí)導(dǎo)航NVIC_IRQChannel該參數(shù)用以使能或者失能指定的IRQ通道。NVIC_IRQChannel描述EXTI0_IRQn外部中斷線0中斷EXTI1_IRQn外部中斷線1中斷EXTI2_IRQn外部中斷線2中斷EXTI3_IRQn外部中斷線3中斷EXTI4_IRQn外部中斷線4中斷TIM2_IRQnTIM2全局中斷TIM3_IRQnTIM3全局中斷TIM4_IRQnTIM4全局中斷知識(shí)導(dǎo)航NVIC_IRQChannelPreemptionPriority該參數(shù)設(shè)置了成員NVIC_IRQChannel中的搶占優(yōu)先級(jí)。NVIC_IRQChannelSubPriority該參數(shù)設(shè)置了成員NVIC_IRQChannel中的響應(yīng)優(yōu)先級(jí)。知識(shí)導(dǎo)航中斷使能寄存器組:ISER[8]
作用:用來(lái)使能中斷。32位寄存器,每個(gè)位控制一個(gè)中斷的使能。STM32F10x只有60個(gè)可屏蔽中斷,所以只使用了其中的ISER[0]和ISER[1]。ISER[0]的bit0~bit31分別對(duì)應(yīng)中斷0~31;ISER[1]的bit0~27對(duì)應(yīng)中斷32~59。知識(shí)導(dǎo)航中斷失能寄存器組:ICER[8]作用:用來(lái)失能中斷。32位寄存器,每個(gè)位控制一個(gè)中斷的失能。STM32F10x只有60個(gè)可屏蔽中斷,所以只使用了其中的ICER[0]和ICER[1]。ICER[0]的bit0~bit31分別對(duì)應(yīng)中斷0~31;ICER[1]的bit0~27對(duì)應(yīng)中斷32~59。知識(shí)導(dǎo)航NVIC_IRQChannelCmd該參數(shù)指定了在成員NVIC_IRQChannel中定義的IRQ通道被使能還是失能。這個(gè)參數(shù)取值為ENABLE或者
DISABLE。知識(shí)導(dǎo)航中斷參數(shù)初始化NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitStructure.NVIC_IRQChannel=EXTI2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);知識(shí)導(dǎo)航
外部中斷概述STM32每一個(gè)GPIO引腳都可以作為外部中斷的中斷輸入口,也就是都能配置成一個(gè)外部中斷觸發(fā)源。STM32F103中斷控制器支持19個(gè)外部中斷(對(duì)于互聯(lián)型產(chǎn)品是20個(gè))事件請(qǐng)求。線0~15:對(duì)應(yīng)外部IO口的輸入中斷。線16:連接到PVD(可編程電壓監(jiān)測(cè)器)輸出。線17:連接到RTC鬧鐘事件。線18:連接到USB喚醒事件。每個(gè)外部中斷線可以獨(dú)立的配置觸發(fā)方式(上升沿、下降沿或者雙邊沿觸發(fā))、使能/屏蔽。知識(shí)導(dǎo)航STM32根據(jù)GPIO端口的引腳序號(hào)不同,把不同GPIO端口、同一個(gè)序號(hào)的引腳組成一組,每組對(duì)應(yīng)一個(gè)外部中斷源(即中斷線)EXTIx(x:0-15)。比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0為第一組,依此類推,我們就能將眾多中斷觸發(fā)源分成16組。GPIO與外部中斷的映射關(guān)系如圖所示。知識(shí)導(dǎo)航函數(shù)GPIO_EXTILineConfig函數(shù)原型:voidGPIO_EXTILineConfig(u8GPIO_PortSource,u8GPIO_PinSource)函數(shù)功能:連接外部中斷線到指定GPIO端口。參數(shù)1:指定的GPIO端口。參數(shù)2:待設(shè)置的外部中斷線路。例如:GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);知識(shí)導(dǎo)航函數(shù)EXTI_Init函數(shù)原型:voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct)函數(shù)功能:根據(jù)EXTI_InitStruct中指定的參數(shù)初始化外部中斷。參數(shù):指向結(jié)構(gòu)EXTI_InitTypeDef的指針,包含了外設(shè)EXTI的配置信息。知識(shí)導(dǎo)航EXTI_InitTypeDef結(jié)構(gòu)體typedefstruct{uint32_tEXTI_Line;//指定要配置的中斷線
EXTIMode_TypeDefEXTI_Mode;//模式:事件OR中斷
EXTITrigger_TypeDefEXTI_Trigger;//觸發(fā)方式
FunctionalStateEXTI_LineCmd;//使能或失能}EXTI_InitTypeDef;知識(shí)導(dǎo)航EXTI_Line:選擇待使能或者失能的外部線路。知識(shí)導(dǎo)航EXTI_Mode:設(shè)置被使能線路的模式。知識(shí)導(dǎo)航EXTI_Trigger:設(shè)置被使能線路的觸發(fā)方式。知識(shí)導(dǎo)航EXTI_LineCmd用來(lái)定義選中線路的狀態(tài)??杀辉O(shè)為ENABLE或者DISABLE。知識(shí)導(dǎo)航實(shí)例EXTI_InitTypeDefEXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line2; EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);知識(shí)導(dǎo)航中斷服務(wù)函數(shù)完成中斷初始化以及配置好中斷優(yōu)先級(jí)之后,接著編寫(xiě)中斷服務(wù)函數(shù)。知識(shí)導(dǎo)航是不是16個(gè)中斷線就可以分配16個(gè)中斷服務(wù)函數(shù)呢?IO外部中斷在中斷向量表中只分配了7個(gè)中斷向量,只能使用7個(gè)中斷服務(wù)函數(shù)。外部中斷線5~9分配一個(gè)中斷向量,共用一個(gè)服務(wù)函數(shù);外部中斷線10~15分配一個(gè)中斷向量,共用一個(gè)中斷服務(wù)函數(shù)。知識(shí)導(dǎo)航中斷服務(wù)函數(shù)EXTI0_IRQHandlerEXTI1_IRQHandlerEXTI2_IRQHandlerEXTI3_IRQHandlerEXTI4_IRQHandlerEXTI9_5_IRQHandlerEXTI15_10_IRQHandler知識(shí)導(dǎo)航常用的中斷服務(wù)函數(shù)格式voidEXTI2_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判斷某個(gè)線上的中斷是否發(fā)生
{中斷邏輯……EXTI_ClearITPendingBit(EXTI_Line2);//清除中斷標(biāo)志位} }知識(shí)導(dǎo)航函數(shù)EXTI_GetITStatus函數(shù)原型:ITStatusEXTI_GetITStatus(u32EXTI_Line)函數(shù)功能:用于判斷中斷是否發(fā)生。參數(shù):所用的中斷線。返回值:EXTI_Line的新?tīng)顟B(tài)(SET或者RESET)。知識(shí)導(dǎo)航
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 木材加工中的木材識(shí)別技術(shù)考核試卷
- 激發(fā)員工自我保護(hù)意識(shí)提升整體安全水平考核試卷
- 游藝用品銷售渠道與售后服務(wù)考核試卷
- 洗滌機(jī)械行業(yè)政策法規(guī)解讀考核試卷
- 煙草制品零售綠色環(huán)保意識(shí)考核試卷
- 再生橡膠在醫(yī)療保健領(lǐng)域的應(yīng)用考核試卷
- 農(nóng)產(chǎn)品批發(fā)業(yè)態(tài)轉(zhuǎn)型考核試卷
- 2010建設(shè)工程合同標(biāo)準(zhǔn)文本
- 公司買(mǎi)賣(mài)中介合同標(biāo)準(zhǔn)文本
- 專職律師聘用合同范例
- 阜陽(yáng)PLC基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025年教育革新:利用AI技術(shù)打造個(gè)性化學(xué)習(xí)
- 2025年廣東省第二季度廣州市城市規(guī)劃勘測(cè)設(shè)計(jì)研究院招聘56人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年中小學(xué)生研學(xué)(勞動(dòng))實(shí)踐教育基地申報(bào)流程
- 基金會(huì)專項(xiàng)信息審核業(yè)務(wù)約定書(shū)參考格式
- 個(gè)體戶信用修復(fù)申請(qǐng)書(shū)范本
- 建設(shè)項(xiàng)目全過(guò)程工程咨詢-第一次形成性考核-國(guó)開(kāi)(SC)-參考資料
- 管理會(huì)計(jì)敏感性分析
- 節(jié)目編排合同模板
- 大班綜合《我的家》課件
- GB/T 44768-2024配電網(wǎng)線損理論計(jì)算導(dǎo)則
評(píng)論
0/150
提交評(píng)論