OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2191|回复: 3

stm32f2芯片配置EXTI报错,求解惑

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-5-10
在线时间
16 小时
发表于 2019-11-8 09:38:17 | 显示全部楼层 |阅读模式
8金钱
我仿照芯片固件库手册的EXTI配置例程进行配置,把PA2配置成外部中断引脚,但是一运行就报错,报错内容后面附图,代码也贴在后面。我按报错内容查了下,发现是GPIO配置的GPIO_PuPd参数有错误,但是这个参数我上拉下拉浮空都试过了,都是报这个错误;
另外我看硬件电路图PA2没有接上下拉电阻,不知道是不是这个原因造成的?

再就是我把配置EXTI的那段代码注释掉后就不报错了

配置代码如下:
void Interrupt_config(void)
{
        EXTI_InitTypeDef EXTI_InitStruct;
        GPIO_InitTypeDef GPIO_InitStruct;
        NVIC_InitTypeDef NVIC_InitStruct;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG,ENABLE);/* Enable SYSCFG's APB interface clock */
       
        /* Configure PA2 pin in input mode */
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;///
        GPIO_Init(GPIOA,&GPIO_InitStruct);
       
        SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource2);/* Connect EXTI Line2 to PA2 pin */
       
        /* Configure EXTI line2 */
        EXTI_InitStruct.EXTI_Line = EXTI_Line2;
        EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
        EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;///
        EXTI_InitStruct.EXTI_LineCmd = ENABLE;
        EXTI_ClearITPendingBit(EXTI_Line2);
        EXTI_Init(&EXTI_InitStruct);       

        //NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        NVIC_InitStruct.NVIC_IRQChannel = EXTI2_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x0F;///
        NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x0F;///
        NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStruct);
}

void EXTI2_IRQHandler(void)
{
        u8 bufCard[4];
        u32 uCardId;
        if(EXTI_GetITStatus(EXTI_Line2) != RESET)
        {
                ComReqA_UID(bufCard);
                uCardId = (bufCard[0] << 24) | (bufCard[1] << 16) | (bufCard[2] << 8) | bufCard[3];
                rt_kprintf("cardnum:%X\n",uCardId);
                rt_thread_sleep(1);
        }
        /* Clear the EXTI line 0 pending bit */
    EXTI_ClearITPendingBit(EXTI_Line2);
}



中断错误.PNG

报错内容

报错内容

最佳答案

查看完整内容[请看2#楼]

问题解决,今天在配置后面加了个打印,然后发现居然不报错了,后面打印换成延时函数延时5ms,发现也不报错,看来中断配置完后要加一点延时
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-5-10
在线时间
16 小时
 楼主| 发表于 2019-11-8 09:38:18 | 显示全部楼层
问题解决,今天在配置后面加了个打印,然后发现居然不报错了,后面打印换成延时函数延时5ms,发现也不报错,看来中断配置完后要加一点延时
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-5-10
在线时间
16 小时
 楼主| 发表于 2019-11-8 09:39:43 | 显示全部楼层
求解答,不胜感激!
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2019-5-10
在线时间
16 小时
 楼主| 发表于 2019-11-8 14:13:39 | 显示全部楼层
顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 11:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表