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);
}
您好!我看了一下F0xx的手册,F0是外界晶振引脚之一,作为此功能不可以中断;作为普通IO也没有中断功能;但作为I2C功能时使用可以产生中断;你可以将你的外输入作为I2C的SDA使用试试应该可以产生中断的。 本帖最后由 wofei1314 于 2018-3-9 14:04 编辑
我刚才用CubeMX测试,这个引脚是可以设置为中断的,也可以生产框架程序,建议你用CubeMX试一下,以确定是否真的可行或者步行....
使用标准库的时候,需要注意是否需要启动复用时钟,还需要看是否先启动内部RC振荡器....
如果可行,猜测是你初始化的方式不对!
页:
[1]