色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記——外部中斷EXTI

          STM32學(xué)習(xí)筆記——外部中斷EXTI

          作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/201611/322884.htm

          voidNVIC_Configuration(void)//配置嵌套向量中斷控制器

          {

          NVIC_InitTypeDefNVIC_InitStructure;//定義初始化NVIC的結(jié)構(gòu)體變量

          #ifdefVECT_TAB_RAM

          //配置向量表基址

          NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);//分配中斷向量表

          #else

          NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);

          #endif

          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//設(shè)置中斷優(yōu)先級(jí)

          //設(shè)置優(yōu)先級(jí)分組:先占優(yōu)先級(jí)和從優(yōu)先級(jí)輸入?yún)?shù)設(shè)定優(yōu)先級(jí)分組位長(zhǎng)度本例中NVIC_PriorityGroup_1:先占優(yōu)先級(jí)1為,從優(yōu)先級(jí)3位

          //詳見《STM32函數(shù)說(shuō)明》P165

          //優(yōu)先級(jí)分組只能設(shè)定一次

          //EXTI5-9共用一個(gè)中斷源,EXTI10-15共用一個(gè)中斷源

          //詳見詳見《STM32函數(shù)說(shuō)明》P166

          NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQChannel;//中斷通道指定IRQ通道這里指定外部中斷線9-5中斷因?yàn)槭褂玫氖荅XTI6

          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//設(shè)定指定IRQ通道的先占優(yōu)先級(jí)

          NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//設(shè)定指定IRQ通道的從優(yōu)先級(jí)

          NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//設(shè)定指定IRQ通道中斷使能DISABLE失能

          NVIC_Init(&NVIC_InitStructure);//根據(jù)結(jié)構(gòu)體中指定的參數(shù)初始化NVIC中斷

          }

          #ifdefDEBUG

          voidassert_failed(u8*file,u32line)

          {

          while(1)

          {

          }

          }

          #endif

          stm32f10x_it.c文件中的中斷服務(wù)函數(shù)如下:

          voidEXTI9_5_IRQHandler(void)//外線路5-9的中斷處理程序

          {

          if(EXTI_GetITStatus(EXTI_Line6)!=RESET)//檢測(cè)制定的EXTI6線路觸發(fā)請(qǐng)求是否發(fā)生。

          //該函數(shù)檢查指定的EXTI線路出發(fā)請(qǐng)求是否發(fā)生

          {

          //其實(shí)就是對(duì)PB8取反

          GPIO_WriteBit(GPIOB,GPIO_Pin_8,(BitAction)((1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_8))));

          //該函數(shù)可以對(duì)指定的端口位進(jìn)行操作指定端口和位,然后指定操作。第三個(gè)參數(shù)指定待寫入的值

          //該參數(shù)必須取枚舉類型BitAction的其中一個(gè)值,可以是Bit_RESET:清除數(shù)據(jù)端口位和Bit_SET:設(shè)置數(shù)據(jù)端口位

          //GPIO_ReadOutputDataBit()函數(shù)讀取指定的IO端口管腳的輸出,參數(shù)指定端口和位

          //EXTI_ClearFlag(EXTI_Line6);//清除中斷標(biāo)志位(必須)我在網(wǎng)上看到要求必須,但是在本例中并沒有這句

          EXTI_ClearITPendingBit(EXTI_Line6);//清除EXTI線路掛起位

          }

          }


          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉