2# 香水城
我用在线仿真调试,先让程序运行一段时间(我确定已经运行到while(1)),然后在程序一开始的地方(while(1)前)和EXTI9_5的中断程序里分别加入断点,然后我用电脑通过串口向STM32发送启动模拟串口的指令(模拟串口先发后收),结果程序没在EXTI9_5中断的断点停下,而是在程序一开始的地方停下来了。
程序一开始我先初始化中断
Ex_NVIC_Config(GPIO_C,5,FTIR);
EXTI->IMR&=NOT_USART_IB;
void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
{
u8 EXTADDR;
u8 EXTOFFSET;
EXTADDR=BITx/4;
EXTOFFSET=(BITx%4)*4;
AFIO->EXTICR[EXTADDR]&=~(0x000F<<EXTOFFSET;
AFIO->EXTICR[EXTADDR]|=GPIOx<<EXTOFFSET;//EXTI.BITxÓ³Éäµ½GPIOx.BITx
if(TRIM&0x01)EXTI->FTSR|=1<<BITx;
if(TRIM&0x02)EXTI->RTSR|=1<<BITx;
}
但先不使能中断
STM32先发串口命令到其他芯片,发送后程序使能EXTI中断。
EXTI->IMR&=USART_IB;
然后就是没有进入到EXTI中断而且引起了软件复位
但是我在同样的情况下使用EXTI0~EXTI4都没有问题
|