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

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

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

( W3 l. D3 ]  k
MCO 输出内部时钟到 GPIO 脚位,可以不通过运行用户代码,直接在 PC 端调试工具中配置寄存器来实现。在程序暂停时,往往已经走过了时钟配置,在这种情况下首先需要使能并配置RCC_CFGR 寄存器MCOSEL[3:0]=0x1,选 SYSCLK 来输出(当然,也可以根据实际情况选择输出其他时钟源)。
  C! g. p' I: Q( c
' A* Q0 N5 M' d+ [0 S/ [
微信图片_20230614120110.png
7 k& @9 _" ?6 ~) L9 F  z+ Q 微信图片_20230614120107.png 2 Q, l) l" A* f7 K' ]) X
3 \' U5 K1 O) o2 K
在调试软件中直接手动修改寄存器配置值,如下图:- I5 z6 P' n4 R$ _' E" X7 X) l
) m& d  Z& H- \7 K: }: L. R+ S
/ t- t$ P4 o% k
微信图片_20230614120104.png
6 H6 e( h3 R6 c5 H  F$ D$ M; i9 @4 J/ }! z1 i; r
其次,需要配置 GPIO 通路:GPIO MCO 选用 PA8 , AF0 功能。
7 d, E& A( q2 z) k7 p2 m! L9 ~6 e. _  ^) I( S+ y2 k

1 f* }" a* B$ S5 l& t1 w9 q 微信图片_20230614120101.png ( M5 T" F% H8 G
, V$ a( J" r* m( C
GPIO 选择下面黄色的配置:在下面的配置之前代码中需要打开 GPIOA 的 clock。

* H9 y2 k) O4 \6 H8 `% |% [& L+ E0 `0 T
微信图片_20230614120058.png

8 Y) ?$ |( a  ^. y) z* w
GPIOA_MODER.MODE8[1:0] 在寄存器窗口中手动修改为 0x2:
* c$ q0 {3 w5 U8 j, s  ^/ K0 Q( M( `9 J: B
* u$ O) I9 z+ A" B2 M
微信图片_20230614120054.png
9 H% d: j. G  R) A/ k$ N( F) X6 W) a
微信图片_20230614120051.png

, |) a) b2 X( Y" y  S+ T1 X
GPIOA_OTYPER.OT8 配置为 0,在上电默认的情况下,不用修改,已经是 0 了。

* @3 _" I9 F/ i9 q
微信图片_20230614120046.png

' }/ V- H- T# d- t
GPIOA_OSPEEDR.OSPEED8[1:0] 配置成 0x2 或 0x3。
4 Z6 g* z' l; x9 {' k* n; @; M8 T' L. {
微信图片_20230614120042.png

) A- E6 n8 T& M3 G; W6 Z( z# W- @
微信图片_20230614120039.png

5 V; t+ j, \# ~, `) E: I4 @
3 x+ U7 O. l: }. A
GPIOA_PUPDR.PUPD8[1:0] 在寄存器窗口中手动配置为 0x1。
1 h2 d  H  u* O1 [" I
微信图片_20230614120033.png
5 q" G* o$ Z4 }7 [
微信图片_20230614120030.jpg

, x: `8 }. s# ]. n
GPIOA_AFRH.AFSEL8[3:0] 配置为 0x0,上电默认已经为 0 了,不用修改,如果不 是,请手动修改为 0。
& f; p; B* J0 X0 k- F. j: ]0 H: o2 E
微信图片_20230614120026.png
% S" C' H$ t' W- Q7 ~  U+ ?, N1 o1 J* X
手动修改后的 GPIOA 寄存器值为如下图 18 所示:
( K9 n$ F; j+ Y+ y: q  n* `% x- G
微信图片_20230614120023.png
7 _+ ]9 S, F1 w2 p5 b  U3 r7 a& _9 Z
3. 总结
在调试软件时,可以通过 PC 端调试工具直接修改寄存器配置来使能某些功能。不过,使用中须注意遵守一定的流程,比如先开启对应的外设 clock,然后才能配置具体的寄存器去实现一些相应的功能。

2 ~5 Y! M' z0 h2 d# Z& m" X
转载自: STM32单片机
如有侵权请联系删除9 @6 H, h2 w& f, a* f' Y
" Y3 F* L; L- ?! h% @

, B# Y7 A- ]  p# [9 G  T4 A
- B. T. L  E' O  G0 z( v  F
收藏 评论0 发布时间:2023-6-14 12:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版