0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

應(yīng)用筆記|直接修改寄存器來輸出內(nèi)部時鐘的方法

STM32單片機 ? 來源:未知 ? 2023-06-13 17:35 ? 次閱讀

關(guān)鍵字:MCO,手動修改寄存器

目錄預(yù)覽

1 在特殊情況下使能 MCO 功能的方法2 具體實現(xiàn)3 總結(jié)

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

在對某些不容易復(fù)現(xiàn)的問題進行代碼調(diào)時,需要觀察內(nèi)部時鐘的情況,但往往代碼之前并沒有使能 MCO 功能,在這種情況下就可以使用寄存器直接配置來輸出內(nèi)部時鐘到 GPIO 腳位上進行觀察和測試。

下面的例子就是在調(diào)試 STM32G474 很難復(fù)現(xiàn)的一個問題,調(diào)試暫停時,通過 PC 端調(diào)試工具直接更改寄存器配置來使能 MCO 功能輸出 SYSCLK 到 GPIO 口的方法。

2.具體實現(xiàn)

MCO 輸出內(nèi)部時鐘到 GPIO 腳位,可以不通過運行用戶代碼,直接在 PC 端調(diào)試工具中配置寄存器來實現(xiàn)。在程序暫停時,往往已經(jīng)走過了時鐘配置,在這種情況下首先需要使能并配置RCC_CFGR 寄存器MCOSEL[3:0]=0x1,選 SYSCLK 來輸出(當(dāng)然,也可以根據(jù)實際情況選擇輸出其他時鐘源)。 6802c37e-09cd-11ee-962d-dac502259ad0.png68304952-09cd-11ee-962d-dac502259ad0.png 在調(diào)試軟件中直接手動修改寄存器配置值,如下圖: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,在上電默認的情況下,不用修改,已經(jīng)是 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,上電默認已經(jīng)為 0 了,不用修改,如果不 是,請手動修改為 0。

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

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

手動修改后的 GPIOA 寄存器值為如下圖 18 所示:

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

3. 總結(jié)

在調(diào)試軟件時,可以通過 PC 端調(diào)試工具直接修改寄存器配置來使能某些功能。不過,使用中須注意遵守一定的流程,比如先開啟對應(yīng)的外設(shè) clock,然后才能配置具體的寄存器去實現(xiàn)一些相應(yīng)的功能。

完整內(nèi)容請點擊“閱讀原文”下載原文檔。

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

長按掃碼關(guān)注公眾號

更多資訊,盡在STM32

點擊“閱讀原文”,可下載原文檔


原文標題:應(yīng)用筆記|直接修改寄存器來輸出內(nèi)部時鐘的方法

文章出處:【微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6040

    文章

    44594

    瀏覽量

    636963
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356787
收藏 人收藏

    評論

    相關(guān)推薦

    AFE4400的CNTROL0寄存器的SPI_READ位設(shè)置成1才能讀取寄存器的值,讀完了想修改寄存器的值怎么辦?

    AFE4400的CNTROL0寄存器的SPI_READ位設(shè)置成1才能讀取寄存器的值,那讀完了想修改寄存器的值怎么辦呢,這個時候是read模式,無法 改變control0寄存器的值,
    發(fā)表于 01-14 08:09

    ADS131E08為什么不能修改寄存器?

    各位有沒有用過ADS131E08,為什么不能修改寄存器,01h CONFIG1 ,03h CONFIG3,修改之后就停止工作了。下面是讀出的各個寄存器的值 0x01: 0x93 0x02
    發(fā)表于 01-03 08:08

    AFE4404沒有接外部時鐘,4404寄存器的為初始值,能夠通過IIC修改寄存器值嗎?

    1、首先AFE4404寄存器默認使用外部時鐘,CLK引腳是否必須要先接一個時鐘,通過修改寄存器的值改為內(nèi)部
    發(fā)表于 12-06 06:35

    stm32 SPI接口為什么無法修改寄存器?如何解決?

    ADS131M04,現(xiàn)在碰到現(xiàn)象是SPI讀到的寄存器數(shù)據(jù)均為正常默認值,寫進入待機模式命令回復(fù)的數(shù)據(jù)是0X0022,也是正確的,修改CLOCK寄存器后立即讀回來參數(shù)也是正確的,但是再讀一次還是默認值,實際上并沒有
    發(fā)表于 11-27 07:18

    寄存器的類型和作用

    在計算機科學(xué)中,寄存器(Register)是一種高速存儲單元,它位于CPU內(nèi)部,與CPU的運算單元和邏輯控制單元緊密相連。寄存器的主要作用是暫時存儲指令、操作數(shù)和地址等臨時數(shù)據(jù),以便CPU快速訪問和處理。由于
    的頭像 發(fā)表于 09-05 14:11 ?2309次閱讀

    寄存器的輸入輸出方式

    寄存器的輸入輸出方式是數(shù)字電路設(shè)計中至關(guān)重要的部分,它決定了數(shù)據(jù)如何在寄存器中進出以及處理的效率。下面將詳細探討寄存器的幾種主要輸入輸出方式
    的頭像 發(fā)表于 09-05 14:09 ?1516次閱讀

    使用PGA309配置寄存器時遇到的疑問求解

    任何可修改寄存器,我成功配置了寄存器1、2,但3、4寄存器卻沒有成功寫入,vout沒有變化。想問您,在沒有外接EEPROM的情況下,可以修改寄存器
    發(fā)表于 08-02 07:38

    請問PGA308如何修改寄存器

    如何單獨修改PGA308的某一個寄存器值,我從新操作的時候發(fā)現(xiàn)鼠標無法點擊并且編輯修改CFG2寄存器,嘗試并點擊紅圈內(nèi)的窗口但是并不能編輯,請教一下如何
    發(fā)表于 08-02 07:35

    寄存器尋址和直接尋址的區(qū)別

    。 一、寄存器尋址 寄存器尋址的定義 寄存器尋址是一種將操作數(shù)直接存儲在CPU內(nèi)部寄存器中的尋址方式。在這種尋址方式下,指令的操作數(shù)地址
    的頭像 發(fā)表于 07-12 10:42 ?2161次閱讀

    寄存器尋址的實現(xiàn)方式

    在計算機體系結(jié)構(gòu)中,寄存器尋址是一種常見的尋址方式,它允許程序直接訪問CPU內(nèi)部寄存器寄存器尋址可以提高程序的執(zhí)行效率,因為它避免了對內(nèi)
    的頭像 發(fā)表于 07-12 10:36 ?765次閱讀

    寄存器分為基本寄存器和什么兩種

    寄存器是計算機中用于存儲數(shù)據(jù)的高速存儲單元,它們是CPU內(nèi)部的重要組成部分。寄存器可以分為基本寄存器和擴展寄存器兩種類型。 一、基本
    的頭像 發(fā)表于 07-12 10:31 ?1530次閱讀

    ADF4350在更改寄存器數(shù)字之后失鎖的原因?

    數(shù)字鎖定監(jiān)測模式 LO3_ADF4350_Wdata(0x0060a43c); // 設(shè)置寄存器4 : 差分輸出功率設(shè)置為5dbm,使能靜音至檢測到鎖定,頻段選擇時鐘設(shè)為10K
    發(fā)表于 05-31 08:12

    為什么XMC庫不使用控制的端口輸出寄存器TESTBOARD_150PC_OUT ?

    為什么XMC庫不使用控制的端口輸出寄存器TESTBOARD_150PC_OUT ? 程序庫僅使用端口輸出修改寄存器 Pn_OMR
    發(fā)表于 03-06 06:17

    寄存器屬于時序邏輯電路嗎 寄存器是什么邏輯電路

    寄存器是一種用來存儲數(shù)據(jù)的數(shù)字電路組件。它可以存儲一個或多個位的二進制數(shù),并且能夠在時鐘信號的控制下將數(shù)據(jù)從輸入端復(fù)制到輸出端。寄存器通常用于存儲和操作計算機系統(tǒng)中的數(shù)據(jù),是計算機的基
    的頭像 發(fā)表于 02-18 09:37 ?1715次閱讀

    CPU的6個主要寄存器

    CPU寄存器是中央處理內(nèi)的組成部分,是有限存貯容量的高速存貯部件。寄存器是CPU內(nèi)部的元件,包括通用寄存器、專用
    的頭像 發(fā)表于 02-03 15:15 ?4615次閱讀