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

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

[复制链接]
STMCU小助手 发布时间:2023-6-14 12:01
1. 在特殊情况下使能 MCO 功能的方法
在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到 GPIO 脚位上进行观察和测试。
下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法。
- u( C8 y; N& y
2. 具体实现
6 Q: ^& F- n4 ^" W9 Z0 `1 ~
MCO 输出内部时钟到 GPIO 脚位,可以不通过运行用户代码,直接在 PC 端调试工具中配置寄存器来实现。在程序暂停时,往往已经走过了时钟配置,在这种情况下首先需要使能并配置RCC_CFGR 寄存器MCOSEL[3:0]=0x1,选 SYSCLK 来输出(当然,也可以根据实际情况选择输出其他时钟源)。
. b, S) X! y0 u7 M$ m: x

7 ]% A$ {3 o( |# s6 b4 ^" a
微信图片_20230614120110.png
( `9 G0 k) V0 g& \  R5 [* r 微信图片_20230614120107.png 7 S  p7 Z+ C% O2 G! z8 V5 G

3 U! X* F1 I: I2 e& W* F: W  ~
在调试软件中直接手动修改寄存器配置值,如下图:
/ \) P$ B4 Z$ [: h
- E) z2 x% O2 E1 a& [

0 |, n% w' l; V 微信图片_20230614120104.png
5 E2 R. D% D5 O5 I' G. ^* H' \2 {7 t
其次,需要配置 GPIO 通路:GPIO MCO 选用 PA8 , AF0 功能。
8 C/ N: N0 ~# ^1 {& R, l* i
9 ]2 S- E) S" H* V# d2 F% E

  ~& u/ z& ^6 P- W 微信图片_20230614120101.png
* \+ D5 [8 Z# T9 v; a6 e/ A3 Y
9 c) ?  @$ J0 T0 B$ D5 ]2 U
GPIO 选择下面黄色的配置:在下面的配置之前代码中需要打开 GPIOA 的 clock。

, ?# K# F) |+ H, A' K0 H
微信图片_20230614120058.png

& V  A: X. z2 P. g! H# Y- K
GPIOA_MODER.MODE8[1:0] 在寄存器窗口中手动修改为 0x2:
" k! `, F' h9 ?# g  A' E0 t: q1 d6 E

0 ]0 o! p" c) B- y. V: w. V! n9 s
微信图片_20230614120054.png
  a; D3 |' Z5 e; e, W
微信图片_20230614120051.png
( t  b! ^, k1 z' o
GPIOA_OTYPER.OT8 配置为 0,在上电默认的情况下,不用修改,已经是 0 了。

0 V" E" m  a( d9 Q
微信图片_20230614120046.png
( p3 A; T4 Y, g' p& t, T6 f0 l
GPIOA_OSPEEDR.OSPEED8[1:0] 配置成 0x2 或 0x3。

+ T/ E  ~+ w3 d5 k# m- c
微信图片_20230614120042.png

! S1 m% `' O1 [' u, V
微信图片_20230614120039.png
: U" U: t) f) r0 M" v+ x
- h- ^; |, I9 h
GPIOA_PUPDR.PUPD8[1:0] 在寄存器窗口中手动配置为 0x1。

3 W  p- o: K' A: E. b2 E2 i
微信图片_20230614120033.png
9 ?: L  \- T  `1 o9 i/ L
微信图片_20230614120030.jpg
% D5 g+ L& E' @0 Y
GPIOA_AFRH.AFSEL8[3:0] 配置为 0x0,上电默认已经为 0 了,不用修改,如果不 是,请手动修改为 0。

; d/ y% |, Y8 a0 R
微信图片_20230614120026.png

9 ^" W0 P% y; b. o4 i* b7 X7 N/ D
手动修改后的 GPIOA 寄存器值为如下图 18 所示:

, V# p2 k$ i  r) }6 Z( W
微信图片_20230614120023.png

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

3 R9 {0 s% R# p& j3 L
转载自: STM32单片机
如有侵权请联系删除# C. @$ Y3 V! i  R" o" |" i) f

6 a0 p/ d* s7 J! Z" @0 A' l
! H9 c4 Q$ N! x% H
% a2 X7 a7 n2 y; D# z* U0 n
赞 收藏 评论0 发布时间:2023-6-14 12:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

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