EXTI的信号来源是受到AFIO->EXTICRx寄存器控制的,这个寄存器怎么设置,才能使对应端口上的电平变化产生中断。比如AFIO->EXTICR2=0x00000100这时只有PB6引脚的电平变化才能产生中断EXTI6,其他PA6、PC6等等的就不行。
IRQChannel = EXTI0_IRQn; //指定外部中断0为IRQ通道,新库的版本为IRQn,旧库版本为IRQChannel ...
这个是和官方库版本有关系的,以前用的是 EXTI9_5_IRQChannel,新版本用的是 EXTI9_5_IRQn
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void EXTI9_5_IRQHandler(void) { #ifdef KEY_INTERRUPT uint8_t data; if(EXTI_GetITStatus(EXTI_Line5) != RESET) // key2 { BOARD_LED_OFF(LED1); BOARD...
前面两个结构体成员好理解,首先用NVIC_IRQChannel参数来选择将要配置的中断向量,用NVIC_IRQChannelCmd参数来进行使能(ENABLE)或关闭(DISABLE)该中断。在NVIC_IRQChannelPreemptionPriority成员要配置中断向量的抢占优先级,在NVIC_IRQChannelSubPriority需要配置中断向量的响应优先级。对于中断的配置,最重要的便是配置其优先级,但...