標準庫函式printf需要呼叫fputc函式來實現間字元輸出,所以重寫fputc函式可以實現將字元輸出到itm跟蹤埠,從而在mdk的debug (printf) viewer得到列印資訊。
keil官網有關於實現的詳細步驟
根據官網說明先建立了乙個檔案重寫了fputc函式,如下:
#include #define itm_port8(n) (*((volatile unsigned char *)(0xe0000000+4*n)))
#define itm_port16(n) (*((volatile unsigned short *)(0xe0000000+4*n)))
#define itm_port32(n) (*((volatile unsigned long *)(0xe0000000+4*n)))
#define demcr (*((volatile unsigned long *)(0xe000edfc)))
#define trcena 0x01000000
struct __file ;
file __stdout;
file __stdin;
int fputc(int ch, file *f)
return (ch);
}
想要使用itm功能,必須把demcr.trcena位置位,否則itm處於除能狀態,無法使用。file型別在stdio.h標頭檔案中定義,所以要包含stdio.h標頭檔案。
之後再
port位置一定選擇sw模式,不能為jtag。
在1處打勾,2處將時鐘設定為當執行到printf時的cpu時鐘,3處如圖設定。
設定完成後就可以通過printf列印資訊了,進入除錯模式後開啟view - serial windows - debug (printf) viewer視窗可以看到列印資訊。
當如果**中有printf函式時如果沒有重寫fputc函式,當程式開始執行時就會死在bkpt 0xab處。
C語言之利用可變引數列表實現簡易的printf
在最初接觸c語言的時候就接觸到 printf 這個函式,當時並沒有對此留心與研究,也沒有發現這個函式跟其他普通函式存在區別,普通函式的引數在函式定義的時候就確定了,而 printf 函式的引數列表在呼叫時可以變化。所以再學習與了解可變引數列表以後,便利用可變引數列表實現了乙個簡易的 printf 其...
通過FileUpload實現檔案的上傳
閒話不多說,直接上 當我們使用上傳時,需要通過form表單的post提交,並且設定表單屬性 enctype multipart form data 該屬性的表示表單向伺服器傳送的是二進位制資料,這樣就能夠實現檔案內容傳輸到後台伺服器,同時表單的其他屬性也會用二進位制傳輸,那麼request.getp...
通過Socket實現群聊的思路
問題來自論壇 我的個人看法 啥叫群聊?也就是幾個人在乙個組裡!ok,那麼你先建乙個虛擬的組吧,然後把參 聊的人加入進去。然後每個成員發言時,傳送物件是組,伺服器負責把訊息發給組內的每個人。看看qq,裡面也是這麼做的。當然,聊天協議要設計好,至少每個訊息裡一定有傳送人,接收人 組 群,訊息等 再分享一...