打印

stm32F107vc使用HSI时,最大时钟频率是多少

[复制链接]
3914|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
EAMCU|  楼主 | 2011-12-21 18:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 EAMCU 于 2012-5-25 14:27 编辑

在参考手册上,关于互联型产品看到下面一句话
When the HSI is used as a PLL clock input, the maximum system clock frequency that can be achieved is 36 MHz.

但是我在使用时,把PLL频率设置到了64MHz,发现stm32f107vc同样正常运行在64MHz,而且使用的数量不少,还是没有发现问题

请问,这里的最大36MHz是如何来的,为什么比增强型的64MHz低?是因为互联型所附加的以太网对时钟精度要求高?
沙发
香水城| | 2011-12-21 21:11 | 只看该作者
PLLMUL的最大值只有9倍,你怎么可能把PLL频率设置到64MHz呢?

使用特权

评论回复
板凳
pkat| | 2011-12-21 22:47 | 只看该作者
怎么会设置到64MHz??

使用特权

评论回复
地板
EAMCU|  楼主 | 2011-12-22 10:37 | 只看该作者
看到你们这样说,我去仔细看了参考手册,果然如你们所说,在互联型中,PLLMUL最大值为9,16倍的1111被当作了保留。
我在程序中,仍然采用了1111作为赋值,即仍然把PLLMUL写成16倍。
结果的确为64MHz,
1. 选择HCLK/8为Systick,这里64/8=8MHz,重装值是8000000,即把中断一次的时间设为1s,实测中断时间的确为1秒。
        u32 ENMASK = 0x00000003;
        u32 CLKMASK = 0x00000006;
        SysTick->CTRL &= ~ENMASK;                   //关闭寄存器,关闭中断使能
        SysTick->CTRL &= ~CLKMASK;                  //选择HCLK/8为Systick,这里64/8=8MHz
        SysTick->LOAD = SYSTICKPERIOD;                       //重装值是8000000,即把中断一次的时间设为1s
        SysTick->VAL = ((u32)0x00000000);           //Var清零,产生1个事件,更新Load的值
        SysTick->CTRL |= ENMASK;                    //启动SysTick,开启中断使能
        NVIC_SetPriority(SysTick_IRQn, 0x04);                 //优先级分组为2,抢占式优先级为1,次优先级为0
2. TIM1的TIM_TimeBaseStructure.TIM_Period 设为255,输出模式为PWM2,最后示波器测量输出频率为250kHz。
综上所述,仍然为64MHz。
我的程序是为stm32f103写的,当时不知道互联型的最大频率限制。后来为了使用重映射的spi3,不得不换到了f107,程序没有改动,昨天刚发现频率36MHz的限制,结果验证时却发现仍然是64MHz。
我本心是希望107能够工作在64MHz的。

使用特权

评论回复
5
encai| | 2011-12-22 10:58 | 只看该作者
看4楼的

使用特权

评论回复
6
EAMCU|  楼主 | 2011-12-23 10:54 | 只看该作者
没有人有相同发现么?

使用特权

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

本版积分规则

38

主题

396

帖子

2

粉丝