![stm3串口中斷總結(jié)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/012f0d9e-beb4-45a6-ad04-99c3f021d299/012f0d9e-beb4-45a6-ad04-99c3f021d2991.gif)
![stm3串口中斷總結(jié)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/012f0d9e-beb4-45a6-ad04-99c3f021d299/012f0d9e-beb4-45a6-ad04-99c3f021d2992.gif)
![stm3串口中斷總結(jié)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/012f0d9e-beb4-45a6-ad04-99c3f021d299/012f0d9e-beb4-45a6-ad04-99c3f021d2993.gif)
![stm3串口中斷總結(jié)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/012f0d9e-beb4-45a6-ad04-99c3f021d299/012f0d9e-beb4-45a6-ad04-99c3f021d2994.gif)
![stm3串口中斷總結(jié)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/12/012f0d9e-beb4-45a6-ad04-99c3f021d299/012f0d9e-beb4-45a6-ad04-99c3f021d2995.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、本文以USART1為例,敘述串口中斷的編程過程。1、先來講述一下在應(yīng)用串口中斷時(shí)涉及到的一些庫文件。首先對(duì)于STM32外設(shè)庫文件的應(yīng)用編程,misc.c和stm32f10x_rcc.c是肯定要添加到。接下來就是我們要用到的相關(guān)外設(shè)了。毫無疑問,串口文件stm32f10x_usart.c是必須的。串口通信是對(duì)通用 GPIO端口引腳的功能復(fù)用,所以還需要stm32f10x_gpio.c文件。另外,因?yàn)橛兄袛嗟漠a(chǎn)生,所以中斷文件stm32f10x_it.c也是必要的,當(dāng)然這個(gè)文件一般和main.c放在一個(gè)文件夾下(一般習(xí)慣為User文件夾),因?yàn)槲覀兊闹袛囗憫?yīng)函數(shù)是要在里面自己編寫 的。當(dāng)然還有其他
2、的基本必須文件如系統(tǒng)配置文件等在這地方就不說了,這個(gè)是創(chuàng)建一個(gè)工程應(yīng)該知道的。2、初始化對(duì)于串口通信的初始化,不僅僅只是對(duì)串口的初始化(這個(gè)地方是比較煩人的,不像別的芯片那樣簡潔明了)。首先時(shí)鐘使能配置。STM32內(nèi)部的時(shí)鐘有很多,感興趣的自己看看參考手冊(cè)。此處以USART1為例說明。有 USART1時(shí)鐘、GPIOA時(shí)鐘、GPIO復(fù)用(AFIO)時(shí)鐘。由于 此處USART1和GPIOA、AFIO均在APB2上,所以可以一次配置完成。如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB 2Periph
3、_USART1 ,ENABLE);其次中斷配置。主要有優(yōu)先級(jí)組設(shè)定、USART1中斷使能、該中斷的優(yōu)先級(jí),中斷初始化。程序如下:void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); / 選擇分組方式 0/*使能USART中斷*/NVIC_InitStructure.NVIC_IRQChannel = USART_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
4、NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); )然后GPIO復(fù)用功能配置。一般情況下我們使用原始的外設(shè)和GPIO端口引腳的映射關(guān)系,如果要改變其映射的話,請(qǐng)另外查看參考手冊(cè)上關(guān)于GPIO重映射部分。對(duì)I 于GPIO的復(fù)用,其引腳的輸入與輸出模式都有要求,在參考手冊(cè)上有詳細(xì)說明。void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure;/*配置USART Rx作為浮空輸入*/GPIO_InitStruc
5、ture.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(USARTy_GPIO, &GPIO_InitStructure);/*配置USART Tx作為推挽輸出*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(USA
6、RTy_GPIO, &GPIO_InitStructure);)串口初始化配置。主要有串口基本參數(shù)配置(如波特率、數(shù)據(jù)位、工作方式等),串口中斷使能,串口使能。(1)基本參數(shù)配置USART_InitTypeDef USART_InitStructure;USART_InitStructure.USART_BaudRate = 9600/ 波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b/ 數(shù)據(jù)長度 USART_InitStructure.USART_StopBits = USART_StopBits_/Z 停止位
7、 USART_InitStructure.USART_Parity = USART_Parity_Nd/ 校驗(yàn) USART_InitStructure.USART_HardwareFlowControl =USART_HardwareFlowControl_None; / 硬件流控制無 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 發(fā) 送與接受兩種方式USART_Init(USART, &USART_InitStructure); / 用配置的參數(shù)驚喜串口初始化(2)串口中斷使能USART_ITConfi
8、g(USARTy, USART_IT_RXNE, ENABL或能接受中斷,在接受移 位寄存器中有數(shù)據(jù)是產(chǎn)生USART_ITConfig(USARTy, USART_IT_TXE, ENABLE®能發(fā)送中斷,在發(fā)送完數(shù) 據(jù)后產(chǎn)生。一般情況下,如果與 PC通信的話,我們只用接受中斷即可。(3)串口使能USART_Cmd(USAR1T, ENABLE); /USART1 使能 好了,經(jīng)過以上不走之后呢,我們就可以進(jìn)行數(shù)據(jù)的收發(fā)了。3、發(fā)送數(shù)據(jù)使用函數(shù)USART_SendData(USART1Ghar data), 一次只能發(fā)送一個(gè)字符。當(dāng)然我們可 以用如下函數(shù)發(fā)送字符串。void USAR
9、T1_Puts(char * str)(while(*str)(USART_SendData(USART1, *str+);/ 發(fā)送一個(gè)字符while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) = RESET); / 等待發(fā) 送完畢)當(dāng)然我們也可以循環(huán)發(fā)送字符串?dāng)?shù)組for(i = 0; TxBufl != '0' i+) / TxBufl 為定義好的字符串?dāng)?shù)組USART_SendData(USART2 , TxBufl);while(USART_GetFlagStatus(USART2, USART_FLAG_TC)=RESET);
10、)4、接收數(shù)據(jù)由于我們使用的是接受中斷,所以當(dāng)有數(shù)據(jù)需要接收時(shí),會(huì)執(zhí)相應(yīng)的中斷函數(shù)。此處我 們 USART1 的中斷函數(shù)在 stm32f10x it.c 文件中。找到函數(shù) void USARTI IRQHandler(void),如 果沒有的話就自己加上吧,別忘了頭文件中需要聲明一下。當(dāng)然你也可以在其他文件中寫下 該中斷函數(shù)。當(dāng)產(chǎn)生中斷進(jìn)入該函數(shù)之后,我們就可以進(jìn)行自己的操作了。void USARTy IRQHandler(void)if(USART_GetITStatus(USARTy, USART_IT_RXNE) != RES/E如果寄存器中有數(shù)據(jù)/* Read one byte fro
11、m the receive data register */RxBuffer1RxCounter1+ = USART_ReceiveData(USART;)/* if(USART_GetITStatus(USARTy, USART_IT_TXE) != RESET) USART_SendData(USARTy, TxBuffer1TxCounter1+); )/這個(gè)地方那個(gè)之所以把這個(gè)寫出來主要是想說發(fā)送中斷和接受中斷其實(shí)是共用一個(gè)/中斷函數(shù)的,到底是那個(gè)中斷發(fā)生了呢,這就需要我們讀取中斷狀態(tài)標(biāo)志來識(shí)別了。*/)別忘了在接受完數(shù)據(jù)進(jìn)行別的操作之前為了防止數(shù)據(jù)被覆蓋最好先禁止一下接受中 斷/*禁
12、止USARTI接收中斷*/USART_ITConfig(USART USART IT RXNE, DISABLE);/*禁止USARTI發(fā)送中斷*/USART_ITConfig(USAR11; USART_IT_TXE, DISABLE);5、main函數(shù)int main(void) 這個(gè)地方和特別,我們知道一般 main函數(shù)是沒有返回值的,但在 STM32 /的編程中其返回類型為intoRCC_Configuration();NVIC_Configuration();GPIO_Configuration();USART_InitStructure.USART_BaudRate = 9600;
13、USART_InitStructure.USART_WordLength = USART_WordLength_8b;USART_InitStructure.USART_StopBits = USART_StopBits_1;USART_InitStructure.USART_Parity = USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mo
14、de_Tx;USART_Init(USART, &USART_InitStructure);USART_ITCon的(USART USART_IT_RXNE, ENABLE);/ USART_ITConfig(USART, USART_IT_TXE, ENABLE); USART_Cmd(USART ENABLE);while (1)/等待中斷(1當(dāng)然你也可以在main()中添加一些發(fā)送指令之類的東西。以上內(nèi)容為個(gè)人總結(jié),轉(zhuǎn)載請(qǐng)注明出處。若有錯(cuò)誤,本人概不負(fù)任何責(zé)任 STM32 外部中斷配NVIC_Configuration函數(shù)實(shí)現(xiàn)配置嵌套向量中斷中斷優(yōu)先級(jí)并使能中斷。其中的NVIC_
15、PriorityGroupConfig函數(shù)配置中斷優(yōu)先級(jí)的組織方式,STM32的嵌套向量中斷控制器可以配置16個(gè)可編程的優(yōu)先等級(jí),使用了 4位表示中斷優(yōu)先級(jí)(2的4此方就是16) , 16個(gè)可編程的優(yōu)先等級(jí)又可以分為主優(yōu)先級(jí)和次優(yōu)先級(jí),例如參數(shù) NVIC_PriorityGroup_1 表示 1bit 主優(yōu)先級(jí)(pre-emption priority ) 3 bits 次優(yōu)先 級(jí)(subpriority )。一、配置中斷1、分配中斷向量表: /* Set the Vector Table base location at 0x20000000 */NVIC_SetVectorTable(NV
16、IC_VectTab_RAM, 0x0);2、設(shè)置中斷優(yōu)先級(jí):設(shè)置中斷優(yōu)先級(jí)中斷通道/響應(yīng)(次級(jí))優(yōu)先級(jí) 通道中斷使能NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); / 3、初始化外部中斷: /*允許EXTI4 中斷*/NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQChannel; / NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= PreemptionPriorityValue;/ 占先優(yōu)先級(jí)NVIC_InitStructure.NVIC_
17、IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; / NVIC_Init(&NVIC_InitStructure);/ 初始化中斷注意:如果我們配置的外部針腳為PA4 ,或PB4 ,或PC4, PD4等,那么采用的外部中斷也必須是 EXTI4 ,同樣,如果外部中斷針腳是PA1 , PB1 , PC1 , PD1那么中斷就要用EXTI1 ,其他類推。二、配置GPIO針腳作為外部中斷的觸發(fā)事件1、選才i IO針腳GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4
18、;注意,如果的針腳是端口的4號(hào)針腳,配置的中斷一定是EXTI42、配置針腳為輸入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;3、初始化針腳GPIO_Init(GPIOD,&GPIO_InitStructure);3配置EXTI線,使中斷線和IO針腳線連接上1、將EXTI線連接到IO端口上將EXTI線4連接到端口 GPIOD的第4個(gè)針腳上GPIO_EXTILineCon巾g(GPIO_PortSourceGPIOD,GPIO_PinSource4);注意:如果配置的針腳是 4號(hào),那么參數(shù)必須是 GPIO_PinSource4如
19、果配置的針腳是3號(hào),那么參數(shù)必須是GPIO_PinSource32、配置中斷邊沿/*配置EXTI線4上出現(xiàn)下降沿,則產(chǎn)生中斷 */EXTI_InitStructure.EXTI_Line = EXTI_Line4;注意:如果配置的4號(hào)針腳,那么 EXTI_Line4是必須的EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; /下降沿觸發(fā)EXTI_InitStructure.EXTI_LineCmd = ENABLE;/ 中斷線使能EX
20、TI_Init(&EXTI_InitStructure);/ 初始化中斷EXTI_GenerateSWInterrupt(EXTI_Line4);EXTI_Line4 中斷允許到此中斷配置完成,可以寫中斷處理函數(shù)。舉例:配置函數(shù)/* 函數(shù)名NVIC_Configration*描述配置各個(gè)中斷寄存器* */void NVIC_Configration(void)NVIC_InitTypeDef NVIC_InitStructure;#ifdef VECT_TAB_RAM/* Set the Vector Table base location at 0x20000000 */NVIC_S
21、etVectorTable(NVIC_VectTab_RAM, 0x0);/#else /* VECT_TAB_FLASH */* Set the Vector Table base location at 0x08000000 */NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);/#endifNVIC_PriorityGroupCon的(NVIC_PriorityGroup_0); /設(shè)置中斷優(yōu)先級(jí)/*允許EXTI4 中斷*/NVIC_InitStructure.NVIC_IRQChannel = EXTI4_IRQChannel;NVIC_Init
22、Structure.NVIC_IRQChannelPreemptionPriority PreemptionPriorityValue;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/*允許EXTI9 中斷*/NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQCha
23、nnelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/*配置SysTick處理優(yōu)先級(jí):優(yōu)先級(jí)以及子優(yōu)先級(jí)*/* * 函數(shù)名GPIO_Configuration(void)*描述配置TIM2針腳*/void GPIO_Configuration(void)/* GPIO_InitTypeDef GPIO_InitStructure;G
24、PIO_InitStructure.GPIO_Pin=GPIO Pin 0|GPIO Pin 1|GPIO Pin 2|GPIO Pin 3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP
25、;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;GPIO_Init(GPIOC,&GPIO_InitStructure);/*配置GPIOD的第一個(gè)管角為浮動(dòng)輸入*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOD,&GPIO_InitStructure);/*配置GPIOB的第9個(gè)管腳為浮動(dòng)輸入*/GPIO_InitStructure.GPIO_Pin = G
26、PIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB,&GPIO_InitStructure);/* 函數(shù) SysTick_Configuration*描述 設(shè)置SysTick* */void SysTick_Configuration(void) /*配置HCLK時(shí)鐘做為SysTick 時(shí)鐘源*/SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);/ 系統(tǒng)時(shí)鐘 8分頻72MHzNVIC_SystemHandlerPriority
27、Config(SystemHandler_SysTick, 8,2);/*SysTick Interrupt each 1000Hz with HCLK equal to 72MHz*/SysTick_SetReload(9000);/ 中斷周期 1ms/*Enable the SysTick Interrupt */SysTick_ITConfig(ENABLE);打開中斷SysTick_CounterCmd(SysTick_Counter_Enable);SysTick_CounterCmd(SysTick_Counter_Clear);/* 函數(shù)名EXTI_Configuration*描
28、述配置EXTI線*/void EXTI_Configuration(void)/*將EXTI線4連接到 PD4*/GPIO_EXTILineConfig(GPIO_PortSourceGPIOD,GPIO_PinSource4);/*配置EXTI線4上出現(xiàn)下降沿,則產(chǎn)生中斷*/EXTI_InitStructure.EXTI_Line = EXTI_Line4;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStru
29、cture.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);EXTI_GenerateSWInterrupt(EXTI_Line4);/*將EXTI線9連接到PB9上*/GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9);/*將EXTI線9上出現(xiàn)下降沿產(chǎn)生中斷 */EXTI_InitStructure.EXTI_Line = EXTI_Line9;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_Init
30、Structure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);EXTI_GenerateSWInterrupt(EXTI_Line9);中斷函數(shù):void EXTI4_IRQHandler(void)if(EXTI_GetITStatus(EXTI_Line4)!= RESET)if(Ledflag = 0)Ledflag = 1;GPIOC->ODR |= 0X00000080;elseLedflag =
31、0;GPIOC->ODR &= 0XFFFFFF7F;)EXTI_ClearITPendingBit(EXTI_Line4);/ 清除 EXTI0 線路掛起位)注:時(shí)鐘設(shè)置的時(shí)候最好加上這句:RCCRCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);AFIO時(shí)鐘/ 使能/*例程名稱:外部中斷實(shí)驗(yàn)實(shí)驗(yàn)硬件:DP-miniSTM32硬件連接:指示燈連接PA1按鈕連接 PA3功能描述:本例程實(shí)現(xiàn)外部中斷的輸入試驗(yàn),按下按鈕,指示燈閃爍一下*/#include <stm32f10x_lib.h>#include "S
32、TM32_Init.h"/ STM32F10x Library Definitions/ STM32 Initialization/* 名 稱:Delay()*/void Delay(vu16 cnt) uint16 i,j;for (i=0;i<cnt;i+) for (j=0;j<1000;j+) ),* 名 稱:RCC_Configuration()*void RCC_Configuration(void)(ErrorStatus HSEStartUpStatus;/使能外部晶振RCC_HSEConfig(RCC_HSE_ON);/等待外部晶振穩(wěn)定HSEStartU
33、pStatus = RCC_WaitForHSEStartUp();/如果外部晶振啟動(dòng)成功,則進(jìn)行下一步操作if(HSEStartUpStatus=SUCCESS)(/ 設(shè)置 HCLK (AHB 時(shí)鐘)=SYSCLK RCC_HCLKConfig(RCC_SYSCLK_Div1);PCLK1(APB1) = HCLK/2RCC_PCLK1Config(RCC_HCLK_Div2);/PCLK2(APB2) = HCLKRCC_PCLK2Config(RCC_HCLK_Div1);RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4);/啟動(dòng)PLL
34、RCC_PLLCmd(ENABLE);/等待PLL穩(wěn)定while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET);/系統(tǒng)時(shí)鐘 SYSCLK來自PLL輸出RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);/切換時(shí)鐘后等待系統(tǒng)時(shí)鐘穩(wěn)定while(RCC_GetSYSCLKSource()!=0x08);/* RCC system reset(for debug purpose) */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO , ENABLE
35、); /給 GPIOA 和重映射提供時(shí)鐘,注意:一定要設(shè)置RCC_APB2Periph_AFIO,* 名 稱:GPIO_Configuration()*/void GPIO_Configuration(void) (GPIO_InitTypeDef GPIO_InitStructure;/*設(shè)置PA3為輸入*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;G
36、PIO_Init(GPIOA,&GPIO_InitStructure);/*設(shè)置PA1為輸出*/GPIO_InitStructure.GPIO_Pin= GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);/* 名稱:EXTI_Configuration()*/void EXTI_Configuration(void)(EXTI_InitTyp
37、eDef EXTI_InitStructure;/* Configure EXTI Line3 to generate an interrupt on falling edge */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;/外部中斷通道3/下降沿觸發(fā)/使能EXT
38、I_Init(&EXTI_InitStructure);GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource3); / 將PA3連接到外部中斷通道 3,* 名 稱:NVIC_Configuration()*void NVIC_Configuration(void) (NVIC_InitTypeDef NVIC_InitStructure;#ifdef VECT_TAB_RAM/* Set the Vector Table base location at 0x20000000 */NVIC_SetVectorTable(NVIC
39、_VectTab_RAM, 0x0);#else /* VECT_TAB_FLASH */ /* Set the Vector Table base location at 0x08000000 */NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endifNVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);/ 搶占式優(yōu)先級(jí)別設(shè)置為無搶占優(yōu)先級(jí)NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQChannel;/ 指定中斷源NVIC_InitStructure.NVI
40、C_IRQChannelSubPriority=1;/ 指定響應(yīng)優(yōu)先級(jí)別1NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE; / 使能外部中斷通道3NVIC_Init(&NVIC_InitStructure); int main (void) (RCC_Configuration(); / 配置時(shí)鐘 GPIO_Configuration(); /配置 IO 口NVIC_Configuration(); /中斷配置EXTI_Configuration(); / 外部中斷配置 while(1) ( /* *說明:將LED燈的連接到PA1*void
41、EXTI3_IRQHandler (void)(if(EXTI_GetITStatus(EXTI_Line3) != RESET)(/添加中斷處理程序GPIO_WriteBit(GPIOA, GPIO_Pin_1,(BitAction)0);Delay(1000);GPIO_WriteBit(GPIOA, GPIO_Pin_1,(BitAction)1);Delay(1000);EXTI_ClearFlag(EXTI_Line3);/ 清除中斷標(biāo)志(必須)EXTI_ClearITPendingBit(EXTI_Line3);/以上兩條語句作用相同在使用EXTI的時(shí)候,因?yàn)闆]有開啟時(shí)鐘沒有開啟RCC_APB2Periph_AFIO 時(shí)鐘,讓我調(diào)試吃了不少苦頭,看來還要好好看看stm32的時(shí)鐘啊現(xiàn)在給出我的exti8的配置首先一定要記得配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); / 使能 AFIO 時(shí)鐘/GPIOB8
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療器械工程居間合同范本
- 施工電梯布置專項(xiàng)方案
- 食品安全風(fēng)險(xiǎn)評(píng)估與管理技術(shù)作業(yè)指導(dǎo)書
- 承包山林合同書
- 市場(chǎng)營銷策略制定與實(shí)施作業(yè)指導(dǎo)書
- 停車場(chǎng)管理服務(wù)合同
- 住房和城鄉(xiāng)建設(shè)委員會(huì)
- 林業(yè)經(jīng)濟(jì)管理與政策作業(yè)指導(dǎo)書
- 雞舍租賃合同
- 技術(shù)服務(wù)合同格式
- 江蘇省南通市2023-2024學(xué)年小升初語文試卷(含答案)
- 人教版四年級(jí)上冊(cè)數(shù)學(xué)【選擇題】專項(xiàng)練習(xí)100題附答案
- CB-T4528-2024《船舶行業(yè)企業(yè)應(yīng)急管理要求》
- 22G101三維彩色立體圖集
- (正式版)HG∕T 20644-2024 彈簧支吊架選用標(biāo)準(zhǔn)
- 中心醫(yī)院消防施工組織設(shè)計(jì)
- 港口自動(dòng)化與智慧港口發(fā)展方向
- 人教版小學(xué)英語單詞表(完整版)
- 黑龍江省哈爾濱市雙城區(qū)2024年八年級(jí)下冊(cè)物理期末經(jīng)典試題含解析
- 項(xiàng)目采購管理培訓(xùn)
- (高清版)DZT 0399-2022 礦山資源儲(chǔ)量管理規(guī)范
評(píng)論
0/150
提交評(píng)論