一款產(chǎn)品原先用的STM32F030C8,出貨很久了,因某些原因改用了航順的HK32F030C8。結(jié)果發(fā)現(xiàn)顯示屏無顯示,程序是一樣的,于是接邏輯分析議看看。發(fā)現(xiàn)下面這段代碼在STM上沒問題,但在HK上有問題: while((SPI1->SR & SPI_SR_BSY) > 0); My_GPIO_WriteLow(DisplayCS_P); SPI1->DR = 0x11; while((SPI1->SR & SPI_SR_BSY) > 0); My_GPIO_WriteHigh(DisplayCS_P);
復(fù)制代碼 在HK上的結(jié)果:
可見DR剛寫入馬上讀SPI_SR_BSY標(biāo)志,結(jié)果是空閑! 試了幾個(gè)方法,都不太理想,最后將while((SPI1->SR & SPI_SR_BSY) > 0);改為while((SPI1->SR & (SPI_SR_BSY | SPI_SR_FTLVL)) > 0);問題解決! 正確時(shí)序:
|