liberv-312354 发表于 2016-4-9 18:15:03

STM32F042 PF0管脚不产生外部IO中断

STM32F042 PF0和OSC_IN共用一个IO管脚,当使用此管脚作为PF0输入管脚做按键扫描时,不能产生外部IO口中断。查询模式可以正常工作。请教下可能是哪方面的原因。void Key_Init(void)
{
                GPIO_InitTypeDef GPIO_InitStructure;
                EXTI_InitTypeDef EXTI_InitStructure;
                NVIC_InitTypeDef NVIC_InitStructure;

                RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOF, ENABLE);
                RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);

                GPIO_InitStructure.GPIO_Pin = /*Key_Stop|*/Key_Up|Key_Down;
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;   
                GPIO_InitStructure.GPIO_PuPd   = GPIO_PuPd_NOPULL;
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
                GPIO_Init(GPIOA, &GPIO_InitStructure);
       
       
                GPIO_InitStructure.GPIO_Pin = Key_Power | Key_Play ;        //Key_Play使用PF0管脚
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;   
                GPIO_InitStructure.GPIO_PuPd   = GPIO_PuPd_NOPULL;
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
                GPIO_Init(GPIOF, &GPIO_InitStructure);
       
                // Configure EXTI0_1 line1
                EXTI_InitStructure.EXTI_Line = EXTI_Line0;
                EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
                EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
                EXTI_InitStructure.EXTI_LineCmd = ENABLE;
                EXTI_Init(&EXTI_InitStructure);
               
                // Enable and set EXTI1 Interrupt
                NVIC_InitStructure.NVIC_IRQChannel = EXTI0_1_IRQn;
                NVIC_InitStructure.NVIC_IRQChannelPriority = 0x00;
                NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
                NVIC_Init(&NVIC_InitStructure);
}


zhjb1 发表于 2018-3-1 08:25:32

您好!我看了一下F0xx的手册,F0是外界晶振引脚之一,作为此功能不可以中断;作为普通IO也没有中断功能;但作为I2C功能时使用可以产生中断;你可以将你的外输入作为I2C的SDA使用试试应该可以产生中断的。

wofei1314 发表于 2018-3-9 14:03:04

本帖最后由 wofei1314 于 2018-3-9 14:04 编辑

我刚才用CubeMX测试,这个引脚是可以设置为中断的,也可以生产框架程序,建议你用CubeMX试一下,以确定是否真的可行或者步行....

使用标准库的时候,需要注意是否需要启动复用时钟,还需要看是否先启动内部RC振荡器....

如果可行,猜测是你初始化的方式不对!
页: [1]
查看完整版本: STM32F042 PF0管脚不产生外部IO中断