打印
[STM32F4]

STM32F4 Discovery 使用MDK-ARM Debug Viewer调试没有打印信息的原因...

[复制链接]
759|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangcunxiake|  楼主 | 2016-8-27 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

硬件:STM32F4 Discovery开发板

软件:MDK-ARM

新建一个工程,根据上一篇设置printf打印调试信息

但是始终没有打印信息出现

各种对比发现设置都一样啊,文件也没找到哪里不同。

解决方法:

之前的demo例程里使用是好的,写一个LED闪烁的例子,Delay函数延迟闪烁LED,在好使的工程和新建的工程里,main函数的内容都写一样的。

然后下载运行,发现好使的工程运行时,LED闪烁频率很快,我自己新建的工程,则LED闪烁的较慢。

试了几个参数,发现当Delay的参数在好使的工程里是15时,频率对应的,我新建的工程里的参数是5。

因此,猜测时钟关系是1:3

于是,原来设置的168MHz改称56MHz

重新下载运行……成功打印信息出来。


因此,找到原因,时钟频率的设置的问题。


沙发
huangcunxiake|  楼主 | 2016-8-27 09:05 | 只看该作者

在固件库里,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


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


使用特权

评论回复
板凳
gaoxiansheng| | 2016-8-27 10:00 | 只看该作者
学习了。一会就试试用trace打印

使用特权

评论回复
地板
huangcunxiake|  楼主 | 2016-8-27 10:38 | 只看该作者
认真了解一个程序的每一句内涵,就会慢慢提高。

使用特权

评论回复
5
icecut| | 2016-8-27 10:39 | 只看该作者
方法非常赞,大家要学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

198

主题

3460

帖子

10

粉丝