分別抓取了注釋while語句跟沒有注釋while語句的I2C調(diào)試數(shù)據(jù)與波形圖,可以發(fā)現(xiàn),前者正常執(zhí)行了stop,后者沒有,也就是說增加 while((sda==1)&&(i<250))i++; 之后,stop缺失,導(dǎo)致24c02沒有進(jìn)入寫周期,數(shù)據(jù)也就沒有寫進(jìn)去。 問題是為何while((sda==1)&&(i<250))i++;這條語句會導(dǎo)致stop缺失,沒搞明白。這只是一條判斷語句,sda也產(chǎn)生了應(yīng)答的,那么while為假,所以執(zhí)行這條語句也就是1個指令周期的時間,相當(dāng)于延時了一個指令周期,為什么會有影響呢? 如下是對比圖:
|