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

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

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

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

STM32單片機(jī) ? 來(lái)源:未知 ? 2023-06-13 17:35 ? 次閱讀

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

目錄預(yù)覽

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

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

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

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

2.具體實(shí)現(xiàn)

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

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

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

GPIOA_OTYPER.OT8 配置為 0,在上電默認(rèn)的情況下,不用修改,已經(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] 在寄存器窗口中手動(dòng)配置為 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,上電默認(rèn)已經(jīng)為 0 了,不用修改,如果不 是,請(qǐng)手動(dòng)修改為 0。

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

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

手動(dòng)修改后的 GPIOA 寄存器值為如下圖 18 所示:

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

3. 總結(jié)

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

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

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

長(zhǎng)按掃碼關(guān)注公眾號(hào)

更多資訊,盡在STM32

點(diǎn)擊“閱讀原文”,可下載原文檔


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

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


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

    關(guān)注

    6023

    文章

    44389

    瀏覽量

    629103
  • STM32
    +關(guān)注

    關(guān)注

    2260

    文章

    10832

    瀏覽量

    352841
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    寄存器的類型和作用

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

    寄存器的輸入輸出方式

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

    使用PGA309配置寄存器時(shí)遇到的疑問(wèn)求解

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

    請(qǐng)問(wèn)PGA308如何修改寄存器?

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

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

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

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

    在計(jì)算機(jī)體系結(jié)構(gòu)中,寄存器尋址是一種常見(jiàn)的尋址方式,它允許程序直接訪問(wèn)CPU內(nèi)部寄存器。寄存器尋址可以提高程序的執(zhí)行效率,因?yàn)樗苊饬藢?duì)內(nèi)
    的頭像 發(fā)表于 07-12 10:36 ?385次閱讀

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

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

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

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

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

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

    寄存器屬于時(shí)序邏輯電路嗎 寄存器是什么邏輯電路

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

    AD2S1210修改寄存器中的閾值對(duì)位置碼值的準(zhǔn)確性會(huì)有影響嗎?

    AD2S1210中有很多故障閾值設(shè)置的地方,比如DOS超量程、LOS上下限等等,這些閾值都可以在寄存器中設(shè)置。我們?cè)谑褂脮r(shí)沒(méi)有修改過(guò)這些閾值,但發(fā)現(xiàn)經(jīng)常報(bào)故障,但位置碼值也能采回來(lái)。 我的問(wèn)題是:修改寄存器中的閾值對(duì)位置碼值的
    發(fā)表于 12-18 07:31

    UVM寄存器模型的常規(guī)方法有哪些呢?

    在應(yīng)用寄存器模型時(shí), 除了利用它的寄存器信息, 還可以利用它來(lái)跟蹤寄存器的值。
    的頭像 發(fā)表于 11-25 09:27 ?1481次閱讀
    UVM<b class='flag-5'>寄存器</b>模型的常規(guī)<b class='flag-5'>方法</b>有哪些呢?

    寄存器開發(fā),HAL開發(fā)和LL開發(fā)的區(qū)別和參考代碼

    1,寄存器開發(fā)【難度值:難】寄存器開發(fā)是一種直接訪問(wèn)微控制寄存器的編程方法,它提供了對(duì)硬件的極
    的頭像 發(fā)表于 11-17 08:00 ?1050次閱讀
    <b class='flag-5'>寄存器</b>開發(fā),HAL開發(fā)和LL開發(fā)的區(qū)別和參考代碼

    CPSR寄存器和APSR寄存器的組成

    程序狀態(tài)寄存器的作用就是反映處理的狀態(tài)信息。在程序運(yùn)行期間我們可以通過(guò)查看程序狀態(tài)寄存器的狀態(tài)位來(lái)進(jìn)行程序的分支跳轉(zhuǎn)處理,或者我們可以設(shè)置程序狀態(tài)
    的頭像 發(fā)表于 10-20 11:38 ?3826次閱讀
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的組成

    可以直接修改pc寄存器的值嗎?

    可以直接修改pc寄存器的值么
    發(fā)表于 10-10 07:02