野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14168|回复: 1

stm32f103指南者中的HSE配置系统时钟问题

[复制链接]
发表于 2020-5-9 00:46:12 | 显示全部楼层 |阅读模式
使用HSE配置系统时钟,选择不同时钟频率,然后看LED灯闪烁的时间间隔长短1、不做系统时钟配置,直接使用启动文件中配置好的时钟频率
2、系统时钟配置成128MHz
3、系统时钟配置成72MHz
在板子上分别执行上面的三个操作,发现1和2的LED闪烁频率基本一致,第3种的比1和2闪烁的间隔时间很明显的长

为什么第1种的闪烁情况和第2的基本一致,启动文件中执行完之后系统时钟不是配置成72MHz了吗?

使用HSE配置系统时钟的代码如下

  .c文件:

  1. <div>#include "bsp_rccclk.h"</div><div>
  2. </div><div>void HSE_SetSysClk(uint32_t RCC_PLLMul_x)</div><div>{</div><div><span style="white-space: pre;">        </span>ErrorStatus HSEStatus;</div><div><span style="white-space: pre;">        </span>RCC_DeInit();</div><div><span style="white-space: pre;">        </span></div><div><span style="white-space: pre;">        </span>//使能HSE</div><div><span style="white-space: pre;">        </span>RCC_HSEConfig(RCC_HSE_ON);</div><div><span style="white-space: pre;">        </span></div><div><span style="white-space: pre;">        </span>HSEStatus = RCC_WaitForHSEStartUp();</div><div><span style="white-space: pre;">        </span></div><div><span style="white-space: pre;">        </span>if(HSEStatus == SUCCESS)</div><div><span style="white-space: pre;">        </span>{</div><div><span style="white-space: pre;">                </span>//使能预取指</div><div><span style="white-space: pre;">                </span>FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>//等待周期</div><div><span style="white-space: pre;">                </span>FLASH_SetLatency(FLASH_Latency_2);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>//配置三个总线的分频因子</div><div><span style="white-space: pre;">                </span>RCC_HCLKConfig(RCC_SYSCLK_Div1);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>RCC_PCLK1Config(RCC_SYSCLK_Div2);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>RCC_PCLK2Config(RCC_SYSCLK_Div1);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>//锁相环配置:PLLCLK = HSE * 9 = 72MHz</div><div><span style="white-space: pre;">                </span>RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_x);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>//使能PLL</div><div><span style="white-space: pre;">                </span>RCC_PLLCmd(ENABLE);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>//等待PLL稳定</div><div><span style="white-space: pre;">                </span>while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>//选择系统时钟</div><div><span style="white-space: pre;">                </span>RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span>//等待PLLCLK作为系统时钟</div><div><span style="white-space: pre;">                </span>while(RCC_GetSYSCLKSource() != 0x08);</div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">                </span></div><div><span style="white-space: pre;">        </span>}</div><div><span style="white-space: pre;">        </span>else</div><div><span style="white-space: pre;">        </span>{</div><div><span style="white-space: pre;">                </span>//代码</div><div><span style="white-space: pre;">        </span>}</div><div>}</div><div>
  3. </div>
复制代码
在main.c中
                  HSE_SetSysClk(RCC_PLLMul_x);  修改x的值来改变时钟频率



回复

使用道具 举报

发表于 2020-5-10 16:25:45 | 显示全部楼层
对,我也遇到这情况了,由于没有示波器进行验证就跳过这个问题了。默认的72Mhz与设置好的128Mhz是一样的闪烁频率,反而直接设置72Mhz的话结果闪烁频率变慢了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-25 23:52 , Processed in 0.024253 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表