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))这句语句有它的执行时间,一直在这里执行,求解。 |