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

如何实现 STM32 主频调整?

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
TM32f103系列,一直用的是主频倍频到72MHZ,现在项目想不倍频,即还是用8MHZ,请问如何配置。6 d8 ?, K! z  x8 p8 E9 H

该用户从未签到

2#
发表于 2019-6-12 11:24 | 只看该作者
标准库在system_stm32f10x.c第106行,如下
' d" W2 N8 H: D& K( B#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)5 W) f, _- X6 Z. h* p
/* #define SYSCLK_FREQ_HSE    HSE_VALUE */
& V& ]- z" Q% e, y/ t/ C8 i1 P #define SYSCLK_FREQ_24MHz  24000000' a7 G4 y: N# I" K, i& u/ R
#else
9 @: k7 z4 {/ G4 {/* #define SYSCLK_FREQ_HSE    HSE_VALUE */; C; o+ b- q  W3 ]+ z7 B2 y/ ]) W
/* #define SYSCLK_FREQ_24MHz  24000000 */ ( n3 c  V% A- a$ h
/* #define SYSCLK_FREQ_36MHz  36000000 */
" H5 ?8 _# L1 W9 X/* #define SYSCLK_FREQ_48MHz  48000000 */8 a$ Q5 P4 A/ I4 [) [2 J) X
/* #define SYSCLK_FREQ_56MHz  56000000 */
% l) [8 e0 w# V; h#define SYSCLK_FREQ_72MHz  72000000
% ^6 p) d* j$ B#endif: G( ]0 L9 K, |+ @! e* F/ z
hal库不知道没用过,估计更简单点,毕竟有个图形化配置

点评

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

该用户从未签到

3#
 楼主| 发表于 2019-6-12 13:21 | 只看该作者
helendcany 发表于 2019-6-12 11:24( G# ?0 W8 z' N4 x
标准库在system_stm32f10x.c第106行,如下
1 h  ]! Y' c- }% u0 k9 Z" H$ z5 X#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL)  ...
- m9 e% R0 n: w# a  k- z7 k! I
直接把72000000改成8000000么?此外还需要改什么,对串口,定时器有啥影响( {. {8 T6 n2 t4 a! A

点评

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

该用户从未签到

4#
发表于 2019-6-12 13:53 | 只看该作者
artic 发表于 2019-6-12 13:21
  W: `. f- z, x8 y8 j( \1 Y2 R; X. C直接把72000000改成8000000么?此外还需要改什么,对串口,定时器有啥影响

' \+ ]1 B" Z' r  h! B$ t7 m* g9 x8 ~不是啊,看我发上来的代码把第10行屏蔽了,把第5行取消屏蔽。串口分频值 ,定时器分频 重装都是根据时钟频率计算的,肯定有影响啊
, [$ T# M( f# W! h/ y# S  A% v; Q2 j另外不明白你为什么要用8M,何必呢。72M哪里满足不了你
6 Z. P5 _0 `1 K) z

点评

改成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. I5 `4 M! v; a2 V8 X- V
不是啊,看我发上来的代码把第10行屏蔽了,把第5行取消屏蔽。串口分频值 ,定时器分频 重装都是根据时钟 ...
3 |* ]9 ?! K/ Z, O
改成8MHZ想得是降低功耗。5 ~; X) p$ T6 i

该用户从未签到

7#
发表于 2019-6-12 14:27 | 只看该作者
在 STM32 中,一共有 5 个时钟源,分别是 HSI 、 HSE 、 LSI 、 LSE 、 PLL 。" V) ?1 i! Y" l" ~$ x
3 d( y& [9 _% q, d6 Y/ l0 V
①HSI 是高速内部时钟, RC 振荡器,频率为 8MHz ;3 g( h$ i0 L8 b4 D+ ~

6 P1 a- ]' Q: E0 I, F; M4 @' I0 P②HSE 是高速外部时钟,可接石英 / 陶瓷谐振器,或者接外部时钟源,频率范围是 4MHz – 16MHz ;  Y$ `/ }! Q* ]+ @
* ^+ w% _/ O: c9 w! i0 [' X
③LSI 是低速内部时钟, RC 振荡器,频率为 40KHz ;( j) u; P/ Z( |; X0 K! T8 z
6 U0 |( d+ B, H7 A1 H; |
④LSE 是低速外部时钟,接频率为 32.768KHz 的石英晶体;
0 R4 S8 t+ T* E1 L) ^1 O, h6 X3 q4 I+ z9 c5 J4 Z, @
⑤PLL 为锁相环倍频输出,严格的来说并不算一个独立的时钟源, PLL 的输入可以接 HSI/2 、 HSE 或者 HSE/2 。PLL倍频可选择为 2 – 16 倍,但是其输出频率最大不得超过 72MHz 。
& w+ K/ ~3 a. d) _/ q; @2 |
2 T. ^+ u6 a3 |& V, w6 V其中, 40kHz 的 LSI 供独立看门狗 IWDG 使用,另外它还可以被选择为实时时钟 RTC 的时钟源。另外,实时时钟 RTC 的时钟源还可以选择 LSE ,或者是 HSE 的 128 分频。% a$ E" z% B1 l  T! v
. [( w+ J/ p% d* [
STM32 中有一个全速功能的 USB 模块,其串行接口引擎需要一个频率为 48MHz 的时钟源。该时钟源只能从 PLL 端获取,可以选择为 1.5 分频或者 1 分频,也就是,当需使用到 USB 模块时, PLL 必须使能,并且时钟配置为 48MHz 或 72MHz 。6 [7 P$ u5 P9 I# Q

3 h! s# h" n; v) M- r4 P; Y1 [0 U另外 STM32 还可以选择一个时钟信号输出到 MCO 脚 (PA.8) 上,可以选择为 PLL 输出的 2 分频、 HSI 、 HSE 或者系统时钟。
- O* z( g( N7 @+ P  A9 F) E- }+ o( ~  i' m
系统时钟 SYSCLK ,它是提供 STM32 中绝大部分部件工作的时钟源。系统时钟可以选择为 PLL 输出、 HSI 、 HSE 。系系统时钟最大频率为 72MHz ,它通过 AHB 分频器分频后送给各个模块使用, AHB 分频器可以选择 1 、 2 、 4 、 8 、 16 、 64 、 128 、 256 、 512 分频,AHB分频器输出的时钟送给 5 大模块使用:
. l; p! F% o- |9 ?4 v# v: D2 }7 e% L+ t/ J. W1 f. I3 F( R0 \5 d
       ①送给 AHB 总线、内核、内存和 DMA 使用的 HCLK 时钟;
! v5 i' H2 |7 g1 q4 m5 I! X2 P. u, e( \+ T( o/ Z- k+ x6 |. ?  A7 N2 L4 e7 y
       ②通过 8 分频后送给 Cortex 的系统定时器时钟STCLK;
* r/ O2 C3 [# s- j, |, j& d: P
" t/ M: S. B' v! U5 J  h       ③直接送给 Cortex 的空闲运行时钟 FCLK ;$ I+ j& a) r* E
7 Y% _9 Y9 n9 o; k* N
       ④送给 APB1 分频器。 APB1 分频器可以选择 1 、 2 、 4 、 8 、 16 分频,其输出一路供 APB1 外设使用( PCLK1 ,最大频率 36MHz ),另一路送给定时器 (Timer)2 、 3 、 4 倍频器使用。该倍频器根据PCLK1的分频值自动选择 1 或者 2 倍频,时钟输出供定时器 2 、 3 、 4 使用。& t0 S9 Y2 j. u, z- w0 ]: N7 r
, a8 [' w8 ?9 K4 O
       ⑤送给 APB2 分频器。 APB2 分频器可以选择 1 、 2 、 4 、 8 、 16 分频,其输出一路供 APB2 外设使用( PCLK2 ,最大频率 72MHz ),另外一路送给定时器 (Timer)1 倍频使用。该倍频器根据PCLK2的分频值自动选择1 或 2 倍频,时钟输出供定时器 1 使用。另外 APB2 分频器还有一路输出供 ADC 分频器使用,分频后送给 ADC 模块使用。 ADC 分频器可选择为 2 、 4 、 6 、 8 分频。* A4 Z# s  Z4 N( g+ s" g

9 v& B" T6 a0 C9 g7 Y8 D& t需要注意的是定时器的倍频器,当 APB 的分频为 1 时,它的倍频值为 1 ,否则它的倍频值就为 2 。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-23 04:11 , Processed in 0.093750 second(s), 29 queries , Gzip On.

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

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

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