禁用 SW
RCC->APB2ENR|=1<<0;
AFIO->MAPR&=0XF8FFFFFF;
AFIO->MAPR|=0X02000000; 只要加上这句,PB.9 外部中断就不好使了 除非把 26-24 位设置成 000 或无效的值
相关配置如下:没什么特别的
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(SC_PIN_OFF_GPIO, &GPIO_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource9);
EXTI_ClearITPendingBit(EXTI_Line9);
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_Line = EXTI_Line9;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_ClearIRQChannelPendingBit(EXTI9_5_IRQChannel);
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
Keil 调试时 程序全速运行 在 AFIO 寄存器窗口 手动将 AFIO_MAPR 的值由 0x02000000 改为 0x00000000 则 PB.9 中断好使
反之 手动由 0x00000000 改为 0x02000000 PB.9 中断失灵
以上两次实验都是在 程序全速运行 的状态下进行的
F103C8T6 库函数版本 V2.0.1
请问 是我没注意到什么?? 还是这两个功能先天冲突??
多谢! |