標(biāo)題: STM32 無法進(jìn)入中斷 [打印本頁]

作者: 守望夜空的南瓜    時(shí)間: 2018-7-8 15:04
標(biāo)題: STM32 無法進(jìn)入中斷
我想使用PB8引腳作為中斷的輸入口,但是初始化后死活進(jìn)不去中斷,求大神們指教。


void PB8_IrDA_Init(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        EXTI_InitTypeDef  EXTI_InitStructure;                                        // 定義一個(gè)EXTI結(jié)構(gòu)體變量
        NVIC_InitTypeDef  NVIC_InitStructure;       
       
               
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);        // 使能IO復(fù)用功能,使用中斷功能重要。!
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;              //PB8為輸入口
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //浮空輸入
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //速度為50MHz
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
        GPIO_Init(GPIOB,&GPIO_InitStructure);

       
        EXTI_ClearITPendingBit(EXTI_Line8);
        GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource8);        //PB8為中斷       
        EXTI_InitStructure.EXTI_Line = EXTI_Line8;
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;                //中斷模式為外部中斷模式
        EXTI_InitStructure.EXTI_Trigger = EXTI_TriggerFalling;        //下降沿觸
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;                                //使能中斷線
        EXTI_Init( &EXTI_InitStructure);                                                //根據(jù)參數(shù)初始化中斷寄存器
       
       
        //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;                        //設(shè)定中斷源為PB8
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;        //中斷占優(yōu)先級為1
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                        //副優(yōu)先級為3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                //使能中斷
        NVIC_Init( &NVIC_InitStructure);                                                        //根據(jù)參數(shù)初始化中斷寄存器
       
       
       
}


//
//
//
void EXTI9_5_IRQHandler(void)        // IR引腳為PinB_8
{
        if (RESET != EXTI_GetITStatus(EXTI_Line8)  )         // 判斷是否發(fā)生中斷,發(fā)生則中斷標(biāo)志置1
        {
                IsEvnt_IrDA =TRUE;
                EXTI_ClearITPendingBit(EXTI_Line8);
        }
       
}


作者: yousunny    時(shí)間: 2018-7-8 16:14
  EXTI_ClearITPendingBit(EXTI_Line8);
你把這句去掉,試試。我記得原子的歷程是不用清除標(biāo)志的,可以直接掛載(F103芯片)
作者: 守望夜空的南瓜    時(shí)間: 2018-7-8 16:59
yousunny 發(fā)表于 2018-7-8 16:14
EXTI_ClearITPendingBit(EXTI_Line8);
你把這句去掉,試試。我記得原子的歷程是不用清除標(biāo)志的,可以直 ...

去除了也不行啊,也不清楚是哪里出了問題
作者: yousunny    時(shí)間: 2018-7-9 11:35
守望夜空的南瓜 發(fā)表于 2018-7-8 16:59
去除了也不行啊,也不清楚是哪里出了問題

額,你在看一下。照這樣理論上是可以的
作者: 一念永恒    時(shí)間: 2018-7-9 11:56
中斷優(yōu)先級分組,去掉了嗎?
作者: 守望夜空的南瓜    時(shí)間: 2018-7-9 14:51
一念永恒 發(fā)表于 2018-7-9 11:56
中斷優(yōu)先級分組,去掉了嗎?

很奇怪,我也覺得是可行的,但是就是進(jìn)不去,而且這個(gè)IO口的狀態(tài)我現(xiàn)在都讀取不了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1