找回密码
 注册
关于网站域名变更的通知
查看: 2737|回复: 7
打印 上一主题 下一主题

如何实现 STM32 主频调整?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-6-12 09:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
TM32f103系列,一直用的是主频倍频到72MHZ,现在项目想不倍频,即还是用8MHZ,请问如何配置。
: ?% K; [) J  O$ V" X$ d

该用户从未签到

2#
发表于 2019-6-12 11:24 | 只看该作者
标准库在system_stm32f10x.c第106行,如下; {/ R) {1 O0 C8 W; v  y) O
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/ g8 l4 S0 u4 J3 }: W: R( d/* #define SYSCLK_FREQ_HSE    HSE_VALUE */8 j! n0 c1 Q! h3 e* |
#define SYSCLK_FREQ_24MHz  24000000
4 H& p3 L6 W+ R( m) f* M+ C& J#else
6 K3 D) d& |# C5 x8 x/* #define SYSCLK_FREQ_HSE    HSE_VALUE */, x: V$ Z1 x0 u- c
/* #define SYSCLK_FREQ_24MHz  24000000 */ ; n, c$ R% s% b4 G: q
/* #define SYSCLK_FREQ_36MHz  36000000 */5 d; ?/ ^+ v4 C5 b  y4 z) [
/* #define SYSCLK_FREQ_48MHz  48000000 */
% g- e! E5 C9 Z& |/* #define SYSCLK_FREQ_56MHz  56000000 */
/ ~; c9 a  l9 p#define SYSCLK_FREQ_72MHz  720000007 s9 t* b. a7 m" H
#endif
1 L' I3 w7 _7 x2 H% @4 Q. J. `hal库不知道没用过,估计更简单点,毕竟有个图形化配置

点评

直接把72000000改成8000000么?此外还需要改什么,对串口,定时器有啥影响  详情 回复 发表于 2019-6-12 13:21

该用户从未签到

3#
 楼主| 发表于 2019-6-12 13:21 | 只看该作者
helendcany 发表于 2019-6-12 11:24
5 q+ N+ w% d3 g6 ]7 }$ Q标准库在system_stm32f10x.c第106行,如下6 l7 j* y. Y2 R+ ]/ C$ g$ X. T
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL)  ...

4 T; b) `0 \. \4 m% D$ S, {直接把72000000改成8000000么?此外还需要改什么,对串口,定时器有啥影响
% G, N4 |/ `% N8 O6 \

点评

不是啊,看我发上来的代码把第10行屏蔽了,把第5行取消屏蔽。串口分频值 ,定时器分频 重装都是根据时钟频率计算的,肯定有影响啊 另外不明白你为什么要用8M,何必呢。72M哪里满足不了你  详情 回复 发表于 2019-6-12 13:53

该用户从未签到

4#
发表于 2019-6-12 13:53 | 只看该作者
artic 发表于 2019-6-12 13:211 H$ ?8 ]: p. H; F0 z
直接把72000000改成8000000么?此外还需要改什么,对串口,定时器有啥影响

: a$ K) C" [) g& O' _. M不是啊,看我发上来的代码把第10行屏蔽了,把第5行取消屏蔽。串口分频值 ,定时器分频 重装都是根据时钟频率计算的,肯定有影响啊* b1 {/ b% p; h# Y9 k2 }
另外不明白你为什么要用8M,何必呢。72M哪里满足不了你
& \7 r  d9 f4 c8 z: b; q8 p; y

点评

改成8MHZ想得是降低功耗。  详情 回复 发表于 2019-6-12 14:14

该用户从未签到

5#
发表于 2019-6-12 13:53 | 只看该作者
修改启动文件init函数,main前还有一些函数,追踪一下就能找到

该用户从未签到

6#
 楼主| 发表于 2019-6-12 14:14 | 只看该作者
helendcany 发表于 2019-6-12 13:53: Q' c0 U$ N- |8 D4 }& m
不是啊,看我发上来的代码把第10行屏蔽了,把第5行取消屏蔽。串口分频值 ,定时器分频 重装都是根据时钟 ...

/ c: p  L' }0 `- F8 l+ R6 b改成8MHZ想得是降低功耗。
8 p- \) U$ f5 n, t, `8 Q2 x

该用户从未签到

7#
发表于 2019-6-12 14:27 | 只看该作者
在 STM32 中,一共有 5 个时钟源,分别是 HSI 、 HSE 、 LSI 、 LSE 、 PLL 。
( A# _8 h0 [- i, M; W% @3 k% t- L& W  b2 ^
①HSI 是高速内部时钟, RC 振荡器,频率为 8MHz ;
7 ^, F) r1 f2 S" \+ V
+ l# `6 P( A' q& h2 L$ S②HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围是 4MHz – 16MHz ;7 [% p$ l" y) m1 A: K
% @$ A  ^  b) @7 ~7 M" `* Z
③LSI 是低速内部时钟, RC 振荡器,频率为 40KHz ;1 B1 v/ H$ W# h, V
  ]+ W8 Y; o- N9 D( I! G
④LSE 是低速外部时钟,接频率为 32.768KHz 的石英晶体;4 w/ K, E; `5 m3 m3 }  A
5 M. v* h  ~+ I
⑤PLL 为锁相环倍频输出,严格的来说并不算一个独立的时钟源, PLL 的输入可以接 HSI/2 、 HSE 或者 HSE/2 。PLL倍频可选择为 2 – 16 倍,但是其输出频率最大不得超过 72MHz 。8 x( S: t+ j' ?  Q3 @

7 T/ ~& {9 w! w) z5 _; N9 M% F其中, 40kHz 的 LSI 供独立看门狗 IWDG 使用,另外它还可以被选择为实时时钟 RTC 的时钟源。另外,实时时钟 RTC 的时钟源还可以选择 LSE ,或者是 HSE 的 128 分频。8 p6 T+ O. H- d- h  F

1 ], _0 v+ w' Y" z' Y4 @STM32 中有一个全速功能的 USB 模块,其串行接口引擎需要一个频率为 48MHz 的时钟源。该时钟源只能从 PLL 端获取,可以选择为 1.5 分频或者 1 分频,也就是,当需使用到 USB 模块时, PLL 必须使能,并且时钟配置为 48MHz 或 72MHz 。' \2 K4 y$ v# `

' A6 n. m7 |& `% a: }另外 STM32 还可以选择一个时钟信号输出到 MCO 脚 (PA.8) 上,可以选择为 PLL 输出的 2 分频、 HSI 、 HSE 或者系统时钟。1 g* X3 X& e0 t2 y7 ]! I

$ l: @$ y2 r1 ~- Z* Q3 o8 M1 m& m系统时钟 SYSCLK ,它是提供 STM32 中绝大部分部件工作的时钟源。系统时钟可以选择为 PLL 输出、 HSI 、 HSE 。系系统时钟最大频率为 72MHz ,它通过 AHB 分频器分频后送给各个模块使用, AHB 分频器可以选择 1 、 2 、 4 、 8 、 16 、 64 、 128 、 256 、 512 分频,AHB分频器输出的时钟送给 5 大模块使用:
8 V% E2 {7 j2 _
1 _7 G' J; t3 |: E1 t       ①送给 AHB 总线、内核、内存和 DMA 使用的 HCLK 时钟;
$ F* V6 }% e" ?4 i5 o3 p) B
3 b0 o5 Q4 x/ p! \4 x0 d- P       ②通过 8 分频后送给 Cortex 的系统定时器时钟STCLK;
: S/ o2 K2 h) ]1 G8 o5 k4 _  y( x* U& w
       ③直接送给 Cortex 的空闲运行时钟 FCLK ;; w8 N$ m" p; p  ^6 Z; }. z
. n% r. E( L+ F! U5 N
       ④送给 APB1 分频器。 APB1 分频器可以选择 1 、 2 、 4 、 8 、 16 分频,其输出一路供 APB1 外设使用( PCLK1 ,最大频率 36MHz ),另一路送给定时器 (Timer)2 、 3 、 4 倍频器使用。该倍频器根据PCLK1的分频值自动选择 1 或者 2 倍频,时钟输出供定时器 2 、 3 、 4 使用。' @& A. Q7 b; U
# j0 V' G" X& ]0 s6 [. J6 ?
       ⑤送给 APB2 分频器。 APB2 分频器可以选择 1 、 2 、 4 、 8 、 16 分频,其输出一路供 APB2 外设使用( PCLK2 ,最大频率 72MHz ),另外一路送给定时器 (Timer)1 倍频使用。该倍频器根据PCLK2的分频值自动选择1 或 2 倍频,时钟输出供定时器 1 使用。另外 APB2 分频器还有一路输出供 ADC 分频器使用,分频后送给 ADC 模块使用。 ADC 分频器可选择为 2 、 4 、 6 、 8 分频。
  D8 F/ n/ G" ~( Y" `" f/ d' N: Z
2 M% {) C, [" G1 _% k需要注意的是定时器的倍频器,当 APB 的分频为 1 时,它的倍频值为 1 ,否则它的倍频值就为 2 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-11 19:57 , Processed in 0.156250 second(s), 29 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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