91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

STM32時(shí)鐘詳解

Dp1040 ? 來(lái)源:嵌入式微處理器 ? 2023-04-28 11:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32時(shí)鐘源介紹

1. STM32的時(shí)鐘源主要有:

內(nèi)部時(shí)鐘

外部時(shí)鐘

鎖相環(huán)倍頻輸出時(shí)鐘

fad4b542-e572-11ed-ab56-dac502259ad0.png

1.1 詳細(xì)介紹

HSI(內(nèi)部高速時(shí)鐘)

它是RC振蕩器,頻率可以達(dá)到8MHZ,可作為系統(tǒng)時(shí)鐘和PLL鎖相環(huán)的輸入

HSE(外部高速時(shí)鐘)

接入晶振范圍是4-16MHZ,可作為系統(tǒng)時(shí)鐘和PLL鎖相環(huán)的輸入,還可以經(jīng)過(guò)128分頻之后輸入給RTC。

LSI(內(nèi)部低速時(shí)鐘)

它是RC振蕩器,頻率大概為40KHZ,供給獨(dú)立看門(mén)狗或者RTC,并且獨(dú)立看門(mén)口只能依靠LSI作為時(shí)鐘源

LSE(外部低速時(shí)鐘)

通常外接32.768MHZ晶振提供給RTC

PLL(鎖相環(huán))

用來(lái)倍頻輸出。因?yàn)殚_(kāi)發(fā)板外部晶振只有8MHZ,而STM32最大工作頻率是72MHZ。他可以通過(guò)HSI輸入,HSE輸入或兩分頻輸入,通過(guò)PLL倍頻(2-16),倍頻之后輸入給系統(tǒng)時(shí)鐘。

MCO(時(shí)鐘輸出管腳)

通常對(duì)應(yīng)STM32 PA8,它可以選擇一個(gè)時(shí)鐘信號(hào)輸出,給外部的系統(tǒng)提供時(shí)鐘源

2. 標(biāo)準(zhǔn)庫(kù)的時(shí)鐘配置

2.1 stm32啟動(dòng)文件

首先打開(kāi)startup_stm32f10x_hd.s,該文件為stm32的啟動(dòng)文件,在該文件內(nèi)會(huì)發(fā)現(xiàn)有這么一塊用匯編寫(xiě)的代碼。

Reset_HandlerPROC
EXPORTReset_Handler[WEAK]
IMPORT__main
IMPORTSystemInit
LDRR0,=SystemInit
BLXR0
LDRR0,=__main
BXR0
ENDP

通過(guò)這段匯編代碼可以看出,程序在執(zhí)行main函數(shù)之前,會(huì)先執(zhí)行SystemInit函數(shù)。

2.2 SystemInit函數(shù)詳解

voidSystemInit(void)
{
/*Reset the RCC clock configuration to the default reset state(for debug purpose)*/
/*Set HSION bit*/
RCC->CR|=(uint32_t)0x00000001;

/*Reset SW,HPRE,PPRE1,PPRE2,ADCPRE and MCO bits*/
#ifndefSTM32F10X_CL
RCC->CFGR&=(uint32_t)0xF8FF0000;
#else
RCC->CFGR&=(uint32_t)0xF0FF0000;
#endif/*STM32F10X_CL*/

/*Reset HSEON,CSSON and PLLON bits*/
RCC->CR&=(uint32_t)0xFEF6FFFF;

/*Reset HSEBYP bit*/
RCC->CR&=(uint32_t)0xFFFBFFFF;

/*Reset PLLSRC,PLLXTPRE,PLLMUL and USBPRE/OTGFSPRE bits*/
RCC->CFGR&=(uint32_t)0xFF80FFFF;

#ifdefSTM32F10X_CL
/*Reset PLL2ON and PLL3ON bits*/
RCC->CR&=(uint32_t)0xEBFFFFFF;

/*Disable all interrupts and clear pending bits*/
RCC->CIR=0x00FF0000;

/*Reset CFGR2 register*/
RCC->CFGR2=0x00000000;
#elifdefined(STM32F10X_LD_VL)||defined(STM32F10X_MD_VL)||(defined STM32F10X_HD_VL)
/*Disable all interrupts and clear pending bits*/
RCC->CIR=0x009F0000;

/*Reset CFGR2 register*/
RCC->CFGR2=0x00000000;
#else
/*Disable all interrupts and clear pending bits*/
RCC->CIR=0x009F0000;
#endif/*STM32F10X_CL*/

#ifdefined(STM32F10X_HD)||(defined STM32F10X_XL)||(defined STM32F10X_HD_VL)
#ifdefDATA_IN_ExtSRAM
SystemInit_ExtMemCtl();
#endif/*DATA_IN_ExtSRAM*/
#endif

/*Configure the System clock frequency,HCLK,PCLK2 and PCLK1 prescalers*/
/*Configure the Flash Latency cycles and enable prefetch buffer*/
SetSysClock();

#ifdefVECT_TAB_SRAM
SCB->VTOR=SRAM_BASE|VECT_TAB_OFFSET;/*Vector Table Relocation in Internal SRAM.*/
#else
SCB->VTOR=FLASH_BASE|VECT_TAB_OFFSET;/*Vector Table Relocation in Internal FLASH.*/
#endif
}

打開(kāi)內(nèi)部8M時(shí)鐘

RCC->CR|=(uint32_t)0x00000001

通過(guò)查看寄存器手冊(cè)可知,這段代碼為打開(kāi)內(nèi)部8M時(shí)鐘。

fae00b54-e572-11ed-ab56-dac502259ad0.png

設(shè)置時(shí)鐘配置寄存器

#ifndefSTM32F10X_CL
RCC->CFGR&=(uint32_t)0xF8FF0000;
#else
RCC->CFGR&=(uint32_t)0xF0FF0000;
#endif/*STM32F10X_CL*/

對(duì)應(yīng)寄存器說(shuō)明可查看《STM32中文參考手冊(cè)_V10》的6.3.2 時(shí)鐘配置寄存器(RCC_CFGR)章節(jié)。

后續(xù)代碼,有興趣可根據(jù)《STM32中文參考手冊(cè)_V10》手冊(cè),查看代碼具體作用。

2.3 SetSysClock()函數(shù)詳解

staticvoidSetSysClock(void)
{
#ifdefSYSCLK_FREQ_HSE
SetSysClockToHSE();
#elifdefined SYSCLK_FREQ_24MHz
SetSysClockTo24();
#elifdefined SYSCLK_FREQ_36MHz
SetSysClockTo36();
#elifdefined SYSCLK_FREQ_48MHz
SetSysClockTo48();
#elifdefined SYSCLK_FREQ_56MHz
SetSysClockTo56();
#elifdefined SYSCLK_FREQ_72MHz
SetSysClockTo72();
#endif
}

system_stm32f10x.c文件中會(huì)根據(jù)芯片的型號(hào)定義對(duì)應(yīng)的宏

#ifdefined(STM32F10X_LD_VL)||(defined STM32F10X_MD_VL)||(defined STM32F10X_HD_VL)
/*#define SYSCLK_FREQ_HSEHSE_VALUE*/
#defineSYSCLK_FREQ_24MHz24000000
#else
/*#define SYSCLK_FREQ_HSEHSE_VALUE*/
/*#define SYSCLK_FREQ_24MHz24000000*/
/*#define SYSCLK_FREQ_36MHz36000000*/
/*#define SYSCLK_FREQ_48MHz48000000*/
/*#define SYSCLK_FREQ_56MHz56000000*/
#defineSYSCLK_FREQ_72MHz72000000
#endif

3. 時(shí)鐘配置函數(shù)

3.1 時(shí)鐘初始化配置函數(shù)

voidSystemInit(void);
SYSCLK(系統(tǒng)時(shí)鐘)=72MHZ;
AHB總線時(shí)鐘(HCLK=SYSCLK)=72MHZ;
APB1總線時(shí)鐘(PCLK1=SYSCLK/2)=36MHZ;
APB2總線時(shí)鐘(PCLK1=SYSCLK/1)=72MHZ;
PLL主時(shí)鐘=72MHZ;

3.2 外設(shè)時(shí)鐘使能配置函數(shù)

voidRCC_AHBPeriphClockCmd(uint32_tRCC_AHBPeriph,FunctionalState NewState);
voidRCC_APB2PeriphClockCmd(uint32_tRCC_APB2Periph,FunctionalState NewState);
voidRCC_APB1PeriphClockCmd(uint32_tRCC_APB1Periph,FunctionalState NewState);

3.3 時(shí)鐘源使能函數(shù)

voidRCC_HSICmd(FunctionalState NewState);
voidRCC_LSICmd(FunctionalState NewState);
voidRCC_PLLCmd(FunctionalState NewState);
voidRCC_RTCCLKCmd(FunctionalState NewState);

3.4 時(shí)鐘源和倍頻因子配置函數(shù)

voidRCC_HSEConfig(uint32_tRCC_HSE);
voidRCC_SYSCLKConfig(uint32_tRCC_SYSCLKSource);
voidRCC_HCLKConfig(uint32_tRCC_SYSCLK);
voidRCC_PCLK1Config(uint32_tRCC_HCLK);
voidRCC_PCLK2Config(uint32_tRCC_HCLK);

3.5 外設(shè)時(shí)鐘復(fù)位函數(shù)

voidRCC_APB2PeriphResetCmd(uint32_tRCC_APB2Periph,FunctionalState NewState);
voidRCC_APB1PeriphResetCmd(uint32_tRCC_APB1Periph,FunctionalState NewState);

3.6 自定義系統(tǒng)時(shí)鐘

voidRCC_HSE_Config(u32 div,u32 pllm)
{
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON);
if(RCC_WaitForHSEStartUp()==SUCCESS)
{
RCC_HCLKConfig(RCC_SYSCLK_Div1);
RCC_PCLK1Config(RCC_HCLK_Div2);
RCC_PCLK2Config(RCC_HCLK_Div1);
RCC_PLLConfig(div,pllm);
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)
while(RCC_GetSCLKSource()!=0x08);

}
}

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)注

    28

    文章

    4014

    瀏覽量

    140872
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    365085
  • pll
    pll
    +關(guān)注

    關(guān)注

    6

    文章

    889

    瀏覽量

    136433
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1901

    瀏覽量

    133242
  • 時(shí)鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    98

    瀏覽量

    16331

原文標(biāo)題:STM32時(shí)鐘詳解

文章出處:【微信號(hào):玩點(diǎn)嵌入式,微信公眾號(hào):玩點(diǎn)嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32時(shí)鐘詳解

    STM32中在使用任何一個(gè)外設(shè)都必須打開(kāi)相應(yīng)的時(shí)鐘,所以我從STM32時(shí)鐘學(xué)起。 在STM32中有5個(gè)
    發(fā)表于 07-19 03:40

    STM32時(shí)鐘詳解 精選資料推薦

    STM32陸陸續(xù)續(xù)把基礎(chǔ)的部分學(xué)完了,但對(duì)于時(shí)鐘一直一知半解。今天開(kāi)始陸陸續(xù)續(xù)補(bǔ)充關(guān)于時(shí)鐘部分的知識(shí)。一、時(shí)鐘樹(shù)STM32為了實(shí)現(xiàn)低功耗,而
    發(fā)表于 08-12 07:20

    系統(tǒng)時(shí)鐘RCC詳解

    STM32】系統(tǒng)時(shí)鐘RCC詳解(超詳細(xì),超全面)1什么是時(shí)鐘時(shí)鐘是單片機(jī)運(yùn)行的基礎(chǔ),時(shí)鐘信號(hào)推
    發(fā)表于 08-12 06:40

    詳解STM32時(shí)鐘樹(shù)時(shí)鐘信號(hào)

    詳解STM32時(shí)鐘系統(tǒng)STM32時(shí)鐘樹(shù)時(shí)鐘信號(hào)推動(dòng)單片機(jī)內(nèi)各個(gè)部分執(zhí)行相應(yīng)的指令,
    發(fā)表于 08-19 06:33

    STM32時(shí)鐘樹(shù)案例詳解

    STM32時(shí)鐘樹(shù)案例詳解時(shí)鐘樹(shù)直接使用HSI作為時(shí)鐘源使用配置相應(yīng)的結(jié)構(gòu)體,最后調(diào)用HAL_RCC_OscConfig(), 和HAL_RC
    發(fā)表于 08-20 06:11

    STM32時(shí)鐘樹(shù)詳解

    原文地址:STM32時(shí)鐘樹(shù)深入詳解作者:蔡志威在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法如果使用內(nèi)部RC振蕩器而不使用外部晶振,請(qǐng)按照下面方法處理:1)對(duì)于
    發(fā)表于 08-23 07:38

    STM32時(shí)鐘

    STM32時(shí)鐘配置的總結(jié)
    發(fā)表于 01-14 11:05 ?4次下載

    基于STM32 USB詳解

    基于STM32 USB詳解
    發(fā)表于 10-15 10:54 ?82次下載
    基于<b class='flag-5'>STM32</b> USB<b class='flag-5'>詳解</b>

    STM32最小系統(tǒng)和時(shí)鐘詳解

    最小系統(tǒng)1,、供電電路2、復(fù)位電路3、時(shí)鐘:外部晶振(2個(gè))4、Boot啟動(dòng)模式選擇5、下載電路(JTAG)6、后背電池時(shí)鐘詳解:在STM32中,有五個(gè)
    發(fā)表于 11-17 15:36 ?12次下載
    <b class='flag-5'>STM32</b>最小系統(tǒng)和<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>詳解</b>

    STM32系統(tǒng)時(shí)鐘RCC詳解

    STM32】系統(tǒng)時(shí)鐘RCC詳解(超詳細(xì),超全面) 原創(chuàng)
    發(fā)表于 11-30 12:21 ?14次下載
    <b class='flag-5'>STM32</b>系統(tǒng)<b class='flag-5'>時(shí)鐘</b>RCC<b class='flag-5'>詳解</b>

    【自學(xué)筆記】STM32時(shí)鐘系統(tǒng)詳解

    ,ADC),時(shí)鐘的重要性不言而喻。為什么STM32要有多個(gè)時(shí)鐘源呢?? STM32本身十分復(fù)雜,外設(shè)非常多 但我們實(shí)際使用的時(shí)候只會(huì)用到有限的幾個(gè)外設(shè),使用任何外設(shè)都需要
    發(fā)表于 12-09 13:21 ?11次下載
    【自學(xué)筆記】<b class='flag-5'>STM32</b><b class='flag-5'>時(shí)鐘</b>系統(tǒng)<b class='flag-5'>詳解</b>

    2.STM32的存儲(chǔ)器、電源和時(shí)鐘體系

    3.2.6.復(fù)位與時(shí)鐘概述3.2.7.STM32時(shí)鐘框圖詳解13.2.8.STM32時(shí)鐘框圖
    發(fā)表于 01-07 15:32 ?1次下載
    2.<b class='flag-5'>STM32</b>的存儲(chǔ)器、電源和<b class='flag-5'>時(shí)鐘</b>體系

    STM32時(shí)鐘系統(tǒng)與時(shí)鐘啟動(dòng)順序詳解

    STM32時(shí)鐘系統(tǒng)基本一致,不同系列之間有細(xì)微差別。此文檔主要針對(duì)STM32F446的時(shí)鐘系統(tǒng)進(jìn)行介紹。
    發(fā)表于 02-09 10:31 ?6次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>時(shí)鐘</b>系統(tǒng)與<b class='flag-5'>時(shí)鐘</b>啟動(dòng)順序<b class='flag-5'>詳解</b>

    單片機(jī)STM32時(shí)鐘詳解

    眾所周知STM32有5個(gè)時(shí)鐘源HSI、HSE、LSI、LSE、PLL,其實(shí)他只有四個(gè),因?yàn)閺纳蠄D中可以看到PLL都是由HSI或HSE提供的。 其中,高速時(shí)鐘(HSE和HSI)提供給芯片主體的主
    的頭像 發(fā)表于 05-22 10:09 ?5467次閱讀
    單片機(jī)<b class='flag-5'>STM32</b><b class='flag-5'>時(shí)鐘</b><b class='flag-5'>詳解</b>

    STM32庫(kù)函數(shù)SystemInit()詳解

    STM32庫(kù)函數(shù)SystemInit()詳解
    的頭像 發(fā)表于 09-18 15:45 ?5130次閱讀
    <b class='flag-5'>STM32</b>庫(kù)函數(shù)SystemInit()<b class='flag-5'>詳解</b>
    主站蜘蛛池模板: 午夜观看 | 一级毛片成人免费看a | 欧美成人精品欧美一级乱黄 | 激情五月社区 | 看5xxaaa免费毛片 | 中文字幕第7页 | 中国一级特黄真人毛片 | 伊人黄色 | 亚洲jjzzjjzz在线观看 | 国产精品九九久久一区hh | 亚洲网在线观看 | 亚洲香蕉久久一区二区三区四区 | 三级全黄a| 午夜一级影院 | 亚洲国产女人aaa毛片在线 | 狼色影院 | 色婷婷色综合缴情在线 | 人成电影免费观看在线 | 日日夜夜噜 | 一区二区三区免费视频播放器 | 国产高清亚洲 | 免费观看三级毛片 | 亚洲 欧美 日韩 丝袜 另类 | 国产成人精品怡红院 | 五月激情婷婷综合 | 性xxxxbbbb免费播放视频 | 亚洲国产欧美精品一区二区三区 | 制服丝袜中文字幕第一页 | 性色aⅴ闺蜜一区二区三区 性色成人网 | 男人j进入女人j在线视频 | 欧美性一区二区三区五区 | 青草青青产国视频在线 | 日本四虎影院 | 包你爽综合网 | 一级欧美在线的视频 | 永久免费看www色视频 | 婷婷热| 在线播放国产不卡免费视频 | 日本激情网 | 久久免费精品国产72精品剧情 | 欧美黄色录像视频 |