0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用笔记|直接修改寄存器来输出内部时钟的方法

STM32单片机 来源:未知 2023-06-13 17:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

关键字:MCO,手动修改寄存器

目录预览

1 在特殊情况下使能 MCO 功能的方法2 具体实现3 总结

1. 在特殊情况下使能 MCO 功能的方法

在对某些不容易复现的问题进行代码调时,需要观察内部时钟的情况,但往往代码之前并没有使能 MCO 功能,在这种情况下就可以使用寄存器直接配置来输出内部时钟到 GPIO 脚位上进行观察和测试。

下面的例子就是在调试 STM32G474 很难复现的一个问题,调试暂停时,通过 PC 端调试工具直接更改寄存器配置来使能 MCO 功能输出 SYSCLK 到 GPIO 口的方法。

2.具体实现

MCO 输出内部时钟到 GPIO 脚位,可以不通过运行用户代码,直接在 PC 端调试工具中配置寄存器来实现。在程序暂停时,往往已经走过了时钟配置,在这种情况下首先需要使能并配置RCC_CFGR 寄存器MCOSEL[3:0]=0x1,选 SYSCLK 来输出(当然,也可以根据实际情况选择输出其他时钟源)。 6802c37e-09cd-11ee-962d-dac502259ad0.png68304952-09cd-11ee-962d-dac502259ad0.png 在调试软件中直接手动修改寄存器配置值,如下图:6880b8f6-09cd-11ee-962d-dac502259ad0.png 其次,需要配置 GPIO 通路:GPIO MCO 选用 PA8 , AF0 功能。68cbc01c-09cd-11ee-962d-dac502259ad0.png

GPIO 选择下面黄色的配置:在下面的配置之前代码中需要打开 GPIOA 的 clock。

68fc8f9e-09cd-11ee-962d-dac502259ad0.png

GPIOA_MODER.MODE8[1:0] 在寄存器窗口中手动修改为 0x2:

69222f1a-09cd-11ee-962d-dac502259ad0.png

695f148e-09cd-11ee-962d-dac502259ad0.png

GPIOA_OTYPER.OT8 配置为 0,在上电默认的情况下,不用修改,已经是 0 了。

698b2cf4-09cd-11ee-962d-dac502259ad0.png

GPIOA_OSPEEDR.OSPEED8[1:0] 配置成 0x2 或 0x3。

69a7b6c6-09cd-11ee-962d-dac502259ad0.png

69c47108-09cd-11ee-962d-dac502259ad0.png

GPIOA_PUPDR.PUPD8[1:0] 在寄存器窗口中手动配置为 0x1。

69e6217c-09cd-11ee-962d-dac502259ad0.png

6a00312a-09cd-11ee-962d-dac502259ad0.png

6a36bfb0-09cd-11ee-962d-dac502259ad0.png

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

6a6d285c-09cd-11ee-962d-dac502259ad0.png

6a8ebbc0-09cd-11ee-962d-dac502259ad0.png

手动修改后的 GPIOA 寄存器值为如下图 18 所示:

6ab9d116-09cd-11ee-962d-dac502259ad0.png

3. 总结

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

完整内容请点击“阅读原文”下载原文档。

6ad50846-09cd-11ee-962d-dac502259ad0.png

长按扫码关注公众号

更多资讯,尽在STM32

点击“阅读原文”,可下载原文档


原文标题:应用笔记|直接修改寄存器来输出内部时钟的方法

文章出处:【微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663534
  • STM32
    +关注

    关注

    2305

    文章

    11120

    浏览量

    371153
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    E203添加浮点数方法寄存器设计

    IFU 给到 regfile 地址,regfile 就会输出相应的源操作数。进入 regfile 的代码后,可以看到如果是读寄存器,则源操作数将在地址输入的同一个时钟周期输出,如果是
    发表于 10-24 13:25

    ‌SN74LVC595A 8位移位寄存器技术文档总结

    SN74LVC595A器件包含一个8位串行输入、并联输出移位寄存器,该寄存器为8位D型存储寄存器供电。存储寄存器具有并行的 3 态
    的头像 发表于 09-28 15:09 1105次阅读
    ‌SN74LVC595A 8位移位<b class='flag-5'>寄存器</b>技术文档总结

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    移位寄存器和存储寄存器提供时钟。移位寄存器具有一个直接覆盖清零 (SRCLR) 输入以及用于级联结构的串行 (SER) 输入和串行
    的头像 发表于 09-19 14:31 576次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    ‌TPIC6B595 8位功率移位寄存器技术文档总结

    或高压负载。 该器件包含一个 8 位串行输入、并行输出移位寄存器,该寄存器为 8 位 D 型存储寄存器供电。数据分别通过移位寄存器
    的头像 发表于 09-09 10:16 736次阅读
    ‌TPIC6B595 8位功率移位<b class='flag-5'>寄存器</b>技术文档总结

    请问如何通过 PinView 和 lua 脚本检查和修改寄存器状态?

    如何通过 PinView 和 lua 脚本检查和修改寄存器状态?
    发表于 08-28 07:57

    如何通过 PinView 和 lua 脚本检查和修改寄存器状态?

    如何通过 PinView 和 lua 脚本检查和修改寄存器状态?
    发表于 08-25 06:59

    SN74LV595B-EP低噪声8位移位寄存器技术解析与应用指南

    移位寄存器和存储寄存器提供时钟。移位寄存器具有直接覆盖清除 (SRCLR) 输入、串行 (SER) 输入和用于级联的串行
    的头像 发表于 08-15 09:28 843次阅读
    SN74LV595B-EP低噪声8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    Texas Instruments SN74LV8T594/SN74LV8T594-Q1移位寄存器特性/应用/框图

    器件输出(QA至QH)。为移位寄存器和存储寄存器提供单独的时钟(SRCLK和RCLK)和直接覆盖清除(SRCLR和RCLR)输入,允许数据单
    的头像 发表于 08-03 10:56 801次阅读
    Texas Instruments SN74LV8T594/SN74LV8T594-Q1移位<b class='flag-5'>寄存器</b>特性/应用/框图

    Texas Instruments SN74ACT595/SN74ACT595-Q1 SIPO移位寄存器特性/应用/功能图

    寄存器和移位寄存器提供时钟。该移位寄存器具有直接覆盖清除 (SRCLR\) 输入、串行 (SER) 输入,以及进行级联的串行
    的头像 发表于 07-07 15:27 552次阅读
    Texas Instruments SN74ACT595/SN74ACT595-Q1 SIPO移位<b class='flag-5'>寄存器</b>特性/应用/功能图

    Texas Instruments SN74AC596/SN74AC596-Q1 SIPO移位寄存器特性/应用/框图

    具有并行开漏输出。分别为存储寄存器和移位寄存器提供时钟。移位寄存器具有串行(SER)输入、直接
    的头像 发表于 07-05 15:47 677次阅读
    Texas Instruments SN74AC596/SN74AC596-Q1 SIPO移位<b class='flag-5'>寄存器</b>特性/应用/框图

    MAX25069怎么通过I2C修改寄存器

    我手上有一个客户的MAX25069的板子,请问下:怎么通过I2C接口修改寄存器的值?以寄存器0x2(REG_CTRL[7:0])为例。
    发表于 04-25 07:11

    了解ISL28022的电流和功率计算应用笔记

    本应用笔记讨论数字电源监控(DPM) ISL28022的内部计算程序。它解释了数据寄存器的位格式,并举例说明了内部数学处理
    的头像 发表于 02-21 11:30 979次阅读
    了解ISL28022的电流和功率计算应<b class='flag-5'>用笔记</b>

    AFE4400的CNTROL0寄存器的SPI_READ位设置成1才能读取寄存器的值,读完了想修改寄存器的值怎么办?

    AFE4400的CNTROL0寄存器的SPI_READ位设置成1才能读取寄存器的值,那读完了想修改寄存器的值怎么办呢,这个时候是read模式,无法 改变control0寄存器的值,
    发表于 01-14 08:09

    ADS1298R为什么无法写寄存器

    我这里代码的功能是:先对某个寄存器进行写操作,在然后读该寄存器的值,然后去判断是否修改寄存器成功。 现在遇到的问题是:对某个寄存器进行写操作过后,在读该
    发表于 01-14 07:33

    ADS131E08为什么不能修改寄存器

    各位有没有用过ADS131E08,为什么不能修改寄存器,01h CONFIG1 ,03h CONFIG3,修改之后就停止工作了。下面是读出的各个寄存器的值 0x01: 0x93 0x02
    发表于 01-03 08:08