CH32V103時鐘中斷里調用spi函數,一直停在spi函數while語句里,如何解決?
代碼如下:
void TIM3_IRQHandler(void)? ?//TIM3中斷 10ms
{
? ? short temp_data;
? ? if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //檢查指定的TIM中斷發(fā)生與否:TIM 中斷源
? ? {
? ? ? ? TIM_ClearITPendingBit(TIM3, TIM_IT_Update? );? //清除TIMx的中斷待處理位:TIM 中斷源
? ? ? ? if(++tim3_count>=100)
? ? ? ? {
? ? ? ? ? ? tim3_count=0;
? ? ? ? ? ? tim3_flag=1;
? ? ? ? ? ? if(level_time_flag) ++level_time_count;
? ? ? ? }
? ? ? ? adxdata=ADXL345_READ(0x36);
}
u8 ADXL345_READ(u8 add)
{
? ? cs_low();
// delay_us(10);
? ? ?SPI_I2S_SendData(SPI1,(add|0x80)<<8|0x00);
?
? ? while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
? ? while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==RESET);
//delay_us(10);
? ? cs_high();
? ?
? ? return SPI_I2S_ReceiveData(SPI1)&0xff;
?
? }