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

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

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

GD32固件庫(kù)里時(shí)鐘配置時(shí)的神秘代碼?高頻切低頻時(shí)芯片會(huì)發(fā)生什么

聚沃科技 ? 2024-02-19 09:44 ? 次閱讀

在GD固件庫(kù)的時(shí)鐘配置函數(shù)里看到這樣一段神秘代碼,研究分析后不得不佩服原廠固件庫(kù)里的細(xì)節(jié)處理:

wKgaomXSsi-AVO_DAAA83Hgi63o377.png

查看定義是一段代碼,對(duì)AHB 2分頻后延時(shí)了一段時(shí)間:

wKgZomXSsjSAbukpAAAIJccqiQA616.png

在這段代碼后面可以看到程序?qū)CU_CFG0和RCU_CFG1兩個(gè)時(shí)鐘寄存器做了復(fù)位:

wKgaomXSsjmATD1PAAAJ25c3gug851.png

如果是程序復(fù)位啟動(dòng)后第一次執(zhí)行這段代碼,應(yīng)該是沒(méi)有什么意義的,但產(chǎn)品設(shè)計(jì)時(shí)一般都會(huì)有一個(gè)BootLoader和APP兩段程序,當(dāng)BootLoader跳轉(zhuǎn)到APP時(shí),MCU的時(shí)鐘已經(jīng)處于一個(gè)高頻狀態(tài),直接執(zhí)行RCU的復(fù)位意味著時(shí)鐘會(huì)立刻切到內(nèi)部8M運(yùn)行。

而通過(guò)查看DATASHEET,可以看到MCU在最大主頻下和默認(rèn)復(fù)位主頻下的電流差距是很大的:

wKgZomXSsj6AfnAwAAA7LoorJ9c450.png

wKgaomXSskOAEYDBAAA7u6RsHQM877.png

這樣的內(nèi)部電流瞬間變化一般會(huì)導(dǎo)致內(nèi)部電源的波動(dòng),這種波動(dòng)情況下執(zhí)行的指令是不可靠的,如果硬件設(shè)計(jì)時(shí)MCU去耦電容設(shè)計(jì)不合理,很可能加劇這個(gè)波動(dòng),此時(shí)如果指令錯(cuò)誤了那很可能會(huì)跑飛進(jìn)入hardfault。

而GD固件庫(kù)里這個(gè)神秘代碼,在高頻的情況下可以將系統(tǒng)時(shí)鐘降低一半并延時(shí)等待穩(wěn)定,最后再?gòu)?fù)位時(shí)鐘寄存器降到8M的系統(tǒng)時(shí)鐘。這樣就讓電流變化有一個(gè)過(guò)渡,避免了內(nèi)部電源波動(dòng)過(guò)大。

wKgaomXSskOAEYDBAAA7u6RsHQM877.png

——>

wKgaomXSsk6AGo8-AAA9-GMILY0893.png

——>

wKgaomXSslSAZEkGAAA2s0lsMKs854.png

聲明:本文內(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)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    452

    文章

    50206

    瀏覽量

    420855
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631968
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349914
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    24106
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在調(diào)試GD32芯片時(shí)遇到了時(shí)鐘配置錯(cuò)誤的問(wèn)題

    在調(diào)試GD32芯片時(shí)遇到了時(shí)鐘配置錯(cuò)誤的問(wèn)題,仔細(xì)研究文檔和網(wǎng)上資料,認(rèn)真調(diào)試之后做了以下總結(jié),希望能幫到同樣有類似困惑的你。**1.認(rèn)識(shí)時(shí)鐘
    發(fā)表于 07-23 10:06

    STM32移植到GD32,將內(nèi)部時(shí)鐘切換為外部時(shí)鐘后無(wú)法運(yùn)行的問(wèn)題分析 精選資料分享

    1. 前言作者之前用過(guò)GD32芯片,也成功移植過(guò)STM32代碼GD32芯片,但最近移植一份STM32
    發(fā)表于 08-12 08:11

    GD32芯片包添加步驟有哪些

    **GD32芯片包添加步驟**GD32開(kāi)發(fā)環(huán)境可以有多個(gè)選擇,常見(jiàn)的開(kāi)發(fā)編譯環(huán)境有:Keil4,keil5,IAR。本教程針對(duì)keil5如何添加GD32系列mcu
    發(fā)表于 11-22 08:30

    分享在STM32代碼移植到GD32上時(shí)SPI部分出現(xiàn)的問(wèn)題

    贅述。問(wèn)題:同樣的代碼在STM32上運(yùn)行SPI讀數(shù)據(jù)沒(méi)有任何問(wèn)題,但是修改芯片后移植到GD32上就出現(xiàn)SPI讀不到數(shù)據(jù)的問(wèn)題.解決方法:GD32中SPI輸入部分的IO口必須
    發(fā)表于 01-26 08:05

    GD32系列總結(jié)

    GD32系列總結(jié) - 時(shí)鐘樹(shù)總結(jié)及CubeMX生成代碼寫在前面時(shí)鐘樹(shù)HSE振蕩器時(shí)鐘(高速外部時(shí)鐘
    發(fā)表于 02-11 07:11

    GD32 MCU原理及固件庫(kù)開(kāi)發(fā)指南》 + 初讀感悟

    庫(kù)開(kāi)發(fā)能夠避免每次操作寄存器時(shí)去查芯片的應(yīng)用手冊(cè),這樣能很好地提高開(kāi)發(fā)效率。GD32 MCU原理固件庫(kù)開(kāi)發(fā)指南這本書它詳細(xì)描述了基本所有外設(shè)的底層驅(qū)動(dòng)程序和API接口,可以讓我快速地明白各個(gè)API函數(shù)
    發(fā)表于 03-31 22:11

    GD32 MCU原理及固件庫(kù)開(kāi)發(fā)指南》+讀后感

    、調(diào)試工具,再到庫(kù)函數(shù)的使用、各個(gè)外設(shè)的程序?qū)崿F(xiàn),不僅有原理的介紹,還有實(shí)踐的歷程。這本書聚焦在GD32 MCU基本原理和固件庫(kù)上,重點(diǎn)在于對(duì)固件庫(kù)API的介紹,供了大量實(shí)例代碼,這些
    發(fā)表于 06-06 21:52

    gd32和stm32的固件可以通用嗎?

    請(qǐng)問(wèn)gd32和stm32的固件可以通用嗎,或者stm32兼容國(guó)產(chǎn)哪些單片機(jī)
    發(fā)表于 09-20 06:01

    GD32GD32讀取ADC數(shù)據(jù)

    GD32的ADC有很多模式,這里教大家使用最簡(jiǎn)單的軟件觸發(fā)讀取ADC,我使用的芯片GD32F350K8U6使用步驟1.初始化IO引腳設(shè)置為模擬輸入模式2.初始ADC時(shí)鐘
    發(fā)表于 12-02 15:06 ?28次下載
    【<b class='flag-5'>GD32</b>】<b class='flag-5'>GD32</b>讀取ADC數(shù)據(jù)

    STM32移植到GD32,將內(nèi)部時(shí)鐘切換為外部時(shí)鐘后無(wú)法運(yùn)行的問(wèn)題分析

    1. 前言作者之前用過(guò)GD32芯片,也成功移植過(guò)STM32代碼GD32芯片,但最近移植一份STM32
    發(fā)表于 12-02 15:36 ?17次下載
    STM32移植到<b class='flag-5'>GD32</b>,將內(nèi)部<b class='flag-5'>時(shí)鐘</b>切換為外部<b class='flag-5'>時(shí)鐘</b>后無(wú)法運(yùn)行的問(wèn)題分析

    GD32系列總結(jié) - 時(shí)鐘樹(shù)總結(jié)及CubeMX生成代碼

    GD32系列總結(jié) - 時(shí)鐘樹(shù)總結(jié)及CubeMX生成代碼寫在前面時(shí)鐘樹(shù)HSE振蕩器時(shí)鐘(高速外部時(shí)鐘
    發(fā)表于 12-08 11:06 ?15次下載
    <b class='flag-5'>GD32</b>系列總結(jié) - <b class='flag-5'>時(shí)鐘</b>樹(shù)總結(jié)及CubeMX生成<b class='flag-5'>代碼</b>

    使用STM32固件庫(kù)開(kāi)發(fā)GD32 匯總

    文章目錄GD32與STM32異同1. 相同點(diǎn)2. 外圍硬件區(qū)別3. 內(nèi)部結(jié)構(gòu)差別4. 功耗區(qū)別(以128k以下容量的作為參考)5. 內(nèi)部FLASH 區(qū)別使用STM32庫(kù)開(kāi)發(fā)時(shí)鐘配置區(qū)別1. 晶振起振
    發(fā)表于 12-27 18:38 ?23次下載
    使用STM32<b class='flag-5'>固件</b>庫(kù)開(kāi)發(fā)<b class='flag-5'>GD32</b> 匯總

    GD32107C芯片RTC時(shí)鐘代碼

    GD32107C芯片-RTC時(shí)鐘代碼
    發(fā)表于 10-08 14:57 ?1次下載

    gd32和stm32程序可以互用嗎?

    gd32和stm32程序可以互用嗎? GD32和STM32是兩種不同的芯片系列,相同點(diǎn)是都屬于ARM Cortex-M系列芯片。雖然它們有相似的架構(gòu)和指令集,但是由于它們來(lái)自不同的廠商
    的頭像 發(fā)表于 08-16 11:32 ?3737次閱讀