CH32V103時鐘中斷里調用spi函數,一直停在spi函數while語句里,如何解決?

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;

?

? }


在中斷外部調用該函數,能夠正常讀取數據。


您好,若不調用spi函數,中斷能否正常運行,注意CH32V103中斷函數要加中斷聲明,具體可參考下圖。關于SPI函數,可將SPI_I2S_SendData函數放在第一個while判斷的后面試一下,若還是卡死在while語句里,麻煩說一下具體卡死在哪個while循環(huán)里,后續(xù)若有問題,可通過郵箱(lzs@wch.cn)和我溝通。

image.png


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频