我的程序里有一个部分要用到EXTI11的中断。
其中部分代码如下:
Nrf24l01_CeLow();
Nrf24l01_WriteB(NRF24L01_CMD_WR_TX_PLOAD,pBuf,NRF24L01_TX_PLOAD_WIDTH);
Nrf24l01_CeHigh();
while(1);
这里while在等待中断,可是就是不能进入中断。硬件调试的时候发现相关的标志位都已经置位。然后我把代码改成下面这样的:
Nrf24l01_CeLow();
Nrf24l01_WriteB(NRF24L01_CMD_WR_TX_PLOAD,pBuf,NRF24L01_TX_PLOAD_WIDTH);
Nrf24l01_CeHigh();
Status = Nrf24l01_ReadReg(NRF24L01_REG_STATUS);
Status = Nrf24l01_ReadReg(NRF24L01_REG_STATUS);
Status = Nrf24l01_ReadReg(NRF24L01_REG_STATUS);
下面三条语句没什么关键作用。但是加入之后程序单步运行时就能进入EXTI11中断,但是连续运行时同样不能进入中断。
求各位大侠帮忙分析。 |