




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第4講中斷第4講中斷實驗三獨立按鍵控制實驗?zāi)康模赫莆摘毩存I的工作原理及按鍵控制程序的編寫方法。實驗內(nèi)容:PA口的四個按鍵,任意鍵閉合,4個LED燈呈現(xiàn)不同的顯示狀態(tài)。實驗三獨立按鍵控制實驗?zāi)康模赫莆摘毩存I的工作原理及按鍵實驗四按鍵中斷實驗實驗?zāi)康模赫莆誗TM32中斷系統(tǒng)的工作原理,掌握利用函數(shù)庫編寫中斷初始化程序與中斷服務(wù)程序的方法。實驗內(nèi)容:(1)選4個獨立按鍵中任意一個作為外部中斷輸入,4個LED正常以流水燈點亮,按鍵閉合后,4個燈同時循環(huán)亮滅4次,重新回到流水燈狀態(tài)。(2)中斷嵌套實驗。主循環(huán)是流水燈,按鍵1中斷,4個燈同時循環(huán)亮滅10次;按鍵2可以在中斷按鍵1的程序,1、3和2、4燈交替點亮5次。實驗四按鍵中斷實驗實驗?zāi)康模赫莆誗TM32中斷系統(tǒng)的工作實驗五鍵盤識別與數(shù)碼顯示實驗?zāi)康模赫莆站仃囨I盤的按鍵識別原理,以及數(shù)碼管顯示的方法。實驗內(nèi)容:將矩陣鍵盤上的按鍵編號顯示在數(shù)碼管上。(1)只用1位顯示。(2)每按鍵一次,顯示向左移一位,最多顯示6位。接口電路參見光盤資料實驗五鍵盤識別與數(shù)碼顯示實驗?zāi)康模赫莆站仃囨I盤的按鍵識別原主要內(nèi)容4.1基本概念4.2中斷源4.3中斷優(yōu)先級4.4STM32中斷寄存器4.5STM32中斷庫函數(shù)4.6中斷編程舉例4.7練習(xí)題主要內(nèi)容4.1基本概念4.1基本概念中斷是指由于內(nèi)部或者外部事件使CPU暫停當(dāng)前程序,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序的一種工作機(jī)制。中斷系統(tǒng)由中斷源、中斷控制、中斷響應(yīng)幾部分組成。中斷源:中斷請求的來源。中斷控制:中斷的允許/禁止,中斷優(yōu)先級與優(yōu)先級嵌套。中斷響應(yīng):保護(hù)斷點,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。返回4.1基本概念中斷是指由于內(nèi)部或者外部事件使CPU暫停當(dāng)4.2中斷源ARMcortex_m3內(nèi)核支持256個中斷(16個內(nèi)核+240外部)和可編程256級中斷優(yōu)先級的設(shè)置,與其相關(guān)的中斷控制和中斷優(yōu)先級控制寄存器(NVIC、SYSTICK等)也都屬于cortex_m3內(nèi)核的部分。STM32采用了cortex_m3內(nèi)核,但STM32并沒有使用cortex_m3內(nèi)核全部的東西(如內(nèi)存保護(hù)單元MPU等),因此它的NVIC是cortex_m3內(nèi)核的NVIC的子集。
STM32目前支持的中斷共為84個(16個內(nèi)核+68個外部),和16級(使用了4位中斷優(yōu)先級控制)可編程中斷優(yōu)先級的設(shè)置。4.2中斷源ARMcortex_m3內(nèi)核支持256個中斷異常和中斷的概念中斷:該請求信號來自CM3內(nèi)核的外面,來自各種片上外設(shè)和外擴(kuò)的外設(shè)。異常:是因CM3內(nèi)核的活動產(chǎn)生的,即執(zhí)行指令或訪問存儲器時產(chǎn)生。CM3有15個異常,類型號為1~15,沒有編號為0的異常。掛起:一個發(fā)生的異常不能被立即響應(yīng),就稱它為掛起。異常和中斷的概念中斷:該請求信號來自CM3內(nèi)核的外面,來自各中斷的特點對于互聯(lián)型產(chǎn)品,外部中斷/事件控制器由20個產(chǎn)生事件/中斷請求的邊沿檢測器組成,對于其它產(chǎn)品,則有19個能產(chǎn)生事件/中斷請求的邊沿檢測器。每個輸入線可以獨立地配置輸入類型(脈沖或掛起)和對應(yīng)的觸發(fā)事件(上升沿或下降沿或者雙邊沿都觸發(fā))。每個輸入線都可以獨立地被屏蔽。掛起寄存器保持著狀態(tài)線的中斷請求。中斷的特點對于互聯(lián)型產(chǎn)品,外部中斷/事件控制器由20個產(chǎn)生事外部中斷(EXTI)外部中斷/事件控制器(EXTI)有19個中斷請求邊沿檢測器。每個中斷/事件都有獨立的觸發(fā)和屏蔽每個中斷線都有專用的狀態(tài)位EXTI0---EXTI15:連到IO端口,每個EXTIj對應(yīng)GPIOx的引腳j。通過軟件配置,設(shè)定中斷來自哪個引腳。EXTI16:PVD(programmablevoltagedetector)輸出EXTI17:RTC(real-timeclock)鬧鐘事件EXTI18:USB喚醒事件EXTI19:連接到以太網(wǎng)喚醒事件(只適用于互聯(lián)型產(chǎn)品)外部中斷(EXTI)外部中斷/事件控制器(EXTI)有19個硬件中斷選擇通過下面的過程來配置19個線路做為中斷源:配置19個中斷線的屏蔽位(EXTI_IMR)配置所選中斷線的觸發(fā)選擇位(EXTI_RTSR和EXTI_FTSR);配置對應(yīng)到外部中斷控制器(EXTI)的NVIC中斷通道的使能和屏蔽位,使得19個中斷線中的請求可以被正確地響應(yīng)。硬件中斷選擇通過下面的過程來配置19個線路做為中斷源:外部中斷/事件控制器框圖外部中斷/事件控制器框圖要產(chǎn)生中斷,必須先配置好并使能中斷線。根據(jù)需要的邊沿檢測設(shè)置2個觸發(fā)寄存器,同時在中斷屏蔽寄存器的相應(yīng)位寫’1’允許中斷請求。當(dāng)外部中斷線上發(fā)生了期待的邊沿時,將產(chǎn)生一個中斷請求,對應(yīng)的掛起位也隨之被置’1’。在掛起寄存器的對應(yīng)位寫’1’,可以清除它,也可以通過改變邊沿檢測的極性清除。
如果需要產(chǎn)生事件,必須先配置好并使能事件線。根據(jù)需要的邊沿檢測通過設(shè)置2個觸發(fā)寄存器,同時在事件屏蔽寄存器的相應(yīng)位寫’1’允許事件請求。當(dāng)事件線上發(fā)生了需要的邊沿時,將產(chǎn)生一個事件請求脈沖,對應(yīng)的掛起位不被置’1’。通過在軟件中斷/事件寄存器寫’1’,也可以通過軟件產(chǎn)生中斷/事件請求。要產(chǎn)生中斷,必須先配置好并使能中斷線。根據(jù)需要的邊沿檢測設(shè)置112通用I/O端口以下圖的方式連接到16個外部中斷/事件線上:112通用I/O端口以下圖的方式連接到16個外部中斷/事件線EXTICR:外部中斷線路0-15配置寄存器有4個32位的外部中斷線路配置寄存器,高16位保留,低16位用來定義外部中斷線路。EXTICR:外部中斷線路0-15配置寄存器有4個32位的EXTICR:外部中斷線路0-15配置寄存器EXTIx[3:0]:EXTIx配置(x=0…3)(EXTIxconfiguration)這些位可由軟件讀寫,用于選擇EXTIx外部中斷的輸入源。0000:PA[x]引腳0001:PB[x]引腳0010:PC[x]引腳0011:PD[x]引腳0100:PE[x]引腳0101:PF[x]引腳0110:PG[x]引腳EXTICR:外部中斷線路0-15配置寄存器EXTIx[3配置中斷線路函數(shù)GPIO_EXTILineConfig功能描述:選擇GPIO管腳用作外部中斷線路函數(shù)原形:
voidGPIO_EXTILineConfig(u8GPIO_PortSource,u8GPIO_PinSource)輸入?yún)?shù)1:
GPIO_PortSource----選擇用作外部中斷線源的GPIO端口輸入?yún)?shù)2:
GPIO_PinSource----待設(shè)置的外部中斷線路例:/*SelectsPB.8asEXTILine8*/
GPIO_EXTILineConfig(GPIO_PortSource_GPIOB,GPIO_PinSource8);配置中斷線路函數(shù)GPIO_EXTILineConfig功能外部中斷的觸發(fā)方式上升沿、下降沿、上升沿/下降沿EXTI_Trigger_Falling:設(shè)置輸入線路下降沿為中斷請求EXTI_Trigger_Rising:設(shè)置輸入線路上升沿為中斷請求EXTI_Trigger_Rising_Falling:設(shè)置輸入線路雙邊觸發(fā)中斷請求EXTI_Mode_Event:設(shè)置EXTI線路為事件EXTI_Mode_Interrupt:設(shè)置EXTI線路為中斷請求EXTI_LineCmd:用來定義選中線路的新狀態(tài)。它可以被設(shè)為ENABLE或者DISABLE。外部中斷的觸發(fā)方式上升沿、下降沿、上升沿/下降沿中斷初始化函數(shù)EXTI_Init例:/*Enablesexternallines12and14interruptgenerationonfallingedge*/
EXTI_InitTypeDefEXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line12|EXTI_Line14;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);
返回中斷初始化函數(shù)EXTI_Init例:/*Enablese4.3中斷優(yōu)先級中斷優(yōu)先級分組:STM32有5種優(yōu)先級管理方式,在一個系統(tǒng)中,選用其中一種。通過設(shè)置32位寄存器AIRC的[10:8]位,指定組別。優(yōu)先級分組:第0組:16個從優(yōu)先級第1組:2個搶占優(yōu)先級,8個從優(yōu)先級第2組:4個搶占優(yōu)先級,4個從優(yōu)先級第3組:8個搶占優(yōu)先級,2個從優(yōu)先級第4組:16個搶占優(yōu)先級4.3中斷優(yōu)先級中斷優(yōu)先級分組:STM32有5種優(yōu)先級管理優(yōu)先級控制說明具有較高搶占優(yōu)先級的中斷(數(shù)字小的)可以實現(xiàn)中斷嵌套。從優(yōu)先級不管高低,只能排隊。在搶占優(yōu)先級相同時,先響應(yīng)從優(yōu)先級高的中斷。搶占優(yōu)先級和從優(yōu)先級都相同時,根據(jù)它們在中斷表中的排位順序決定,序號小的先被處理。例:/*ConfigurethePriorityGroupingwith1bit*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);優(yōu)先級控制說明具有較高搶占優(yōu)先級的中斷(數(shù)字小的)可以實現(xiàn)中4.4STM32中斷寄存器EXTI_IMR:中斷屏蔽寄存器
0:屏蔽來自線x上的中斷請求;1:開放來自線x上的中斷請求。EXTI_EMR:事件屏蔽寄存器
0:屏蔽來自線x上的事件請求;1:開放來自線x上的事件請求。EXTI_RTSR:上升沿觸發(fā)選擇寄存器
1:允許輸入線x上的上升沿觸發(fā)(中斷和事件);0:禁止。EXTI_FTSR:下降沿觸發(fā)選擇寄存器
1:允許輸入線x上的下降沿觸發(fā)(中斷和事件);0:禁止。EXTI_SWIER:軟件中斷事件寄存器
當(dāng)某位為’0’時,寫’1’將設(shè)置EXTI_PR中相應(yīng)的掛起位。如果在EXTI_IMR和EXTI_EMR中允許產(chǎn)生該中斷,則此時將產(chǎn)生一個中斷。注:通過清除EXTI_PR的對應(yīng)位(寫入’1’),可以清除該位為’0’。
EXTI_PR:掛起寄存器當(dāng)在外部中斷線上發(fā)生了選擇的邊沿事件,該位被置’1’。在該位中寫入’1’可以清除它,也可以通過改變邊沿檢測的極性清除。4.4STM32中斷寄存器EXTI_IMR:中斷屏蔽寄存器返回返回EXTI庫函數(shù)EXTI_DeInit:將外設(shè)EXTI寄存器重設(shè)為缺省值EXTI_Init:根據(jù)EXTI_InitStruct中指定的參數(shù)初始化外設(shè)EXTI寄存器。EXTI_StructInit:把EXTI_InitStruct中的每一個參數(shù)按缺省值填入。EXTI_GenerateSWInterrupt:產(chǎn)生一個軟件中斷。EXTI_GetFlagStatus:檢查指定的EXTI線路標(biāo)志位設(shè)置與否。EXTI_ClearFlag:清除EXTI線路掛起標(biāo)志位。EXTI_GetITStatus:檢查指定的EXTI線路觸發(fā)請求發(fā)生與否。EXTI_ClearITPendingBit:清除EXTI線路掛起位EXTI庫函數(shù)EXTI_DeInit:將外設(shè)EXTI寄存器函數(shù)EXTI_Init
功能描述:根據(jù)EXTI_InitStruct中指定的參數(shù)初始化外設(shè)EXTI寄存器。函數(shù)原形:
voidEXTI_Init(EXTI_InitTypeDef*EXTI_InitStruct)輸入?yún)?shù):
EXTI_InitStruct----指向結(jié)構(gòu)EXTI_InitTypeDef的指針。函數(shù)EXTI_Init功能描述:根據(jù)EXTI_InitSEXTI_InitTypeDef定義于文件“stm32f10x_exti.h”:
typedefstruct{u32EXTI_Line;EXTIMode_TypeDefEXTI_Mode;EXTIrigger_TypeDefEXTI_Trigger;FunctionalStateEXTI_LineCmd;} EXTI_InitTypeDef;EXTI_InitTypeDef定義于文件“stm32f10EXTI_Line:EXTI_Line0----EXTI_Line18,其中之一。EXTI_Mode:
EXTI_Mode_Event或者EXTI_Mode_InterruptEXTI_Trigger:
EXTI_Trigger_Falling或者EXTI_Trigger_Rising
或者EXTI_Trigger_Rising_FallingEXTI_LineCmd:ENABLE或者DISABLEEXTI_Line:EXTI_Line0----EXTI例:/*Enablesexternallines12and14interruptgenerationonfallingedge*/EXTI_InitTypeDefEXTI_InitStructure;EXTI_InitStructure.EXTI_Line=EXTI_Line12|EXTI_Line14;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);
例:/*Enablesexternallines1函數(shù)EXTI_GetFlagStatus
功能描述:檢查指定的EXTI線路標(biāo)志位設(shè)置與否函數(shù)原形:
FlagStatusEXTI_GetFlagStatus(u32EXTI_Line)輸入?yún)?shù):EXTI_Line---待檢查的EXTI線路標(biāo)志位。返回值:EXTI_Line的新狀態(tài)(SET或者RESET)例:/*GetthestatusofEXTIline8*/FlagStatusEXTIStatus;EXTIStatus=EXTI_GetFlagStatus(EXTI_Line8);函數(shù)EXTI_GetFlagStatus功能描述:檢查指定固態(tài)函數(shù)庫的編碼規(guī)則布爾型typedefenum{FALSE=0,TRUE=!FALSE}bool;標(biāo)志位狀態(tài)類型typedefenum{RESET=0,SET=!RESET}FlagStatus;固態(tài)函數(shù)庫的編碼規(guī)則布爾型標(biāo)志位狀態(tài)類型錯誤狀態(tài)類型typedefenum{ERROR=0,SUCCESS=!ERROR}ErrorStatus;功能狀態(tài)類型
typedefenum{DISABLE=0,ENABLE=!DISABLE}FunctionalState;錯誤狀態(tài)類型功能狀態(tài)類型固態(tài)函數(shù)庫定義了24個變量類型,它們的類型和大小是固定的。typedefsignedlongs32;typedefsignedshorts16;typedefsignedchars8;typedefsignedlongconstsc32;/*ReadOnly*/typedefsignedshortconstsc16;/*ReadOnly*/typedefsignedcharconstsc8;/*ReadOnly*/typedefvolatilesignedlongvs32;typedefvolatilesignedshortvs16;typedefvolatilesignedcharvs8;typedefvolatilesignedlongconstvsc32;/*ReadOnly*/typedefvolatilesignedshortconstvsc16;/*ReadOnly*/typedefvolatilesignedcharconstvsc8;/*ReadOnly*/固態(tài)函數(shù)庫定義了24個變量類型,它們的類型和大小是固定的。ttypedefunsignedlongu32;typedefunsignedshortu16;typedefunsignedcharu8;typedefunsignedlongconstuc32;/*ReadOnly*/typedefunsignedshortconstuc16;/*ReadOnly*/typedefunsignedcharconstuc8;/*ReadOnly*/typedefvolatileunsignedlongvu32;typedefvolatileunsignedshortvu16;typedefvolatileunsignedcharvu8;typedefvolatileunsignedlongconstvuc32;/*ReadOnly*/typedefvolatileunsignedshortconstvuc16;/*ReadOnly*/typedefvolatileunsignedcharconstvuc8;/*ReadOnly*/typedefunsignedlongu32;函數(shù)EXTI_ClearFlag
功能描述:清除EXTI線路掛起標(biāo)志位。函數(shù)原形:voidEXTI_ClearFlag(u32EXTI_Line)輸入?yún)?shù):EXTI_Line----待清除標(biāo)志位的EXTI線路例:
/*CleartheEXTIline2pendingflag*/EXTI_ClearFlag(EXTI_Line2);函數(shù)EXTI_ClearFlag功能描述:清除EXTI線路函數(shù)EXTI_GetITStatus
功能描述:檢查指定的EXTI線路觸發(fā)請求發(fā)生與否。(檢查中斷請求&中斷允許控制位)函數(shù)原形:
ITStatusEXTI_GetITStatus(u32EXTI_Line)返回值:EXTI_Line的新狀態(tài)(SET或者RESET)例:/*GetthestatusofEXTIline8*/ITStatusEXTIStatus;EXTIStatus=EXTI_GetITStatus(EXTI_Line8);函數(shù)EXTI_GetITStatus功能描述:檢查指定的E函數(shù)EXTI_ClearITPendingBit
功能描述:清除EXTI線路掛起位函數(shù)原形:
voidEXTI_ClearITPendingBit(u32EXTI_Line)例:/*ClearstheEXTIline2interruptpendingbit*/EXTI_ClearITpendingBit(EXTI_Line2);函數(shù)EXTI_ClearITPendingBit功能描述:NVIC庫函數(shù)NVIC_DeInit:將外設(shè)NVIC寄存器重設(shè)為缺省值NVIC_PriorityGroupConfig:設(shè)置優(yōu)先級分組NVIC_Init:根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設(shè)NVIC寄存器。NVIC_SetVectorTable:設(shè)置向量表的位置和偏移NVIC庫函數(shù)NVIC_DeInit:將外設(shè)NVIC寄存器函數(shù)NVIC_PriorityGroupConfig功能:用來設(shè)置優(yōu)先級分組(先占優(yōu)先級和從優(yōu)先級)函數(shù)原形:
voidNVIC_PriorityGroupConfig(u32NVIC_PriorityGroup)例:/*ConfigurethePriorityGroupingwith1bit*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);函數(shù)NVIC_PriorityGroupConfig功能:用NVIC_PriorityGroup描述NVIC_PriorityGroup函數(shù)NVIC_Init
功能描述:根據(jù)NVIC_InitStruct中指定的參數(shù)初始化外設(shè)NVIC寄存器。函數(shù)原形:
voidNVIC_Init(NVIC_InitTypeDef*NVIC_InitStruct)輸入?yún)?shù):
NVIC_InitStruct----指向結(jié)構(gòu)NVIC_InitTypeDef的指針。函數(shù)NVIC_Init功能描述:根據(jù)NVIC_InitSNVIC_InitTypeDefstructure
NVIC_InitTypeDef定義于文件“stm32f10x_nvic.h”:
typedefstruct{u8NVIC_IRQChannel;u8NVIC_IRQChannelPreemptionPriority;u8NVIC_IRQChannelSubPriority;FunctionalStateNVIC_IRQChannelCmd;}NVIC_InitTypeDef;NVIC_IRQChannelCmd:指定了在成員NVIC_IRQChannel中定義的IRQ通道被使能還是失能NVIC_InitTypeDefstructureNVINVIC_IRQChannel值EXTI0_IRQChannel:外部中斷線0中斷EXTI1_IRQChannel:外部中斷線1中斷EXTI2_IRQChannel:外部中斷線2中斷EXTI3_IRQChannel:外部中斷線3中斷EXTI4_IRQChannel:外部中斷線4中斷EXTI9_5_IRQChannel:外部中斷線9-5中斷EXTI15_10_IRQChannel:外部中斷線15-10中斷TIM2_IRQChannel:TIM2全局中斷TIM3_IRQChannel:TIM3全局中斷TIM4_IRQChannel:TIM4全局中斷…………NVIC_IRQChannel值EXTI0_IRQChann例:NVIC_InitTypeDefNVIC_InitStructure;/*ConfigurethePriorityGroupingwith1bit*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
/*EnableTIM3globalinterruptwithPreemptionPriority0andSubPriorityas2*/NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStructure(&NVIC_InitStructure);
//EnableEXTI4interruptwithPreemptionPriority1andSubPriorityas7NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStructure.NVIC_IRQChannelSubPriority=7;NVIC_InitStructure(&NVIC_InitStructure);例:函數(shù)NVIC_StructInit
功能描述:把NVIC_InitStruct中的每一個參數(shù)按缺省值填入。
成員
缺省值NVIC_IRQChannel 0x0NVIC_IRQChannelPreemptionPriority 0NVIC_IRQChannelSubPriority 0NVIC_IRQChannelCmd DISABLE例:
NVIC_InitTypeDefNVIC_InitStructure;NVIC_StructInit(&NVIC_InitStructure);
返回函數(shù)NVIC_StructInit功能描述:把NVIC_I4.6中斷編程舉例定義變量聲明函數(shù)主程序配置時鐘配置中斷優(yōu)先級配置GPIO配置EXTI主循環(huán)4個LED循環(huán)點亮中斷服務(wù)函數(shù)1,2燈和3,4燈交替點亮5次4.6中斷編程舉例定義變量#include"stm32f10x_lib.h" ErrorStatusHSEStartUpStatus;externvu32TimingDelay;u8ReadValue1,ReadValue2,ReadValue3,ReadValue4;voidRCC_Configuration(void); voidGPIO_Configuration(void);voidNVIC_Configuration(void);voidEXTI_Configuration(void);externvoidDelay(vu32nTime);#include"stm32f10x_lib.h" intmain() { RCC_Configuration(); /*配置系統(tǒng)時鐘*/ NVIC_Configuration(); /*配置中斷優(yōu)先級*/ GPIO_Configuration(); /*IO口初始化*/ EXTI_Configuration(); /*配置外部中斷*/
while(1) { GPIOC->ODR=0xfffffffe; /*PC0=0-->點亮D2*/ Delay(8000000); GPIOC->ODR=0xfffffffd; /*PC1=0-->點亮D3*/ Delay(8000000); GPIOC->ODR=0xfffffffb; /*PC2=0-->點亮D4*/ Delay(8000000); GPIOC->ODR=0xfffffff7; /*PC3=0-->點亮D5*/ Delay(8000000); }}intmain() voidRCC_Configuration(){//系統(tǒng)時鐘配置,略。
//使能外設(shè)時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);}voidDelay(vu32nCount) /*延時*/{for(;nCount!=0;nCount--);}voidRCC_Configuration()voidEXTI_Configuration(){GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3); EXTI_InitTypeDefEXTI_InitStructure; EXTI_InitStructure.EXTI_Line=EXTI_Line3; EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_LineCmd=ENABLE; EXTI_Init(&EXTI_InitStructure);}voidEXTI_Configuration()voidNVIC_Configuration(){ NVIC_InitTypeDefNVIC_InitStructure;
/*SettheVectorTablebaselocationat0x20000000*///設(shè)置向量表的位置和偏移
#ifdefVECT_TAB_RAM NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0); #else/*VECT_TAB_FLASHSettheVectorTablebaselocationat0x08000000*/ NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0); #endif /*Configureonebitforpreemptionpriority*/ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel=EXTI3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0; NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; NVIC_Init(&NVIC_InitStructure);}voidNVIC_Configuration()voidGPIO_Configuration() /*IO口初始化*/{ GPIO_InitTypeDefGPIO_InitStructure; /*PA0~PA3口配置為輸入*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); /*PC0~PC3口配置為輸出*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOC,&GPIO_InitStructure);}voidGPIO_Configuration() /中斷服務(wù)程序voidEXTI3_IRQHandler(void){ inti=0; if(EXTI_GetITStatus(EXTI_Line3)!=RESET) { EXTI_
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度網(wǎng)絡(luò)安全就業(yè)協(xié)議書協(xié)議內(nèi)容詳盡規(guī)范
- 二零二五年度股權(quán)投資公司股東合作協(xié)議
- 2025年度軟裝行業(yè)市場監(jiān)測與風(fēng)險評估合同
- 二零二五年度廣東省房屋租賃合同租賃保險合作協(xié)議
- 二零二五年度娛樂產(chǎn)業(yè)動漫IP授權(quán)使用勞動合同
- 二零二五年度店鋪轉(zhuǎn)讓定金及品牌授權(quán)使用合同
- 二零二五年度商業(yè)空間合租租賃及稅務(wù)咨詢合同
- 二零二五年度旅游度假村裝修合同終止書
- 2025年度防火門市場調(diào)研與銷售預(yù)測合同
- 二零二五年度影視特效藝術(shù)家專屬簽約合同
- 2023年包頭輕工職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)題庫及答案解析
- 2023年湖南食品藥品職業(yè)學(xué)院高職單招(英語)試題庫含答案解析
- GB/T 39096-2020石油天然氣工業(yè)油氣井油管用鋁合金管
- 爐外精煉說課
- GB/T 23111-2008非自動衡器
- GB/T 18877-2020有機(jī)無機(jī)復(fù)混肥料
- 三大構(gòu)成之立體構(gòu)成-課件
- DB11 938-2022 綠色建筑設(shè)計標(biāo)準(zhǔn)
- 最新家政服務(wù)員培訓(xùn)課件
- 2022譯林版新教材高一英語必修二單詞表及默寫表
- 全國青少年機(jī)器人技術(shù)等級考試:二級培訓(xùn)全套課件
評論
0/150
提交評論