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

求助: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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版