STMCU小助手
发布时间:2021-11-8 14:42
|
概述 STM32时钟系统主要的目的就是给相对独立的外设模块提供时钟,也是为了降低整个芯片的耗能。$ K4 U7 J' Y5 E0 W' W g3 i- | 系统时钟,是处理器运行时间基准(每一条机器指令一个时钟周期)+ |* y$ x3 {; e& F, M 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。 一个单片机内提供多个不同的系统时钟,可以适应更多的应用场合。 不同的功能模块会有不同的时钟上限,因此提供不同的时钟,也能在一个单片机内放置更多的功能模块。 对不同模块的时钟增加开启和关闭功能,可以降低单片机的功耗" s7 L0 ]/ k0 T' k. K0 Z STM32为了低功耗,他将所有的外设时钟都设置为disable(不使能),用到什么外设,只要打开对应外设的时钟就可以, 其他的没用到的可以还是disable(不使能),这样耗能就会减少。 这就是为什么不管你配置什么功能都需要先打开对应的时钟的原因 ) ?9 t3 `/ d3 U9 _ o( g
各个时钟源 (左边的部分) STM32G0有4个独立时钟源:HSI、HSE、LSI、LSE。3 S9 |! N/ r: ^6 S ①、HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。 ②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~48MHz。2 U& n, J! `& L/ u% G ③、LSI是低速内部时钟,RC振荡器,频率为32kHz,提供低功耗时钟。 ④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。6 Q$ {3 p2 A4 X8 a+ Y 其中LSI是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源 而独立使用 而HSI高速内部时钟、 HSE高速外部时钟、 LSI低速内部时钟,这三个经过分频或者倍频 作为系统时钟来使用+ a2 J, D9 G+ [ O$ u/ o: I # J! I3 x) V# r' d PLL为锁相环倍频输出,基于HSI16或基于HSE的时钟的频率相乘,以产生三个独立的时钟输出。允许的输入频率范围是2.66至16 MHz。分频因子可从1到8进行编程 时钟分析 LSI(低速内部时钟) 作为IWDG(独立看门狗)和RTC的时钟源,单独使用。 LSE(低速外部时钟)$ e; }( S, }9 N. C7 {+ i, y t4 U, i- u8 j; |8 r+ o 可以为RTC、CEC、SYSCLK提供时钟源。 ( F* e8 E; a! u- |. N7 a HSE(高速外部时钟): ~+ H2 U. M, }" c, V% l M$ [ 可以为RTC、SYSCLK、PLL提供时钟源。 HSI(高速内部时钟)9 }2 u; y2 c- ~ 可以为PLL、HSISYS提供时钟源,HSISYS再为SYSCLK提供时钟源3 }# K4 ?3 r- ]& h: { PLL(锁相环倍频输出)8 c& t2 s: B4 `/ V 0 T/ K! G% b+ p3 j! s. i* N 由HSE、HSI输入,经过分频倍频后提供SYSCLK,还用两组时钟分别提供给TIM1/TIM15/RNG和ADC/I2S1。' E" X C( L# r 8 E+ B8 x! `0 J5 | 其他时钟源分析 HSISYS 从HSI16通过除以1到128的可编程因子得到的时钟( C0 s! z9 O$ h, r9 O, g PLLPCLK,PLLQCLK,PLLRCLK + l& T# X, X) C- J! T P( n 从PLL模块输出的时钟 SYSCLK 通过选择LSE,LSI,HSE,PLLRCLK和HSISYS时钟之一获得的时钟,是整个系统时钟基准。G0系列频率最高到64MHz。 + s m4 ], S# R8 ^4 `; M/ z) N HCLK 由SYSCLK通过除以从1到512可编程的因子得出的时钟 . n7 P6 l) t& T# ~9 l, ?8 Z HCLK8# l6 d" H$ P5 x e$ z' x ' l' B; [$ q3 L2 Z, w _3 h1 ^) N 由HCLK八分频得出的时钟 PCLK1 z3 w, z+ V2 Y3 z 从HCLK的时钟通过除以从1到16可编程的因子得出的时钟8 F, c$ i0 Y# ~. G$ ~' Y7 Y, l 3 y4 x, w# h n6 g" @$ Y8 f& Q TIMPCLK$ B' f+ n2 M$ b7 M' j. x 从PCLK派生的时钟,如果APB预分频器分频因子设置为1,则以PCLK频率运行,否则,以PCLK频率的两倍运行* h8 m/ u: E& B/ L7 O" ~. m7 b+ h ( ]2 ~* w9 D" N9 Y LPTIMx_IN3 ]# ?7 B$ v: k. B, p 7 ~& R3 Z0 F/ B4 W) D( Q' `! w LPTIMx_INx引脚提供的时钟,可为LPTIM外设选择 MCO(微控制器时钟输出)- B6 d; T, A/ D5 M 微控制器时钟输出(MCO)功能允许将时钟输出到外部MCO引脚。 可以选择以下之一作为MCO时钟:( o; |+ J) N) l; h* g ! r- `- @8 L% ]) [) K • LSI • LSE1 s, h2 R5 E0 H" Z5 j8 U/ d • SYSCLK • HSI16 • HSE • PLLRCLK* p3 }/ @( [1 s3 {( C4 c CSS(时钟安全系统) 时钟安全系统可以通过软件激活。一旦检测到HSE时钟故障,则系统时钟将自动切换到HSISYS,并且禁用HSE振荡器。如果HSE时钟也是PLL的时钟来源,并且发生故障时将PLLRCLK用作系统时钟,则PLL也被禁用。 通过CubeMX配置时钟树 新建工程,并且开启SWD调试 通过在引脚视图界面,配置PC6为GPIO_Output; 在Pinout&Configuration中选中"RCC",在配置栏High Speed Clock(HSE)下拉菜单中选中"Crystal/Ceramic Resonator"
在Clock Configuration中 ,按下图配置,在HCLK框中输入最大64MHz,回车。cubemx软件会自动计算系数,而不用手动填写。保持激活CSS。
& O3 n# U6 K" [ 然后在Project Manager中,设置好参数信息。 2 J. R) V/ S" |, A2 [
/ T, K) W! a1 l3 s3 _% Q( R& b 最后点击GENERATE CODE,生成工程文件。 打开工程项目,进入到MDK软件" ^2 u; p0 I. ~7 g6 {/ M2 H ! R3 ?) }1 _0 A- I) y
打开魔术棒工具-Debug-Settings-Flash Download,勾上"Reset and Run",最后就可以编写代码,自由发挥吧。
. D) v0 L0 b5 v. b |
微信公众号
手机版