如下後面//////////////
while(DSI_REG->DSI_INTSTA.BUSY); ////////////////
......
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,1);
while(DSI_REG->DSI_INTSTA.CMD_DONE == 0);//////////////////
OUTREGBIT(DSI_INT_STATUS_REG,DSI_REG->DSI_INTSTA,CMD_DONE,0);
DSI_REG->DSI_INTSTA.BUSY
DSI_REG是某個類指針或結構體指針,這顯然是個共享資源,其他地方也在操作這個指針,所以這個指針內部的成員有可能被改變。
DSI_INTSTA是這個指針的一個成員變量,這個成語變量同樣是結構體或類
BUSY是DSI_INTSTA的成員變量。
那個循環的意思很簡單,就是只要這個BUSY不為假,就永遠循環下去,即你的程序會卡在那不動。
另外我上面也提到DSI_REG是某個共享資源,其他線程可能也會改變其內部值。所以某個時刻其他線程改了BUSY,使其為假,就跳出while,程序繼續執行了。
換句話說你這while意思就是只要忙,那就得等著,不忙,繼續~
下面那個while一個作用~