新手上路
- 积分
- 49
- 金钱
- 49
- 注册时间
- 2019-5-10
- 在线时间
- 16 小时
|
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);
}
|
-
-
报错内容
最佳答案
查看完整内容[请看2#楼]
问题解决,今天在配置后面加了个打印,然后发现居然不报错了,后面打印换成延时函数延时5ms,发现也不报错,看来中断配置完后要加一点延时
|