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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版