STM32F4 Discovery 使用MDK-ARM Debug Viewer調試沒有打印信息的原因之一

硬件:STM32F4 Discovery開發板

軟件:MDK-ARM

新建一個工程,根據上一篇設置printf打印調試信息

但是始終沒有打印信息出現

各種對比發現設置都一樣啊,文件也沒找到哪裏不同。

解決方法:

之前的demo例程裏使用是好的,寫一個LED閃爍的例子,Delay函數延遲閃爍LED,在好使的工程和新建的工程裏,main函數的內容都寫一樣的。

然後下載運行,發現好使的工程運行時,LED閃爍頻率很快,我自己新建的工程,則LED閃爍的較慢。

試了幾個參數,發現當Delay的參數在好使的工程裏是15時,頻率對應的,我新建的工程裏的參數是5。

因此,猜測時鐘關係是1:3

於是,原來設置的168MHz改稱56MHz

重新下載運行……成功打印信息出來。


因此,找到原因,時鐘頻率的設置的問題。


在固件庫裏,stm32f4xx.h文件中,需要打開的對應的宏是#define STM32F40_41xxx

在system_stm32f4xx.c中,不一樣的地方是PLL_M這個宏

官方發佈的庫裏面PLL_M的值是25

而在stm32f4discovery的demo的程序裏這個值是#define PLL_M 8

因此這裏需要修改一下,就可以用trace=168MHz來進行調試了。


這個參數的說明是

/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */

/* SYSCLK = PLL_VCO / PLL_P */

這裏面,PLL_P=2, PLL_N=336, PLL_M=8 這樣的組合 加上 硬件上 晶振外部接的是8MHz的,這樣就是:

SYSCLK = (8000 000 / 8)*336/2 = 8 000 000 * (336/(8*2)) = 8 000 000 * 21 = 168MHz


至此,系統時鐘這裏的問題我們發現並解決了。^ ^


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章