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

基于STM32直接修改寄存器来输出内部时钟的经验分享

[复制链接]
STMCU小助手 发布时间:2023-6-14 12:01
1. 在特殊情况下使能 MCO 功能的方法
在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到 GPIO 脚位上进行观察和测试。
下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法。

) Q% @4 ^) V& O; N- G/ S
2. 具体实现
/ T$ m- n; E1 j  ^+ `1 u
MCO 输出内部时钟到 GPIO 脚位,可以不通过运行用户代码,直接在 PC 端调试工具中配置寄存器来实现。在程序暂停时,往往已经走过了时钟配置,在这种情况下首先需要使能并配置RCC_CFGR 寄存器MCOSEL[3:0]=0x1,选 SYSCLK 来输出(当然,也可以根据实际情况选择输出其他时钟源)。+ F$ `- w+ v- Z) k

8 n3 n0 P& ^2 f5 k# r0 S% T
微信图片_20230614120110.png
$ z* Z. g  T" d8 _$ R4 T2 d 微信图片_20230614120107.png
. l! b. ~2 u- b2 I( V/ U2 t3 s
$ I; V$ p& J  a& Q2 f. b7 E  `$ c* y7 r
在调试软件中直接手动修改寄存器配置值,如下图:
. I, a$ m% v8 C- @" l- a7 s  p5 a/ e1 j' z# i$ l- O

4 D) s( m& g6 S  H, @2 v0 Y 微信图片_20230614120104.png
: U2 @3 \( J/ f, I3 N) \" S' m: c7 }. g! n
其次,需要配置 GPIO 通路:GPIO MCO 选用 PA8 , AF0 功能。
* D' F% _# ~. C6 h0 f  c! ?  u$ t8 N* u
' w+ g2 Y7 W/ l5 b" F2 ~$ \0 L
微信图片_20230614120101.png
& a/ K. A0 T3 N/ }1 m0 N
- w, n) N, x( o6 _5 q: C
GPIO 选择下面黄色的配置:在下面的配置之前代码中需要打开 GPIOA 的 clock。

/ T/ @5 v2 _9 m, x& G. R1 H; Q
微信图片_20230614120058.png
( r- k  X7 c. r
GPIOA_MODER.MODE8[1:0] 在寄存器窗口中手动修改为 0x2:

4 D) Z; N, m: y# e* e' n6 H" ]+ x5 l
* t2 n$ a8 t$ _, |- h2 r. n, L
微信图片_20230614120054.png
  f& h* \, X! h& t# s
微信图片_20230614120051.png

  i8 h) y; S' }! g1 b- t" P
GPIOA_OTYPER.OT8 配置为 0,在上电默认的情况下,不用修改,已经是 0 了。

7 c# k* B" H' P- w- V  M
微信图片_20230614120046.png
4 K1 g( W: A! I
GPIOA_OSPEEDR.OSPEED8[1:0] 配置成 0x2 或 0x3。
' `% \, t+ v3 Z1 [: X+ }* R
微信图片_20230614120042.png

8 S8 q  c5 Y+ \9 L1 ~  D% @+ l6 C
微信图片_20230614120039.png
7 N0 l$ }' d: O
6 x3 z. W* K, j, ?0 }& m2 y
GPIOA_PUPDR.PUPD8[1:0] 在寄存器窗口中手动配置为 0x1。
' f7 s; {1 |4 q3 J
微信图片_20230614120033.png

% D' s9 |% \% J4 ?1 }6 h3 J  G
微信图片_20230614120030.jpg

2 N3 I& ]$ _# d0 I0 ~" m
GPIOA_AFRH.AFSEL8[3:0] 配置为 0x0,上电默认已经为 0 了,不用修改,如果不 是,请手动修改为 0。

% z9 w8 n$ K4 O6 w% t& p# W" O
微信图片_20230614120026.png
$ D9 R. {( ^  f! \
手动修改后的 GPIOA 寄存器值为如下图 18 所示:

2 ?0 n) O3 ?; |1 D6 ?, o
微信图片_20230614120023.png
$ S9 _7 X; J1 v3 f, |, Q5 P
3. 总结
在调试软件时,可以通过 PC 端调试工具直接修改寄存器配置来使能某些功能。不过,使用中须注意遵守一定的流程,比如先开启对应的外设 clock,然后才能配置具体的寄存器去实现一些相应的功能。
! `' M" N" g# V) Z1 X. x
转载自: STM32单片机
如有侵权请联系删除' f8 Y4 r3 {/ W
, X- P( r! m$ c

* x; u1 K# G9 m+ d1 s: _3 V# u3 v$ w# H4 I3 T  J
赞 收藏 评论0 发布时间:2023-6-14 12:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版