CH32V103外部中断EXTI0无法进入

产品:CH32V103C8T6

现象:

使用PB0做外部中断,当使用外部脉冲触发时无法EXTI0,手动将输入接地时可以进入;但是将外部脉冲换接至其他端口却可以正常进入对应中断EXTI5、7。外部中断外围电路完全一样。PB0配置如下

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能GPIOB的时钟
/*配置PB0*/
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;//工作模式:输入模式
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_2MHz;//最大输出速度:2MHz
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_0;//引脚号
GPIO_Init(GPIOB,&GPIO_InitStruct);//初始化

/*PB0---->EXTI_Line0*/
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource0);//
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);

NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);

请问如何解决?



问题找着了,除了使能GPIOB时钟外,还要使能AFIO时钟。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);


但是为何在未使能AFIO时钟时,除了EXTI0外的其他端口的外部中断有可以使用呢?而且手动将引脚接地时依然可以进入EXTI0?


您好,EXTI在配置的时候正常都需要开启复用时钟的,手册有相关说明,如下图。具体可参考CH32V103应用手册第九章节介绍。CH32V103应用手册下载链接如下:

/downloads/CH32xRM_PDF.html?

image.png




只有登录才能回复,可以选择微信账号登录