打印
[应用相关]

关于HSE_Value及ST的库

[复制链接]
7493|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mxinfa|  楼主 | 2009-5-3 09:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天被这个问题搞疯了
用ST的库做串口使用智林的板子,智林的板子上的晶振是12M的,这两个地方已修改
1:#define HSE_Value    ((u32)12000000)  (原来是8000000) 
2:RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6); 
其中第二点我觉得是无所谓的,只要不超过72M。发现这条语句USART_InitStructure.USART_BaudRate = ???;所实际对应的波特率恰好为???*1.5,跟12M与8M的比例相同。几天的摸索中发现#define HSE_Value    ((u32)12000000)这条语句改成多少都无所谓即使注释掉一样可以照常运行。搜索源码发现HSE_Value只用在了stm32f10x_rcc.c中的void RCC_GetClocksFreq(RCC_ClocksTypeDef* RCC_Clocks)这一个函数里面。并且这个函数也只是返回一些已经设定好的时钟值,并没有进行设置新的东西。我严重怀疑ST的库已经按照8M做死了,强烈关注这个问题!
串口的设置我发现了这个规律,那么别的跟时钟有关的如果都有这个问题可就麻烦了,希望技术支持关注一下这个问题!
还好ST公开了库源码,发现果然还有一个地方,在stm32f10x_rcc.c中#define HSI_Value   ((u32)8000000),定义死了为8M,修改成12M,发现只生成了一个debug的库版本(STM32F10xD.LIB)而没有生成release版本的库文件(STM32F10xR.LIB),而这个debug版本的库文件不能直接使用,求助:两个版本的库文件有什么区别?怎么设置才能生成release版本的库文件?或者怎么设置才能使用这个debug版本的库文件?
使用MDK3.40
沙发
id001| | 2009-5-3 15:20 | 只看该作者

关注,同样的疑问

使用特权

评论回复
板凳
lut1lut| | 2009-5-4 09:40 | 只看该作者

本来HSI就是固定的8MHz

不要把HSI @ <stm32f10x_rcc.c>和HSE @ <stm32f10x_conf.h>搞混了。

使用特权

评论回复
地板
ST_ARM| | 2009-5-4 11:43 | 只看该作者

楼主是使用的Keil软件

STM32F10xD.LIB和STM32F10xR.LIB这两个文件不是ST提供的,是Keil公司编译ST提供源代码生成的。
如果你使用这两个文件,你修改:#define HSE_Value ((u32)12000000)(原来的源代码里是8000000)就没有用,因为那两个文件在编译时是使用#define HSE_Value ((u32)8000000)编译的。

所以我们不建议用户在项目中使用这两个文件,请使用源代码编译。

使用特权

评论回复
5
mxinfa|  楼主 | 2009-5-4 18:36 | 只看该作者

谢谢,使用源代码编译已经成功

使用特权

评论回复
6
insect2006| | 2014-2-17 11:41 | 只看该作者
想请问下3.5版本的库里面如何修改时钟频率?相关的库文件都被锁定了不能修改

使用特权

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

本版积分规则

33

主题

198

帖子

1

粉丝