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

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

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

# s' I, X0 c' n" [' }% n& f0 [
MCO 输出内部时钟到 GPIO 脚位,可以不通过运行用户代码,直接在 PC 端调试工具中配置寄存器来实现。在程序暂停时,往往已经走过了时钟配置,在这种情况下首先需要使能并配置RCC_CFGR 寄存器MCOSEL[3:0]=0x1,选 SYSCLK 来输出(当然,也可以根据实际情况选择输出其他时钟源)。
( i# `7 j6 t1 }

' v2 y9 `( X' x
微信图片_20230614120110.png 9 ?1 ?# T* c' S3 f- J- V6 G
微信图片_20230614120107.png 6 [0 M5 i' u4 y" F

- j$ s/ |6 T% m/ F/ q& t4 G
在调试软件中直接手动修改寄存器配置值,如下图:. a1 L0 {' J7 [4 R! Y9 A) P0 \

& F  N9 Y% ]0 V( ?
# W) s/ ~0 J3 w: a4 a2 T4 N
微信图片_20230614120104.png ' }2 O( S8 i  o
1 r. [: L5 J* K) t5 Z
其次,需要配置 GPIO 通路:GPIO MCO 选用 PA8 , AF0 功能。) z$ G( {! @' f

/ K( P; u& @# y9 W4 N3 D
  W8 b2 A$ y3 O) e& |0 v1 q
微信图片_20230614120101.png ( r% `. [; Q. S& z& \

# E( z7 s& p! T/ r
GPIO 选择下面黄色的配置:在下面的配置之前代码中需要打开 GPIOA 的 clock。
: c) D6 O3 @& u; h. n; n
微信图片_20230614120058.png
( Y3 l: k( o. p, D+ f+ ?! w0 g
GPIOA_MODER.MODE8[1:0] 在寄存器窗口中手动修改为 0x2:
3 X$ C/ `! L7 V! |/ w0 U9 G

3 W: r5 L/ Z0 [( C4 P
微信图片_20230614120054.png
6 z$ T5 c* S; }4 x0 ~
微信图片_20230614120051.png

0 R. K2 I; {, H3 L5 }4 P
GPIOA_OTYPER.OT8 配置为 0,在上电默认的情况下,不用修改,已经是 0 了。
) t4 k8 C" t$ g: V
微信图片_20230614120046.png

+ c: P: A. ^) V4 {
GPIOA_OSPEEDR.OSPEED8[1:0] 配置成 0x2 或 0x3。

. A) a/ L7 x. Q$ \8 p1 s
微信图片_20230614120042.png

1 C; M( E; M( s  \, D
微信图片_20230614120039.png
$ i6 ?1 Z  M& e! m' B* u

. }6 `5 e2 x3 D2 V0 W
GPIOA_PUPDR.PUPD8[1:0] 在寄存器窗口中手动配置为 0x1。

  @* P9 ]% ]1 p; J$ V; N
微信图片_20230614120033.png
7 k) f/ N; Z, F3 A. T; g; F9 q, R
微信图片_20230614120030.jpg

/ m6 T, i1 N3 [
GPIOA_AFRH.AFSEL8[3:0] 配置为 0x0,上电默认已经为 0 了,不用修改,如果不 是,请手动修改为 0。

" j- G5 X3 ?+ O6 J0 V
微信图片_20230614120026.png

. S, q6 Q# ?+ f% _* p
手动修改后的 GPIOA 寄存器值为如下图 18 所示:

; d. i* d* [9 _# {
微信图片_20230614120023.png

% L$ k4 d) U/ u7 u
3. 总结
在调试软件时,可以通过 PC 端调试工具直接修改寄存器配置来使能某些功能。不过,使用中须注意遵守一定的流程,比如先开启对应的外设 clock,然后才能配置具体的寄存器去实现一些相应的功能。

, C# x9 N% c/ H: O
转载自: STM32单片机
如有侵权请联系删除
& a: Z7 P3 A, O
( A4 B( r( U) v' o0 l' W
3 f& B8 I/ R" q
$ {6 S+ Z, h) F- L. {& g
收藏 评论0 发布时间:2023-6-14 12:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

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