DEBUG 在存在中斷的情況下SPI寫資料失敗

2021-10-20 06:48:42 字數 634 閱讀 2941

微控制器裸機程式,開了乙個外部中斷用來脈衝計數,需要每5s將計數值寫入spi flash儲存。這裡的spi讀寫是硬體實現的。發現在脈衝計數過程中寫入spi失敗。在寫的時候關閉總中斷可以寫入成功,但是這時脈衝計數就會不準確。

如果是軟體spi,時序是軟體控制的時序,會存在被打斷的風險,導致寫入失敗。而硬體spi,基本隨便使用,隨便被打斷。因為使用者寫入的bit之間是不會被打斷的,只是不同位元組(半字或者字)之間的資料有被打斷的問題,這個完全不用擔心。因為外接的裝置,基本不限制各個位元組什麼時候發過來。

那麼問題應該是出現在從記憶體到spi的buf這一環節。發現是外部中斷和spi的buf使用同乙個變數,存在一邊中斷在更新變數一邊spi在往flash寫入這個變數。

void

gpabgh_irqhandler

(void

)//外部中斷服務函式

while

(running)

}

在寫入前將計數值賦值給另乙個變數,再寫入。

void

gpabgh_irqhandler

(void

)//外部中斷服務函式

while

(running)

}

layoutSubviews在什麼情況下呼叫

1.在以下情況都會呼叫 注意 當view的size的值為0的時候,addsubview也不會呼叫layoutsubviews。當要給這個view新增子控制項的時候不管他的size有沒有值都會呼叫 2.先來看一下uiview的layoutsubviews在什麼情況下會呼叫 subview view s...

synchronized在多執行緒情況下的使用

不同業務場景,有時會碰到大量資料的情況,在請求完資料後會通過model對映到對應的陣列或者字典中,從而對陣列進行操作,而多個執行緒同時對同一陣列進行取捨時內容就會出錯,為了避免這種情況可以使用 synchronized關鍵字來宣告來建立乙個互斥鎖,保證此時沒有其它執行緒對鎖定物件進行修改 synch...

在已有MySQL情況下安裝sphinxSE

1 mysql原始碼包 2 sphinx 0.9.9.tar.gz 具體步驟略 wget 1 cd opt 2 tar zxvf mysql 5.1.66.tar.gz 3 tar zxvf sphinx 0.9.9.tar.gz 4 mysqladmin uroot ppwd version 5 ...