你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求助:stm32的时钟配置问题

[复制链接]
zministaryfw 提问时间:2015-2-13 14:17 /
本帖最后由 zministaryfw 于 2015-2-13 15:08 编辑

    stm32固件包3.0之后,时钟的配置只需要SystemInit();就可以了,这是默认的72Mhz时钟,但是如果我想更改时钟了,是不是只要在前面加频率的宏定义例如#defined SYSCLK_FREQ_24MHz,然后再SystemInit();就可以更改系统的时钟了,还是说需要自己一个个去调用RCC库函数才能改?

stm32f103中文.pdf

下载

457.98 KB, 下载次数: 1, 下载积分: ST金币 -1

<
收藏 评论1 发布时间:2015-2-13 14:17

举报

1个回答
Angel_YY 回答时间:2018-3-12 11:29:54
在STM32F1系列中,在标准库的system_stm32f10x.c文件中实现了系统时钟的设置。可以通过简单的设置宏定义#define SYSCLK_FREQ_24MHz实现时钟的设置。
  1. #if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
  2. /* #define SYSCLK_FREQ_HSE    HSE_VALUE */
  3. #define SYSCLK_FREQ_24MHz  24000000
  4. #else
  5. /* #define SYSCLK_FREQ_HSE    HSE_VALUE */
  6. /* #define SYSCLK_FREQ_24MHz  24000000 */
  7. /* #define SYSCLK_FREQ_36MHz  36000000 */
  8. /* #define SYSCLK_FREQ_48MHz  48000000 */
  9. /* #define SYSCLK_FREQ_56MHz  56000000 */
  10. #define SYSCLK_FREQ_72MHz  72000000
  11. #endif
复制代码
通过代码可以看到默认情况下是试用的#define SYSCLK_FREQ_72MHz 72000000,定义为72M时钟。假设需要定义为24M时钟只需要打开24M的宏定义
#define SYSCLK_FREQ_24MHz 24000000
并且注释掉72M的宏定义
/*#define SYSCLK_FREQ_72MHz 72000000*/
接下来就可以分析系统初始化函数了。
11.png
SystemInit函数实现的末尾,调用了SetSysClock函数。
12.png
而在SetSysClock函数实现中根据宏定义调用了不同的时钟设置函数,例如定义了SYSCLK_FREQ_24MHz ,调用了SetSysClockTo24函数。
13.png
在SetSysClockTo24函数中真正的实现了时钟的设置。这个文件中已经实现了24M,36M,48M,56M,72M等频率的所有代码。
所以使用STM32F1系列的标准库设置系统时钟只需要修改system_stm32f10x.c文件中的SYSCLK_FREQ_xxMHz系列的宏定义就可以实现改变系统时钟的目的。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版