你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
liberv-312354 提问时间:2016-4-9 18:15 /
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);
}


收藏 评论2 发布时间:2016-4-9 18:15

举报

2个回答
zhjb1 回答时间:2018-3-1 08:25:32
您好!我看了一下F0xx的手册,F0是外界晶振引脚之一,作为此功能不可以中断;作为普通IO也没有中断功能;但作为I2C功能时使用可以产生中断;你可以将你的外输入作为I2C的SDA使用试试应该可以产生中断的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wofei1314 回答时间:2018-3-9 14:03:04
本帖最后由 wofei1314 于 2018-3-9 14:04 编辑

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

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

如果可行,猜测是你初始化的方式不对!
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版