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单片机】欢迎添加关注!文章转载请注明出处。


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

    关注

    6032

    文章

    44513

    浏览量

    632759
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354716
收藏 人收藏

    评论

    相关推荐

    寄存器的类型和作用

    在计算机科学中,寄存器(Register)是一种高速存储单元,它位于CPU内部,与CPU的运算单元和逻辑控制单元紧密相连。寄存器的主要作用是暂时存储指令、操作数和地址等临时数据,以便CPU快速访问和处理。由于
    的头像 发表于 09-05 14:11 1051次阅读

    寄存器的输入输出方式

    寄存器的输入输出方式是数字电路设计中至关重要的部分,它决定了数据如何在寄存器中进出以及处理的效率。下面将详细探讨寄存器的几种主要输入输出方式
    的头像 发表于 09-05 14:09 744次阅读

    寄存器故障分析

    寄存器故障分析是计算机硬件维护与系统稳定性保障中的重要环节。寄存器作为计算机中的关键组成部分,负责存储和传输数据,其稳定性和可靠性直接影响到整个计算机系统的性能。以下是对寄存器故障的全
    的头像 发表于 08-29 11:26 738次阅读

    使用PGA309配置寄存器时遇到的疑问求解

    任何可修改寄存器,我成功配置了寄存器1、2,但3、4寄存器却没有成功写入,vout没有变化。想问您,在没有外接EEPROM的情况下,可以修改寄存器
    发表于 08-02 07:38

    请问PGA308如何修改寄存器

    如何单独修改PGA308的某一个寄存器值,我从新操作的时候发现鼠标无法点击并且编辑修改CFG2寄存器,尝试并点击红圈内的窗口但是并不能编辑,请教一下如何
    发表于 08-02 07:35

    寄存器寻址和直接寻址的区别

    。 一、寄存器寻址 寄存器寻址的定义 寄存器寻址是一种将操作数直接存储在CPU内部寄存器中的寻址方式。在这种寻址方式下,指令的操作数地址
    的头像 发表于 07-12 10:42 1277次阅读

    寄存器寻址的实现方式

    在计算机体系结构中,寄存器寻址是一种常见的寻址方式,它允许程序直接访问CPU内部寄存器寄存器寻址可以提高程序的执行效率,因为它避免了对内
    的头像 发表于 07-12 10:36 552次阅读

    寄存器分为基本寄存器和什么两种

    寄存器是计算机中用于存储数据的高速存储单元,它们是CPU内部的重要组成部分。寄存器可以分为基本寄存器和扩展寄存器两种类型。 一、基本
    的头像 发表于 07-12 10:31 1101次阅读

    ADF4350在更改寄存器数字之后失锁的原因?

    数字锁定监测模式 LO3_ADF4350_Wdata(0x0060a43c); // 设置寄存器4 : 差分输出功率设置为5dbm,使能静音至检测到锁定,频段选择时钟设为10K
    发表于 05-31 08:12

    为什么XMC库不使用控制的端口输出寄存器TESTBOARD_150PC_OUT ?

    为什么XMC库不使用控制的端口输出寄存器TESTBOARD_150PC_OUT ? 程序库仅使用端口输出修改寄存器 Pn_OMR
    发表于 03-06 06:17

    寄存器属于时序逻辑电路吗 寄存器是什么逻辑电路

    寄存器是一种用来存储数据的数字电路组件。它可以存储一个或多个位的二进制数,并且能够在时钟信号的控制下将数据从输入端复制到输出端。寄存器通常用于存储和操作计算机系统中的数据,是计算机的基
    的头像 发表于 02-18 09:37 1433次阅读

    CPU的6个主要寄存器

    CPU寄存器是中央处理内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用
    的头像 发表于 02-03 15:15 3879次阅读

    AD2S1210修改寄存器中的阈值对位置码值的准确性会有影响吗?

    AD2S1210中有很多故障阈值设置的地方,比如DOS超量程、LOS上下限等等,这些阈值都可以在寄存器中设置。我们在使用时没有修改过这些阈值,但发现经常报故障,但位置码值也能采回来。 我的问题是:修改寄存器中的阈值对位置码值的
    发表于 12-18 07:31

    寄存器阵列低功耗设计方案

    寄存器写操作的时候会改变寄存器内容,需要时钟锁入新的数据。但是,对寄存器进行读操作的时候,寄存器内容不改变,
    的头像 发表于 12-08 11:19 571次阅读
    <b class='flag-5'>寄存器</b>阵列低功耗设计方案

    UVM寄存器模型的常规方法有哪些呢?

    在应用寄存器模型时, 除了利用它的寄存器信息, 还可以利用它跟踪寄存器的值。
    的头像 发表于 11-25 09:27 1734次阅读
    UVM<b class='flag-5'>寄存器</b>模型的常规<b class='flag-5'>方法</b>有哪些呢?