stm32嵌入式你不一定知道的除錯方法系列 3

2021-10-10 11:27:09 字數 1604 閱讀 5241

相信大家學習的第乙個c言語程式是:

printf(「hello word!」);

那麼編寫stm32這樣的程式是否可以也可以列印呢?答案是肯定的。

下面介紹兩種除錯列印的方式,第二種估計很多人都不知道哦。

實現很簡單,我們只要新增乙個重對映函式就可以實現列印的功能了。具體操作如下:

新增一下**。

#if

1#pragma import

(__use_no_semihosting)

struct __file

;file __stdout;

void

_sys_exit

(int x)

int fputc

(int ch,

file

*f)#endif

接著下來,就可以直接使用print()函式進行除錯列印了。

那麼還有沒有其他方式實現列印呢?有的可以使用vsnprintf函式進行字元轉換

int printk

(const char *fmt_s,

...)

;//os_suspend();

va_list ap;

int result;

uint32_t len =

sizeof

(outbuf)

;va_start

(ap, fmt_s)

; result =

vsnprintf

(outbuf, len, fmt_s, ap)

;va_end

(ap);if

(result >0)

//os_resume();

return result;

}

這個函式 printk()使用和標準的printf一模一樣。

這樣子就有個好好玩的 東西,如果這函式不式串列埠輸出呢?

他還可以式lcd的輸出或者無線模組的傳輸喔。這樣子是不是感覺能做的事情更加多了呢?哈哈哈

先在工程裡面新增rtt函式檔案(只有兩個檔案哦):

然後只有在需要列印的地方新增:函式就新了:

開啟j-link的rtt viewer工具:

列印效果如下:

stm32嵌入式你不一定知道的除錯方法系列 2

估計很多人是不知道keil除錯工具的這個功能的。就算是已經工作了4 5年的工程師也不見得知道有這個功能。我們可以通過keil的除錯 工具設定某個變數被讀或者被寫操作的時候產生除錯斷點。這時就可以快速定位到一些棘手的問題。例如 之前有位小朋友,發現他的程式中有個關鍵的變數在某個地方被莫名奇妙的被修改了...

abap系列 你不一定知道的open sql用法

作為abaper open sql中的select和in 子查詢屬於日常必備的技能。然而,open sql還有一些語法你可能沒用過甚至沒聽過,這些語法用好了可以大大減少 複雜度和提高效能,下面就來看看這些用法吧。場景1 取建立日期晚於憑證日期的採購憑證,用於統計補單率。1 select eneln ...

你不一定知道的UrlPrefix路由規則

接上文,容器內web程式一般會繫結到或http 以確保使用容器ip可以訪問到web應用。正如我們在asp.net core官方映象顯示的,asp.net core程式在容器內80埠監聽請求 web程式啟動後,根據監聽位址urlprefix中的主機元素,會向系統元件http server api註冊不...