国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

極海APM32E030 MCU中高速時鐘的配置和相關注意事項

Geehy極海半導體 ? 來源:21ic論壇極海半導體專區 ? 作者:21ic論壇極海半導體 ? 2025-11-04 09:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

《APM32芯得》系列內容為用戶使用APM32系列產品的經驗總結,均轉載自21ic論壇極海半導體專區,全文未作任何修改,未經原文作者授權禁止轉載。

每一家MCU廠家的SDK寫法和寄存器功能都有所不同,如果不熟悉的話就會配置錯誤,導致MCU運行不穩定。接下來就以APM32E030的手冊和SDK,解讀下高速時鐘的配置和相關注意事項。

實現了解MCU的高速時鐘要先看下用戶手冊。

高速時鐘源分內部時鐘源和外部時鐘源:

內部時鐘源

內部時鐘包含 HSICLK(高速內部時鐘信號)和 LSICLK(低速內部時鐘信號)。HSICLK 時鐘信號由內部 8MHz 的 RC 振蕩器產生。不同芯片的 RC 振蕩器頻率不同,且同一顆芯片隨著溫度、電壓的變化也會存在差異;每個芯片的 HSICLK 時鐘頻率在出廠前已經被廠家校準到 1%(25℃、VDD=VDDA=3.3V)

外部時鐘源

外部時鐘信號包括 HSECLK(高速外部時鐘信號)和 LSECLK(低速外部時鐘信號)。

外部的時鐘源有兩種:

外部晶體/陶瓷諧振器(常規的無源晶振)

用戶外部時鐘(有源晶振或者是其他芯片提供的時鐘)

b495665a-b791-11f0-8c8f-92fbcf53809c.png

從APM32E030的用戶手冊可以看出,E030的最大主頻也就是SYSCLK最大是72Mhz。系統時鐘源可以從HSECLK(外部時鐘的時鐘),PLLCLK(PLL的時鐘)、HSICLK(內部8M時鐘)這三個中來選擇。

HSECLK的輸入時鐘范圍是4~32Mhz,可通過PLL的分頻器和倍頻器配置成PLL最大72M主頻。HSICLK的時鐘頻率是8M,并且需要固定2分頻到PLL的倍頻器,最大16倍頻,所以最大主頻只能配到64Mhz.

系統時鐘會再經過AHBPSC和APBPSC分頻配置后到各外設。其中TMR的時鐘需要注意,所有 TMRxCLK(定時器時鐘)頻率分配由硬件按以下 2 種情況自動設置:

如果相應的 APB 預分頻系數是 1,定時器的時鐘頻率與所在 APB 總線頻率一致。

否則,定時器的時鐘頻率被設為與其相連的 APB 總線頻率的 2 倍

具體的寄存器在用戶手冊中,主要是時鐘控制寄存器 1(RCM_CTRL1)和時鐘配置寄存器 1(RCM_CFG1),具體功能可以查看用戶手冊。

除了RCM相關的寄存器,還有Flash的等待周期與預取使能與時鐘相關需要注意。

b4eddfa6-b791-11f0-8c8f-92fbcf53809c.png

理論部分主要就這些,更詳細的建議查看用戶手冊,接下來是代碼的相關部分。芯片上電實現會運行到啟動文件,初始化完中斷向量表后會進入到SystemInit()函數進行默認的時鐘初始化。

b54b47fe-b791-11f0-8c8f-92fbcf53809c.png

在SystemInit()函數中會復位時鐘相關的寄存器,然后進入SystemClockConfig();進行默認的時鐘初始化。

b54b47fe-b791-11f0-8c8f-92fbcf53809c.png

SystemClockConfig()會根據宏定義來進行時鐘初始化。

b5ffeee8-b791-11f0-8c8f-92fbcf53809c.png

SDK默認配置的是8M外部無源晶振,配置主頻72M。

b65d089e-b791-11f0-8c8f-92fbcf53809c.png

如果需要配置更低的主頻,可以直接通過選擇不同的宏定義來直接切換。

如果使用的外部高速晶振是其他頻率,比如4M、12M、16M等,就不能直接修改宏定義來配置主頻,還需要做如下修改。

1、將HSE_VALUE改成實際的晶振頻率,例如使用12M晶振就修改成:

#define HSE_VALUE ((uint32_t)12000000)

b6b5919e-b791-11f0-8c8f-92fbcf53809c.png

2、修改PLL倍頻系數寄存器PLLMULCFG=4,對應數據手冊可以看到是6倍頻12M*6=72M

b717c1fc-b791-11f0-8c8f-92fbcf53809c.png

如果產品應用對時鐘精度要求不高,想不接外部晶振,使用內部晶振倍頻到64M的操作。

1、屏蔽默認的使用外部晶振的宏定義

b77507b8-b791-11f0-8c8f-92fbcf53809c.png

2、編寫如下使用內部晶振的時鐘初始化函數,在main函數中調用

void SystemClock_HSI_PLL_Init()

{

RCM_Reset();

/* Enable HSI */

RCM_EnableHSI();

/* Wait until HSI is ready */

while (RCM->CTRL1_B.HSIRDY** == RESET);

FMC_EnablePrefetchBuffer();

FMC_SetWS2();

RCM_ConfigAHB(RCM_SYSCLK_DIV_1);

RCM_ConfigAPB(RCM_HCLK_DIV_1);

/* SYSCLKFreq = (HSI * 16) / 2 */

RCM_ConfigPLL(RCM_PLL_SEL_HSI_DIV2, RCM_PLLMF_16);

/* Enable PLL */

RCM_EnablePLL();

while (RCM->CTRL1_B.PLLRDY** == BIT_RESET);

/* Selct PLL as Sysclk */

RCM_ConfigSYSCLK(RCM_SYSCLK_SEL_PLL);

while (RCM->CFG1_B.SCLKSWSTS != 0x02);

}

如果想要在程序運行中切換主頻頻率,比如將外部晶振72M的配置切換到36M

void SystemClock_HSE_PLL_Init()

{

uint32_t i;

/* Select HSI as System Clock at first */

RCM_ConfigSYSCLK(RCM_SYSCLK_SEL_HSI);

/* Disable PLL */

RCM_DisablePLL();

/* Wait until Pll is ready */

while (RCM->CTRL1_B.PLLRDY** == SET);

RCM_ConfigHSE(RCM_HSE_OPEN);

for (i = 0; i < HSE_STARTUP_TIMEOUT; i++)

{

if (RCM->CTRL1_B.HSERDY**)

{

break;

}

}

if (RCM->CTRL1_B.HSERDY**)

{

FMC_EnablePrefetchBuffer();

FMC_SetWS2();

RCM_ConfigAHB(RCM_SYSCLK_DIV_1);

RCM_ConfigAPB(RCM_HCLK_DIV_1);

/* Config PLL source and multiplication factor

SYSCLKFreq = (HSE * 6) / 4 */

RCM_ConfigPLL(RCM_PLL_SEL_HSE, RCM_PLLMF_9);

RCM_ConfigCLKDIV(RCM_CLK_DIV_2);

/* Enable PLL */

RCM_EnablePLL();

while (RCM->CTRL1_B.PLLRDY** == BIT_RESET);

/* Selct PLL as Sysclk */

RCM_ConfigSYSCLK(RCM_SYSCLK_SEL_PLL);

while (RCM->CFG1_B.SCLKSWSTS != 0x02);

}

else

{

/*可增加HSE啟動失敗的處理程序*/

}

}

如果要知道系統現在的時鐘配置是多少,可以參考SDK中的RCB-->RCM_ClockSwitch 例程

/* Initiatate the usart */

APM_TINY_COMInit(COM1);

printf("sysSource = %s ", RCM_SYSCLK_SEL_TAB[RCM_ReadSYSCLKSource()]);

printf("sysClock = %" PRId32 " ", RCM_ReadSYSCLKFreq());

使用串口來打印當前時鐘配置,注意這個打印是基于HSE_VALUE與實際相符的情況才是準確的,需要注意核對。

int main(void)

{

APM_TINY_LEDInit(LED2);

APM_TINY_LEDInit(LED3);

APM_TINY_PBInit(BUTTON_KEY1, BUTTON_MODE_EINT);

APM_TINY_PBInit(BUTTON_KEY2, BUTTON_MODE_EINT);

APM_TINY_COMInit(COM1);

ClockOutputInit();

printf("sysSource = %s ", RCM_SYSCLK_SEL_TAB[RCM_ReadSYSCLKSource()]);

printf("sysClock = %" PRId32 " ", RCM_ReadSYSCLKFreq());

SystemClock_HSE_PLL_Init();

for (;;)

{

Delay();

APM_TINY_LEDToggle(LED2);

}

}

b7d2bf8e-b791-11f0-8c8f-92fbcf53809c.png

上圖就是啟動文件不初始化時鐘,在main中配置64M主頻的測試結果。

注:文章作者在原帖中提供了例程文件,有需要請至原文21ic論壇下載

原文地址:https://bbs.21ic.com/icview-3459364-1-1.html

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    147

    文章

    18669

    瀏覽量

    388954
  • 寄存器
    +關注

    關注

    31

    文章

    5590

    瀏覽量

    129248
  • 時鐘
    +關注

    關注

    11

    文章

    1955

    瀏覽量

    134615
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1095

    瀏覽量

    51282

原文標題:APM32芯得 EP.65 | 基于APM32E030解讀APM庫的高速時鐘配置

文章出處:【微信號:geehysemi,微信公眾號:Geehy極海半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32F030在使用中的注意事項有哪些?

    CW32F030在使用中的注意事項有哪些?
    發表于 11-18 06:20

    LPC1200系列ARM高頻時鐘配置注意事項手冊下載

    LPC1200系列ARM高頻時鐘配置注意事項手冊下載
    發表于 03-30 14:46 ?6次下載

    設計高速電路板的注意事項

    設計高速電路板的注意事項
    發表于 01-28 21:32 ?0次下載

    MCU的SWD端口復用為GPIO端口功能的配置方法及注意事項詳細說明

    本篇應用筆記主要介紹華大半導體 MCU*的 SWD 端口復用為 GPIO 端口功能的配置方法及注意事項
    發表于 11-12 08:00 ?20次下載
    <b class='flag-5'>MCU</b>的SWD端口復用為GPIO端口功能的<b class='flag-5'>配置</b>方法及<b class='flag-5'>注意事項</b>詳細說明

    半導體新品上市—工業增強型APM32F091xC系列MCU

    半導體工業增強型APM32F091xC系列新品MCU,其在APM32F030xC的產品性能上實現增強優化,為用戶提供豐富的通信方式。
    發表于 07-26 14:27 ?7087次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b>半導體新品上市—工業增強型<b class='flag-5'>APM</b>32F091xC系列<b class='flag-5'>MCU</b>

    APM32F030系列MCU通過IEC 60730軟件安全認證

    隨著物聯網的飛速發展,越來越多智能家電走進我們的生活,針對家電產品日益增長的安全功能需求,近日APM32F030系列MCU順利通過IEC 60730軟件安全認證,并可提供符合IEC
    的頭像 發表于 05-25 11:50 ?2628次閱讀

    APM32F030X8_配置差異_APM32庫在main前時鐘配置出現異常

    APM32F030X8_配置差異_APM32庫在main前時鐘配置出現異常
    發表于 11-09 21:03 ?0次下載
    <b class='flag-5'>APM32F030</b>X8_<b class='flag-5'>配置</b>差異_<b class='flag-5'>APM</b>32庫在main前<b class='flag-5'>時鐘</b><b class='flag-5'>配置</b>出現異常

    APM32F030C8T6_Flash_Flash讀寫設計注意事項

    APM32F030C8T6_Flash_Flash讀寫設計注意事項
    發表于 11-09 21:03 ?3次下載
    <b class='flag-5'>APM32F030</b>C8T6_Flash_Flash讀寫設計<b class='flag-5'>注意事項</b>

    RL78族噪聲的相關注意事項及對策應用說明

    噪聲的相關注意事項 1.1 縮短布線長度 1.1.1 引腳的布線 1.1.2 時鐘輸入/輸出引腳的布線 1.2 在V SS -V DD 之間連接旁路電容器 1.3 模擬輸入引腳的布線處理 1.4
    的頭像 發表于 02-09 21:25 ?1155次閱讀

    HK32MCU應用筆記(十七)| HK32F103xC/D/E-flash擦寫應用及注意事項

    HK32MCU應用筆記(十七)| HK32F103xC/D/E-flash擦寫應用及注意事項
    的頭像 發表于 09-18 10:58 ?2106次閱讀
    HK32<b class='flag-5'>MCU</b>應用筆記(十七)| HK32F103xC/D/<b class='flag-5'>E</b>-flash擦寫應用及<b class='flag-5'>注意事項</b>

    HK32MCU應用筆記(十四)| HK32F103x/C/D/E-TIM1的應用及注意事項

    HK32MCU應用筆記(十四)| HK32F103x/C/D/E-TIM1的應用及注意事項
    的頭像 發表于 09-18 10:58 ?1570次閱讀
    HK32<b class='flag-5'>MCU</b>應用筆記(十四)| HK32F103x/C/D/<b class='flag-5'>E</b>-TIM1的應用及<b class='flag-5'>注意事項</b>

    HK32MCU應用筆記(十三)| HK32F103xC/D/E-ADC的應用及注意事項

    HK32MCU應用筆記(十三)| HK32F103xC/D/E-ADC的應用及注意事項
    的頭像 發表于 09-18 10:58 ?2042次閱讀
    HK32<b class='flag-5'>MCU</b>應用筆記(十三)| HK32F103xC/D/<b class='flag-5'>E</b>-ADC的應用及<b class='flag-5'>注意事項</b>

    HK32MCU應用筆記(十一)| HK32F103xC/D/E的flash讀保護應用及注意事項

    HK32MCU應用筆記(十一)| HK32F103xC/D/E的flash讀保護應用及注意事項
    的頭像 發表于 09-18 10:58 ?2053次閱讀
    HK32<b class='flag-5'>MCU</b>應用筆記(十一)| HK32F103xC/D/<b class='flag-5'>E</b>的flash讀保護應用及<b class='flag-5'>注意事項</b>

    精準定位 高效驅動丨基于APM32E030的磁電式絕對值編碼器參考方案,加速工業智能化轉型

    攀升,將加速工業編碼器國產化、智能化、高精度化發展。 編碼器憑借卓越性能和廣闊應用前景,已成為行業發展的核心驅動力之一。緊跟行業發展趨勢,推出的APM32E030磁電式絕對值編碼器參考方案,在保障高精度測量性能的同時
    發表于 05-13 13:46 ?1007次閱讀
    精準定位 高效驅動丨基于<b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>APM32E030</b>的磁電式絕對值編碼器參考方案,加速工業智能化轉型

    APM32E030/F402系列MCU通過IEC 60730/60335功能安全認證

    近日,APM32E030系列基礎拓展型MCUAPM32F402系列高性能高性價比MCU通過
    的頭像 發表于 08-29 13:57 ?880次閱讀
    <b class='flag-5'>極</b><b class='flag-5'>海</b><b class='flag-5'>APM32E030</b>/F402系列<b class='flag-5'>MCU</b>通過IEC 60730/60335功能安全認證