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


至此,系统时钟这里的问题我们发现并解决了。^ ^


你可能感兴趣的:(STM32F4 Discovery 使用MDK-ARM Debug Viewer调试没有打印信息的原因之一)