| 
 
| void SPI2_IRQHandler(void) {
 uint16_t temp;
 if ( (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_TXE) == SET))
 {
 if ((Out_Data_Offset < In_Data_Offset))
 {
 if ((channel++) & 1)
 {
 temp = (Stream_Buff[Out_Data_Offset] )| (Stream_Buff[Out_Data_Offset+1] << 8);
 SPI_I2S_SendData(SPI2, temp);
 Stream_Buff[Out_Data_Offset]=0;
 Stream_Buff[Out_Data_Offset+1] = 0;
 Out_Data_Offset = Out_Data_Offset + 2;
 //In_Data_Offset++;
 }
 else
 {
 temp = (Stream_Buff[Out_Data_Offset] )| (Stream_Buff[Out_Data_Offset+1] << 8);
 SPI_I2S_SendData(SPI2, temp);
 
 }
 }
 }
 像这个spi的处理函数,进入中断过后,if语句只执行一次,那怎么保证把streambuff里面的数据读出来,还是if ( (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_TXE) == SET))这句语句有它的执行时间,一直在这里执行,求解。
 | 
 |