通過JLink的SW實現printf函式

2021-07-05 23:25:59 字數 1134 閱讀 5350

標準庫函式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,裡面也是這麼做的。當然,聊天協議要設計好,至少每個訊息裡一定有傳送人,接收人 組 群,訊息等 再分享一...