打印

stm32系统时钟无法倍频到72m

[复制链接]
7858|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
examdog|  楼主 | 2012-7-27 22:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
外部8M晶振,示波器测试,晶振没问题,但是PLL倍频悉数不能超过6,否则无法通过while(RCC_GetSYSCLKSource() != 0x08);其实连这个函数都没进,就死了,后来把系统时钟定为48m,也有问题,最后定在40m,但是有时会有不进tim2中断的事情发生,这是电路上的原因,还是我程序的原因呢
沙发
wgsxsm| | 2012-7-27 22:21 | 只看该作者
换电容试试呢
或者多试几个芯片

好像听说有假的芯片了
。。。

使用特权

评论回复
板凳
易陶| | 2012-7-28 09:17 | 只看该作者
哪个库?是不是库太老了?

使用特权

评论回复
地板
pattywu| | 2012-7-28 11:47 | 只看该作者
估计是没加FLASH预取延时周期。
    不加延时周期,FLASH的访问速度最高为50MHz左右。

使用特权

评论回复
5
examdog|  楼主 | 2012-7-30 10:34 | 只看该作者
估计是没加FLASH预取延时周期。
    不加延时周期,FLASH的访问速度最高为50MHz左右。
pattywu 发表于 2012-7-28 11:47

PLL系数6也不行,会出现不进中断的现象

使用特权

评论回复
6
examdog|  楼主 | 2012-7-30 10:35 | 只看该作者
哪个库?是不是库太老了?
易陶 发表于 2012-7-28 09:17

库是最新的

使用特权

评论回复
7
examdog|  楼主 | 2012-7-30 10:35 | 只看该作者
换电容试试呢
或者多试几个芯片

好像听说有假的芯片了
。。。
wgsxsm 发表于 2012-7-27 22:21

芯片没问题。电容换过了

使用特权

评论回复
8
examdog|  楼主 | 2012-7-30 10:38 | 只看该作者
问题已经解决,外部晶振就绪后,加上 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* Flash 2 wait state */
FLASH_SetLatency(FLASH_Latency_2);
这两条就一切正常,但是不知道是为什么,和中断向量有关?

使用特权

评论回复
9
香水城| | 2012-7-30 11:11 | 只看该作者
5楼已经说过原因了

参考手册上有写
Bits 2:0  LATENCY: Latency
These bits represent the ratio of the SYSCLK (System Clock) period to the Flash Access time.
000 Zero wait state, if 0 < SYSCLK≤ 24 MHz
001 One wait state, if 24 MHz < SYSCLK ≤ 48 MHz
010 Two wait states, if 48 MHz < SYSCLK ≤ 72 MHz

使用特权

评论回复
10
huazhixing| | 2012-7-30 15:51 | 只看该作者
mark

使用特权

评论回复
11
examdog|  楼主 | 2012-7-31 08:34 | 只看该作者
9# 香水城
试验了各种的时钟频率,但是都不稳定,就是有时不进tim定时中断,也是这个原因么?

使用特权

评论回复
12
huazhongwang| | 2012-8-2 20:46 | 只看该作者
遇到同样的问题,加上FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    // Flash 2 wait state
    FLASH_SetLatency(FLASH_Latency_2);
之后问题解决

使用特权

评论回复
13
767598314| | 2013-7-3 15:48 | 只看该作者
pattywu 发表于 2012-7-28 11:47
估计是没加FLASH预取延时周期。
    不加延时周期,FLASH的访问速度最高为50MHz左右。 ...

我也遇见了同样的问题,按照你们说的方法加了FLASH预取延时,果然好了,十分感谢!不过不知道这个FLASH的预取延时是什么意思,要是能解释一下就更好了,呵呵!现在是只知其然不知其所以然!

使用特权

评论回复
14
sun1238898| | 2013-7-3 16:08 | 只看该作者
因为F1cpu速度与flash读取速度不匹配。高于一定的主频之后,如果不将频的话,读取flash指令就会异常。就很简单,比如一个漏斗,你往漏斗里倒水,如果倒的太急的话,水极易溢出,如果你慢点倒水,就不会有这个现象了,希望对你有帮助。

使用特权

评论回复
15
明月小厨| | 2013-7-3 16:51 | 只看该作者
认真排错,72MHZ是大家用的最多的频率点,怎么可能进不去?

使用特权

评论回复
16
明月小厨| | 2013-7-3 16:53 | 只看该作者
examdog 发表于 2012-7-30 10:38
问题已经解决,外部晶振就绪后,加上 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/* Flash 2 w ...

这些内容在库里面好象已经处理好了,是不是你自己乱改改出来的毛病?

使用特权

评论回复
17
hawksabre| | 2013-7-3 19:13 | 只看该作者
应该是楼主   自己的设置问题   这是我的感觉   楼主  

使用特权

评论回复
18
examdog|  楼主 | 2013-7-17 16:39 | 只看该作者
明月小厨 发表于 2013-7-3 16:53
这些内容在库里面好象已经处理好了,是不是你自己乱改改出来的毛病?

是的,我改动了一些地方,不小心给删除了

使用特权

评论回复
19
examdog|  楼主 | 2013-7-17 16:40 | 只看该作者
hawksabre 发表于 2013-7-3 19:13
应该是楼主   自己的设置问题   这是我的感觉   楼主

就是flash延时的问题

使用特权

评论回复
20
cjhk| | 2013-7-17 18:58 | 只看该作者
问题点找到就好   楼主 花点时间  仔细钻研钻研   

使用特权

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

本版积分规则

13

主题

59

帖子

2

粉丝