打印
[STM32F1]

内部时钟

[复制链接]
508|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renyaq|  楼主 | 2019-6-23 15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
stm32103配置成内部时钟,把系统时钟配置成64M单片机就不跑了,配置成36M程序能继续跑

使用特权

评论回复
沙发
zyf部长| | 2019-6-23 15:03 | 只看该作者

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
板凳
renyaq|  楼主 | 2019-6-23 15:06 | 只看该作者
void RCC_Configuration(void)  
{  
    RCC_DeInit();//将外设 RCC寄存器重设为缺省值  
  
    RCC_HSICmd(ENABLE);//使能HSI   
    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//等待HSI使能成功  
  
    //FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  
    //FLASH_SetLatency(FLASH_Latency_2);  
     
    RCC_HCLKConfig(RCC_SYSCLK_Div1);     
    RCC_PCLK1Config(RCC_HCLK_Div2);  
    RCC_PCLK2Config(RCC_HCLK_Div1);  
      
    //设置 PLL 时钟源及倍频系数  
    RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16);//使能或者失能 PLL,这个参数可以取:ENABLE或者DISABLE   
    RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,那么它不能被失能  
    //等待指定的 RCC 标志位设置成功 等待PLL初始化成功  
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
  
    //设置系统时钟(SYSCLK) 设置PLL为系统时钟源  
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择想要的系统时钟   
    //等待PLL成功用作于系统时钟的时钟源  
    //  0x00:HSI 作为系统时钟   
    //  0x04:HSE作为系统时钟   
    //  0x08:PLL作为系统时钟   
    while(RCC_GetSYSCLKSource() != 0x08);//需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL  
  
  
}

使用特权

评论回复
地板
huanghuac| | 2019-6-23 15:10 | 只看该作者
参考DISCOVERY的程序,默认就是64M的

使用特权

评论回复
5
happy_10| | 2019-6-23 15:14 | 只看该作者
72MHz都可以跑到。

使用特权

评论回复
6
renyaq|  楼主 | 2019-6-23 15:16 | 只看该作者
不可以最多52M用内部的

使用特权

评论回复
7
bqyj| | 2019-6-23 15:19 | 只看该作者

搞定了?

使用特权

评论回复
8
wenfen| | 2019-6-23 15:21 | 只看该作者
检查你的电源管脚,尤其VDDA脚有无接好;

使用特权

评论回复
9
zhuhuis| | 2019-6-23 15:27 | 只看该作者
FLASH_SetLatency(FLASH_Latency_2);  这句里的latency跟主时钟有关

使用特权

评论回复
10
renyaq|  楼主 | 2019-6-23 15:30 | 只看该作者
实际最多52M,多过它就死机

使用特权

评论回复
11
renyaq|  楼主 | 2019-6-23 15:35 | 只看该作者
36M能用的

使用特权

评论回复
12
songqian17| | 2019-6-23 15:38 | 只看该作者

FLASH_ACR 这里有说明:
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

使用特权

评论回复
13
chenho| | 2019-6-23 15:42 | 只看该作者

ST的时钟比较复杂。

使用特权

评论回复
14
zwll| | 2019-6-23 15:49 | 只看该作者
是的。
你可以去ST官方网站下载个stm32cubeMx图形化配置工具,基本点击鼠标即可完成,关于GPIO管脚、
时钟以及其它外设的等初始化C代码。

使用特权

评论回复
15
renyaq|  楼主 | 2019-6-23 15:58 | 只看该作者
不知道为什么不能跑到64M

使用特权

评论回复
16
renyaq|  楼主 | 2019-6-23 16:00 | 只看该作者
搞定了

加上这个就行了
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);  
FLASH_SetLatency(FLASH_Latency_2);  

使用特权

评论回复
17
renyaq|  楼主 | 2019-6-23 16:04 | 只看该作者
结贴了,多谢大家讨论这么多哈,呵呵

使用特权

评论回复
18
xuanhuanzi| | 2019-6-23 22:39 | 只看该作者
F1跑那么快也没用啊。

使用特权

评论回复
19
xuanhuanzi| | 2019-6-23 22:39 | 只看该作者
要按照推荐的速度跑

使用特权

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

本版积分规则

700

主题

10138

帖子

4

粉丝