很多 ide (例如 gnu mcu eclipse、truestudio)都提供了外設暫存器視窗,在除錯外設驅動時可以方便地觀察外設暫存器的變更加快外設驅動的除錯過程,但是外設暫存器視窗顯示的值也是從外設暫存器讀過來的,而有些外設暫存器的讀取操作是有***的,例如讀取狀態暫存器可能會清除狀態位,狀態位被外設暫存器視窗的讀取過程清除了之後,程式去讀取狀態暫存器時就沒有辦法讀到正確的狀態位了,還有一種情況是讀取fifo,資料就少了。
zoomdyat163 dot com
外設暫存器視窗要顯示外設暫存器的值,就要去讀取外設暫存器。外設暫存器視窗向偵錯程式獲取指定位址的數值,偵錯程式通過除錯介面去讀取對應位址的數值。也就是說,外設暫存器視窗通過除錯介面讀取了外設暫存器。外設沒有辦法區分是偵錯程式來讀取暫存器還是在cpu中執行的程式來讀取暫存器,只知道讀取了暫存器。這樣一來,如果讀取暫存器有附加作用,那麼外設暫存器視窗的這個讀取操作可能就會引起問題。
有些狀態暫存器是通過讀來進行清除操作的,碰上這種暫存器,那麼使用外設暫存器視窗去觀察過暫存器的值之後,後續程式去讀取暫存器時,某些標誌位已經被清除了。即外設暫存器視窗的讀操作已經清除了狀態位。
fifo 被讀取一次,就會彈出一組資料,外設暫存器視窗來讀時同樣會彈出資料,因此使用外設暫存器視窗觀察 fifo 暫存器會發現資料丟失的情況,彈出的資料被外設暫存器視窗消費掉了。
外設暫存器視窗是個很好的除錯工具,但是要小心它的讀取帶來的***。當發生非預期狀況時,要想到可能是外設暫存器視窗的讀取引起的。如果不知道這一點,外設暫存器視窗反而就變成乙個坑了。
MCU外設學習使用注意事項
不能只看pdf或者視屏,看完覺得自己懂了,學會了。嵌入式是一門實踐的技術,沒有實踐就不會遇到問題,不會遇到問題就沒法在解決問題的過程中深入 了解學習,不會加強自己對具體技術細節的認識和掌握 更不會提公升自己解決問題的能力。可以說嵌入式水平的高低從如何快速解決問題就能直接體現出來 這就是經驗的價值。學...
C 用splitter分割視窗注意事項
c 用splitter分割視窗注意事項 1 一定要按照順序拖,即z次序不能亂 2 先拖panel1到from中,設定dock為left 3,拖splitter1到from中,注意千萬不能拖到panel1上面,否則會失敗!此時splitter1的dock預設設定為left,設定borderstyle為...
暫存器的認識
對於8086的系統 1.暫存器按照功能的不同可分為通用暫存器 ax,bx,cx,dx,sp,bp,si,di。其中的前四個暫存器可分別分成ah,al bh,bl ch,cl dh,dl的八位暫存器 指令指標暫存器 ip 標誌暫存器 flags 段暫存器 cs,ds,es,ss 它們的區別和聯絡體現在...