最近測試程式**時發現uart+dma列印突然卡頓了,具體現象就是只有在dma緩衝區滿的情況下,資料才會傳送到串列埠列印出來。
如dma傳送緩衝區設為256時,我在while迴圈裡列印「uart1 test print time.\r\n」這條語句,並不是執行一次send列印語句串列埠就顯示列印一次,而是緩衝區滿,也就是攢滿256個位元組才會進行列印處來。以前都是很正常的,最近測試突然就出現這種情況。
一條一條的查詢語句,發現dma緩衝區前面的static __io不知道什麼時候去掉了,加上之後,就會快速的列印了,即傳送什麼串列埠就立馬顯示什麼。
通過這個問題說明,dma的緩衝區必須是__io,也就是不被處理器優化的才可以。static沒有不會影響,但是因為這個陣列只在當前檔案使用,所以定義成static。
#define __io volatile /*!< defines 'read / write' permissions */
TP除錯遇到的問題
一 i2c已經掛載,但是不通 可能情況 1 i2c位址不對 2 上電問題 電壓不對,時序不對 3 硬體問題 pin腳不對 二 i2c通了,但是沒有中斷 可能情況 1 中斷腳不對 2 中斷gpio模式不對 3 中斷觸發方式不對 三 開始報點,但是觸控螢幕不工作 可能情況 1 報點函式順序不對 2 在p...
ZYNQ 除錯遇到的問題
1.arm xilinx eabi gcc 不是內部或外部命令,也不是可執行的程式 或者 command not found.1 開發平台 軟體版本14.3 ise design suite embeded edition 14.3 vivado design edition 2012.3 2 問題...
除錯立體矯正遇到的問題
1.未定義的識別符號 tchar 解決方法 include 2.fopen的問題 解決方法 在專案屬性中修改預處理器,新增 crt secure no warnings 或者用新版本的vs開啟一些老版本vs的程式時可能出現這個問題,一種簡單的解決方法是 在預編譯標頭檔案stdafx.h裡面,或者在i...