在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

敏矽微電子Cortex-M0學習筆記03——時鐘系統設計例程

jf_pJlTbmA9 ? 來源:敏矽MCU ? 作者:敏矽MCU ? 2023-09-26 17:06 ? 次閱讀

1.1. ME32F030R8T6的時鐘

時鐘是MCU運行的基礎,時鐘信號推動單片機內各個部分執行相應的指令。時鐘系統就是CPU的脈搏,決定cpu速率,像人的心跳一樣 只有有了心跳,人才能做其他的事情,而MCU有了時鐘,才能夠運行執行指令,才能夠做準確、穩定的進行一系列的操作 (例如:串口通信、PWM信號、ADC采樣等等),因此時鐘的重要性不言而喻。

ME32F030系列 具有非常靈活的時鐘控制系統。用戶可根據不同應用需求來配置時鐘,從而取得最高的性能及優化的能耗管理。下圖為 ME32F030R8T6 的時鐘系統概要圖:

wKgaomUD06mAcAziAAEXKNnAWDU432.png

從圖中可以看出,MCU的時鐘源有內部高速的IRC_OSC 和 低速的 WDT_OSC 時鐘可供選擇。

IRC_OSC:它屬于高速時鐘,可以由內部晶體振蕩器控制寄存器(IRCCTRL)配置為 40/48MHz的主頻, 缺省值是40MHz 頻率,由工廠出廠預設并由引導程序寫入。一般作為系統主時鐘的時鐘源。

WDT_OSC:它屬于低速時鐘,由看門狗振蕩器控制寄存器控制。振蕩器包含模擬和數字兩部分。振蕩器的模擬部分用于產生模擬時鐘(Fclkana)。在振蕩器數字部分,模擬時鐘(Fclkana)輸出一個32KHz 頻率時鐘。然后再被DIVSEL 控制的分頻器分頻輸出到 WDT_CLK,作為看門狗時鐘源。

看門狗振蕩器輸出頻率可用下列公式推算:

WDT_CLK = Fclkana/(4 ×DIVSEL) = 8K Hz ~ 250 Hz (標稱值)

1.2. ME32F030R8T6時鐘源的應用控制

介紹完系統的時鐘源,接下來說說時鐘源主要運用到了哪些方面。

ME32F030R8T6的外設非常多,但我們實際使用的時候只會用到有限的幾個外設,使用任何外設都需要時鐘才能啟動,但并不是所有的外設都需要系統時鐘那么高的頻率,為了兼容不同速度的設備,有些高速,有些低速,如果都用高速時鐘,勢必造成浪費。并且,同一個電路,時鐘越快功耗越快,同時抗電磁干擾能力也就越弱,所以較為復雜的MCU都是采用多時鐘源的方法來解決這些問題。

WDT_CLK:由看門狗振蕩器控制寄存器來選擇輸入時鐘,作為看門狗的工作時鐘。

wKgZomUD06qAJ_kgAAC-9ZumIY4585.png

MAIN_CLK:由MAINCLK_SEL選擇輸入時鐘源,上電默認選擇IRC_OSC_CLK作為時鐘源,也可以通過置位來選擇WDT_OSC_CLK。

wKgaomUD06yARBUwAACTQd_G8Kk955.png

SYSTEM_CLK:由MAINCLK通過AHB 接口時鐘分頻器寄存器(SYSAHBCLKDIV)分頻而來,默認不分頻。SYSTEM_CLK時鐘供內核、外設和存儲器使用。其中外設通過 AHB 接口時鐘控制寄存器(SYSAHBCLKCTRL)來控制外設的時鐘使能,上電默認外設的時鐘都是打開的。

wKgZomUD062ALSUfAACjtWFaiTo401.png

UART:UART0/1有自己獨立的時鐘分頻器從MAIN_CLK分頻后取得UART時鐘。

wKgZomUD06-AfXu1AACisfjldBk872.png

CLK_OUT:MCU的內部晶振器(IRC_OSC_CLK)、看門狗振蕩器(WDT_OSC_CLK),主時鐘(MAIN_CLK),系統時鐘(SYSTEM_CLK)都可以通過CLK_OUT作為輸出時鐘。

使用前需要通過 CLKOUT 輸出時鐘源選擇寄存器 (CLKOUTCLKSEL)來確定想要輸出的時鐘源,再經過 CLKOUT 輸出時鐘分頻器寄存器 (CLKOUTDIV)分頻后輸出,該寄存器初始值默認為0,即不輸出時鐘。需要輸出的話,設置好分頻系數(1-255)便可以輸出了。

wKgaomUD07CABbg8AAChsqqvEV4946.png

wKgaomUD07GAU3zkAACcDCPHWII991.png

2、ME32F030R8T6的時鐘系統函數簡介

為了便于開發者快速上手,敏矽微電子為開發者提供了豐富的庫函數和開發例程。

借助于庫函數,可以不用像普通單片機那樣去配置繁多的寄存器,從而加快開發進程。

借助于例程中,可以更深入理解寄存器配置及功能實現。

本例中,我們就借助于敏矽微電子提供的例程來簡單介紹它的時鐘系統的跨函數。在sys.c文件中,包含了切換系統時鐘,配置時鐘主頻等函數,供開發者直接使用。

1.3. 主頻配置函數

①、配置IRC_CLK為40M主頻

voidSYS_IRCTrimto40M(void){volatileuint32_ti=0xFFFF;if(DIA->IRCTRIM!=0xFFFFFFFF)

{

SYSCON->IRCCTRL=DIA->IRCTRIM;while(i--==0);

FMC->FLASH_RDCYC=1;

SYSCON->SYSAHBCLKDIV=1;

SystemCoreClockUpdate();

}return;

}

②、配置IRC_CLK為48M主頻

voidSYS_IRCTrimto48M(void){volatileuint32_ti=0xFFFF;if(DIA->IRCTRIM48!=0xFFFFFFFF)

{

SYSCON->IRCCTRL=DIA->IRCTRIM48;while(i--==0);

FMC->FLASH_RDCYC=1;


SYSCON->SYSAHBCLKDIV=1;//coreclockto48M

SystemCoreClockUpdate();

}

return;

}

1.4. 時鐘源選擇函數

③、選擇MAIN_CLK的時鐘源,可以選擇IRC_CLK 或者 WATCHDOG_CLK。

voidSYS_SelectMainClkSrc(uint8_tsrc)


{

//switchmainclksource

SYSCON->MAINCLKUEN_b.ENA=1;//disablemainclkupdate

//switchmainclksourcetoSpecifyedsource

if(src==IRC_CLK)

SYSCON->MAINCLKSEL_b.SEL=0;elseif(src==WATCHDOG_CLK)

SYSCON->MAINCLKSEL_b.SEL=2;


SYSCON->MAINCLKUEN_b.ENA=0;//enablemainclkupdate

SystemCoreClockUpdate();

return;

}

④、設置AHB 接口時鐘分頻器的分頻系數,在這里請注意,函數如果檢查到當前時鐘為IR_CLK且分頻系數小于2,這樣系統時鐘SYSTEM_CLK的主頻肯定大于30M, 而FLASH的擦寫速度最高支持到30MHz。此時CPU時鐘超過Flash的最大讀取速度,這就需要插入延遲時鐘,延遲時鐘由 RDCYC 寄存器控制。

voidSYS_SetAHBClkDivider(uint8_tdiv)

{

//setupflashaccessspeedifSystemCoreClockisgoingtomorethan30MHz

if((SYSCON->MAINCLKSEL_b.SEL==0)  (div<2))??

?FMC->FLASH_RDCYC=1;

SYSCON->SYSAHBCLKDIV_b.DIV=div;//setupahbclockdivider

SystemCoreClockUpdate();//updateMainClockandSystemCoreClock

return;
}

//⑤、設置WDT_CLK的時鐘源,可以選擇IRC_CLK 或者 WATCHDOG_CLK。

voidSYS_SelectWDTClkSrc(uint8_tsrc){if(src==IRC_CLK)



SYSCON->WDTOSCCTRL_b.WDTCLKSRC=0;

elseif(src==WATCHDOG_CLK)

SYSCON->WDTOSCCTRL_b.WDTCLKSRC=1;

return;

}

//⑥、設置CLK_OUT的時鐘源,可以選擇IRC_CLK 、SYS_CLK、 WATCHDOG_CLK、MAIN_CLK中的一個。

voidSYS_SelectClkOutSrc(uint8_tsrc)

{switch(src)


{

caseIRC_CLK:

src=0;break;caseSYS_CLK:

src=1;break;caseWATCHDOG_CLK:

src=2;break;caseMAIN_CLK:

src=3;break;

default:return;

}

//switchclock

SYSCON->CLKOUTUEN_b.ENA=1;

SYSCON->CLKOUTCLKSEL_b.SEL=src;//selectclkoutsource

SYSCON->CLKOUTUEN_b.ENA=0;

return;

}

//⑦、設置CLK_OUT時鐘的輸出分頻系數。

voidSYS_SetClkOutDivider(uint8_tdiv)

{

SYSCON->CLKOUTDIV_b.DIV=div;

return;}

3、ME32F030R8T6時鐘系統例程

上面介紹了sys.c中關于系統時鐘的部分函數,下面我們來編寫一個關于時鐘配置的例程。使大家能夠對時鐘配置有一個簡單的了解。

本例實現的功能是:將AHB 接口時鐘進行2分頻,IRC時鐘切換到48M主頻,最后將系統時鐘進行分頻輸出。

intmain(void)

{

SYS_SetAHBClkDivider(2);//AHB接口時鐘進行2分頻

SYS_IRCTrimto48M();//IRC時鐘切換到48M主頻

SYS_SelectClkOutSrc(SYS_CLK);//選擇SYS_CLK作為OUT_CLK輸出時鐘

SYS_SetClkOutDivider(10);//對OUT_CLK時鐘進行10分頻

SYS_EnableClkOut();//使能OUT_CLK輸出端口

}

來源:敏矽MCU

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

    關注

    146

    文章

    17358

    瀏覽量

    352800
  • adc
    adc
    +關注

    關注

    99

    文章

    6537

    瀏覽量

    545882
  • Cortex-M0
    +關注

    關注

    4

    文章

    124

    瀏覽量

    38831
  • 時鐘樹
    +關注

    關注

    0

    文章

    55

    瀏覽量

    10823
  • 時鐘系統
    +關注

    關注

    1

    文章

    101

    瀏覽量

    11810
收藏 人收藏

    評論

    相關推薦

    cortex-m0學習資料

    本帖最后由 jheng 于 2015-4-9 21:54 編輯 cortex-m0學習
    發表于 04-09 21:48

    深入淺出Cortex-M0學習資料

    深入淺出Cortex-M0學習資料
    發表于 06-18 10:50 ?0次下載
    深入淺出<b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b>資料

    TinyM0配套教程 LPC1100系列Cortex-M0

    LPC1100系列Cortex-M0的最小系統框圖如圖2.1所示。其中時鐘系統是可選部分,這是因為LPC1100系列Cortex-M0內部自
    發表于 11-17 17:36 ?202次下載

    TinyM0配套教程LPC1100系列Cortex-M0最小系統設計

    TinyM0配套教程LPC1100系列Cortex-M0最小系統設計
    發表于 10-09 09:39 ?7次下載
    TinyM<b class='flag-5'>0</b>配套教程LPC1100系列<b class='flag-5'>Cortex-M0</b>最小<b class='flag-5'>系統</b>設計

    cortex-m0加密

    cortex-m0加密
    發表于 10-13 15:08 ?5次下載
    <b class='flag-5'>cortex-m0</b>加密

    新塘 Cortex-M0 最小系統

    新塘 Cortex-M0 最小系統
    發表于 10-16 15:52 ?23次下載
    新塘 <b class='flag-5'>Cortex-M0</b> 最小<b class='flag-5'>系統</b>

    MCU學習筆記_ARM Cortex M0_簡介

    MCU學習筆記ARM Cortex M01. RM的CPU core 的基本概念2. ARM Cortex
    發表于 10-28 11:21 ?15次下載
    MCU<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>_ARM <b class='flag-5'>Cortex</b> <b class='flag-5'>M0</b>_簡介

    基于ARM Cortex-M0核的MCU設計及應用

    知網鏈接:基于ARM Cortex-M0核的MCU設計及應用
    發表于 11-05 15:35 ?18次下載
    基于ARM <b class='flag-5'>Cortex-M0</b>核的MCU設計及應用

    微電子Cortex-M0學習筆記08——基本定時器詳解

    微電子Cortex-M0學習筆記08——基本定時器詳解
    的頭像 發表于 09-26 17:13 ?975次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>08——基本定時器詳解

    微電子Cortex-M0學習筆記07——串口通信詳解

    微電子Cortex-M0學習筆記07——串口通信詳解
    的頭像 發表于 09-26 17:11 ?1176次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>07——串口通信詳解

    微電子Cortex-M0學習筆記06——段式LCD液晶實例

    微電子Cortex-M0學習筆記06——段式LCD液晶實例
    的頭像 發表于 09-26 17:10 ?798次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>06——段式LCD液晶實例

    微電子Cortex-M0學習筆記05——端口外部中斷實例

    微電子Cortex-M0學習筆記05——端口外部中斷實例
    的頭像 發表于 09-26 17:10 ?862次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>05——端口外部中斷實例

    微電子Cortex-M0學習筆記04——GPIO詳解及應用實例

    微電子Cortex-M0學習筆記04——GPIO詳解及應用實例
    的頭像 發表于 09-26 17:07 ?1158次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>04——GPIO詳解及應用實例

    微電子Cortex-M0學習筆記02——Cortex-M0開發環境的建立及調試

    微電子Cortex-M0學習筆記02——Cortex-M
    的頭像 發表于 09-26 17:05 ?1659次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>02——<b class='flag-5'>Cortex-M0</b>開發環境的建立及調試

    微電子Cortex-M0學習筆記01——芯片簡介

    微電子Cortex-M0學習筆記01——芯片簡介
    的頭像 發表于 09-26 17:03 ?968次閱讀
    <b class='flag-5'>敏</b><b class='flag-5'>矽</b><b class='flag-5'>微電子</b><b class='flag-5'>Cortex-M0</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>01——芯片簡介
    主站蜘蛛池模板: 久久影院朴妮唛 | 一级不卡毛片免费 | 欧美成人免费高清网站 | 俺去啦在线视频 | 色视频大全 | 亚洲成色在线综合网站 | 天堂在线免费视频 | 天天视频在线观看免费 | 老湿影院免费体验区 | 日本一区二区三区视频在线观看 | 日本特黄在线观看免费 | 夜夜夜夜曰天天天天拍国产 | 六月丁香啪啪 | 黄色在线观看网站 | 四虎色影院 | 色之综合天天综合色天天棕色 | 天堂网www中文天堂在线 | 性在线视频 | 在线观看国产久青草 | 在线观看视频一区二区三区 | 日本偷偷操 | 你懂的在线视频观看 | 色爱综合网欧美 | 青青热久久国产久精品秒播 | 久久综合九色综合欧洲色 | 搡女人视频免费 | 一区在线观看视频 | 国产伦子一区二区三区四区 | 奇米7777影视| 亚洲国产成人精品久久 | 欧美日韩高清一区 | 一区视频在线播放 | 色福利网站 | 亚洲高清在线视频 | 精品国产中文一级毛片在线看 | 国产亚洲第一 | 狠狠色噜噜狠狠狠狠狠色综合久久 | 自拍偷自拍亚洲精品被多人伦好爽 | 伦理片第一页 | 狠狠色狠狠干 | 曰本女人一级毛片看一级毛 |