日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]STM32中在使用任何一個(gè)外設(shè)都必須打開相應(yīng)的時(shí)鐘,所以我從STM32的時(shí)鐘學(xué)起。RCC時(shí)鐘在STM32中有5個(gè)時(shí)鐘源:①、HSI是高速內(nèi)部時(shí)鐘,RC震蕩器,頻率為 8MHz。②、HSE是高速外部時(shí)鐘,可接石英/陶瓷諧振器,或者接外部

STM32中在使用任何一個(gè)外設(shè)都必須打開相應(yīng)的時(shí)鐘,所以我從STM32的時(shí)鐘學(xué)起。

RCC時(shí)鐘

在STM32中有5個(gè)時(shí)鐘源:①、HSI是高速內(nèi)部時(shí)鐘,RC震蕩器,頻率為 8MHz。②、HSE是高速外部時(shí)鐘,可接石英/陶瓷諧振器,或者接外部時(shí)鐘源,頻率范圍為4MHz~16MHz。③、LSI是低速內(nèi)部時(shí)鐘,RC振蕩器,頻率為40kHz。④、LSE是低速外部時(shí)鐘,接頻率為32.768kHz的石英晶體。⑤、PLL為鎖相環(huán)倍頻輸出,其時(shí)鐘輸入源可選擇為HIS/2、HSE或HSE/2。倍頻可選擇為2~16倍,但其輸出頻率最大不得超過72MHz。

系統(tǒng)時(shí)鐘SYSCLK,它是供STM32中絕大部分器件工作的時(shí)鐘源,系統(tǒng)時(shí)鐘可選擇為PLL輸出、HSI或者HSE。系統(tǒng)時(shí)鐘的做大頻率為72MHz,它通過AHB分頻器分頻后送給個(gè)模塊使用,AHB分頻器可選擇1、2、4、8、16、32、64、128、256、512分頻。AHB分頻器輸出的時(shí)鐘送給5大模塊使用:

1. 送給AHB總線、內(nèi)核、內(nèi)存和DMA使用的HCLK時(shí)鐘。2. 通過8分頻后送給Cortex的系統(tǒng)定時(shí)器時(shí)鐘。3. 直接送給Cortex的空閑運(yùn)行時(shí)鐘PCLK。4. 送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設(shè)使用(PCLK1,最大頻率36MHz),另一路送給定時(shí)器(Timer)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時(shí)鐘輸出供定時(shí)器2、3、4使用。5.送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設(shè)使用(PCLK2,最大頻率72MHz),另一路送給定時(shí)器(Timer)1倍頻器使用。該倍頻器可選擇1或者2倍頻,時(shí)鐘輸出供定時(shí)器1使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。連接在APB1(低速外設(shè))上的設(shè)備有:電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、Timer2、Timer3、Timer4。連接在APB2(高速外設(shè))上的設(shè)備有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口、第二功能IO口。寄存器描述:typedef struct
{
vu32 CR; //HSI,HSE,CSS,PLL等的使能
vu32 CFGR; //PLL等的時(shí)鐘源選擇以及分頻系數(shù)設(shè)定
vu32 CIR; //清除/使能時(shí)鐘就緒中斷
vu32 APB2RSTR; //APB2線上外設(shè)復(fù)位寄存器
vu32 APB1RSTR; //APB1線上外設(shè)復(fù)位寄存器
vu32 AHBENR; //DMA,SDIO等時(shí)鐘使能
vu32 APB2ENR; //APB2線上外設(shè)時(shí)鐘使能
vu32 APB1ENR; //APB1線上外設(shè)時(shí)鐘使能
vu32 BDCR; //備份域控制寄存器
vu32 CSR;
} RCC_TypeDef;

時(shí)鐘控制寄存器(RCC_CR)

31~26

25

24

23~20

19

18

17

16

保留

PLLRDY

PLLON

保留

CSSON

HSEBYP

HSERDY

HSEON

eg:RCC->CR|=0x00010000; //外部高速時(shí)鐘使能HSEON

RCC->CR|=0x01000000; //使能PLLON

RCC->CR>>25; //等待PLL鎖定

時(shí)鐘配置寄存器(RCC_CFGR)

31:27

26:24

23

22

21:18

17

16

保留

MCO[2:0]

保留

USBPRE

PLLMUL[3:0]

PLLXTPRE

PLLSRC

15:14

13:11

10:8

7:4

3:2

1:0

ADCPRE[1:0]

PPRE2[2:0]

PPRE1[2:0]

HPRE[3:0]

SWS[1:0]

SW[1:0]

位26:24

MCO: 微控制器時(shí)鐘輸出 (Microcontroller clock output)

由軟件置’1’或清零。

0xx:沒有時(shí)鐘輸出;

100:系統(tǒng)時(shí)鐘(SYSCLK)輸出;

101:內(nèi)部RC振蕩器時(shí)鐘(HSI)輸出;

110:外部振蕩器時(shí)鐘(HSE)輸出;

111:PLL時(shí)鐘2分頻后輸出。

位22

USBPRE:USB預(yù)分頻 (USB prescaler)

由軟件置’1’或清’0’來產(chǎn)生48MHz的USB時(shí)鐘。在RCC_APB1ENR寄存器中使能USB時(shí)鐘之前,必須保證該位已經(jīng)有效。如果USB時(shí)鐘被使能,該位不能被清零。

0:PLL時(shí)鐘1.5倍分頻作為USB時(shí)鐘

1:PLL時(shí)鐘直接作為USB時(shí)鐘

位21:18

PLLMUL:PLL倍頻系數(shù) (PLL multiplication factor)

由軟件設(shè)置來確定PLL倍頻系數(shù)。只有在PLL關(guān)閉的情況下才可被寫入。

注意:PLL的輸出頻率不能超過72MHz

0000:PLL 2倍頻輸出1000:PLL 10倍頻輸出

0001:PLL 3倍頻輸出1001:PLL 11倍頻輸出

0010:PLL 4倍頻輸出1010:PLL 12倍頻輸出

0011:PLL 5倍頻輸出1011:PLL 13倍頻輸出

0100:PLL 6倍頻輸出1100:PLL 14倍頻輸出

0101:PLL 7倍頻輸出1101:PLL 15倍頻輸出

0110:PLL 8倍頻輸出1110:PLL 16倍頻輸出

0111:PLL 9倍頻輸出1111:PLL 16倍頻輸出

位17

PLLXTPRE:HSE分頻器作為PLL輸入 (HSE divider for PLL entry)

由軟件置’1’或清’0’來分頻HSE后作為PLL輸入時(shí)鐘。只能在關(guān)閉PLL時(shí)才能寫入此位。

0:HSE不分頻

1:HSE 2分頻

位16

PLLSRC:PLL輸入時(shí)鐘源 (PLL entry clock source)

由軟件置’1’或清’0’來選擇PLL輸入時(shí)鐘源。只能在關(guān)閉PLL時(shí)才能寫入此位。

0:HSI振蕩器時(shí)鐘經(jīng)2分頻后作為PLL輸入時(shí)鐘

1:HSE時(shí)鐘作為PLL輸入時(shí)鐘。

位15:14

ADCPRE[1:0]:ADC預(yù)分頻 (ADC prescaler)

由軟件置’1’或清’0’來確定ADC時(shí)鐘頻率

00:PCLK2 2分頻后作為ADC時(shí)鐘

01:PCLK2 4分頻后作為ADC時(shí)鐘

10:PCLK2 6分頻后作為ADC時(shí)鐘

11:PCLK2 8分頻后作為ADC時(shí)鐘

位13:11

PPRE2[2:0]:高速APB預(yù)分頻(APB2) (APB high-speed prescaler (APB2))

由軟件置’1’或清’0’來控制高速APB2時(shí)鐘(PCLK2)的預(yù)分頻系數(shù)。

0xx:HCLK不分頻

100:HCLK 2分頻

101:HCLK 4分頻

110:HCLK 8分頻

111:HCLK 16分頻

位10:8

PPRE1[2:0]:低速APB預(yù)分頻(APB1) (APB low-speed prescaler (APB1))

由軟件置’1’或清’0’來控制低速APB1時(shí)鐘(PCLK1)的預(yù)分頻系數(shù)。

警告:軟件必須保證APB1時(shí)鐘頻率不超過36MHz。

0xx:HCLK不分頻

100:HCLK 2分頻

101:HCLK 4分頻

110:HCLK 8分頻

111:HCLK 16分頻

位7:4

HPRE[3:0]: AHB預(yù)分頻 (AHB Prescaler)

由軟件置’1’或清’0’來控制AHB時(shí)鐘的預(yù)分頻系數(shù)。

0xxx:SYSCLK不分頻

1000:SYSCLK 2分頻1100:SYSCLK 64分頻

1001:SYSCLK 4分頻1101:SYSCLK 128分頻

1010:SYSCLK 8分頻1110:SYSCLK 256分頻

1011:SYSCLK 16分頻1111:SYSCLK 512分頻

位3:2

SWS[1:0]:系統(tǒng)時(shí)鐘切換狀態(tài) (System clock switch status)

由硬件置’1’或清’0’來指示哪一個(gè)時(shí)鐘源被作為系統(tǒng)時(shí)鐘。

00:HSI作為系統(tǒng)時(shí)鐘;

01:HSE作為系統(tǒng)時(shí)鐘;

10:PLL輸出作為系統(tǒng)時(shí)鐘;

11:不可用。

位1:0

SW[1:0]:系統(tǒng)時(shí)鐘切換 (System clock switch)

由軟件置’1’或清’0’來選擇系統(tǒng)時(shí)鐘源。

00:HSI作為系統(tǒng)時(shí)鐘;

01:HSE作為系統(tǒng)時(shí)鐘;

10:PLL輸出作為系統(tǒng)時(shí)鐘;

11:不可用

eg: RCC->CFGR=0x00000400; //APB1=DIV2;APB2=DIV1(不分頻);AHB=DIV1(不分頻);

根據(jù)STM32庫(kù)函數(shù)設(shè)置時(shí)鐘流程:

RCC_DeInit(); //設(shè)置RCC寄存器重新設(shè)置為默認(rèn)值

RCC_HSEConfig(RCC_HSE_ON); //打開外部高速時(shí)鐘晶振

HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待外部高速時(shí)鐘晶振工作

if(HSEStartUpStatus == SUCCESS) //外部就緒

{

//Add here PLL ans system clock config

RCC_HCLKConfig(RCC_SYSCLK_Div1); //設(shè)置AHB時(shí)鐘不分頻

RCC_PCLK2Config(RCC_HCLK_Div1); //設(shè)置APB2時(shí)鐘不分頻

RCC_PCLK1Config(RCC_HCLK_Div2); //設(shè)置APB1時(shí)鐘二分頻

RCC_ADCCLKConfig(RCC_PCLK2_Div6); //設(shè)置ADC時(shí)鐘六分頻

//設(shè)置PLL時(shí)鐘將8M時(shí)鐘9倍頻到72M

RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);

RCC_PLLCmd(ENABLE);//使能PLL

FlagStatus Status;

Status = RCC_GetFlagStatus(RCC_FLAG_PLLRDY);

if(Status == RESET)

{

……

}

RCC_SYSCLKConfig(RCC-SYSCLKSource_PLLCLK); //將PLL輸出設(shè)置為系統(tǒng)時(shí)鐘

while(RCC_GetSYSCLKSource()!=0x08) //測(cè)試PLL是否被用作系統(tǒng)時(shí)鐘等待校驗(yàn)完成

{}

}

else

{

//Add here some code to deal with this error

}

//使能外圍接口總線時(shí)鐘

RCC_APB2PeriphClockCmd() / RCC_APB1PeriphClockCmd()


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

上海2025年7月21日 /美通社/ -- 本文圍繞跨域時(shí)間同步技術(shù)展開,作為智能汽車 "感知-決策-執(zhí)行 -交互" 全鏈路的時(shí)間基準(zhǔn),文章介紹了 PTP、gPTP、CAN 等主流同步技術(shù)及特點(diǎn),并以...

關(guān)鍵字: 時(shí)鐘 時(shí)間同步 同步技術(shù) 智能汽車

只要FPGA設(shè)計(jì)中的所有資源不全屬于一個(gè)時(shí)鐘域,那么就可能存在跨時(shí)鐘域問題,因?yàn)楫惒竭壿嬈鋵?shí)也可以看做一種特殊的跨時(shí)鐘域問題。

關(guān)鍵字: FPGA 時(shí)鐘

在Xilinx FPGA的DDR3設(shè)計(jì)中,時(shí)鐘系統(tǒng)扮演著至關(guān)重要的角色。它不僅決定了DDR3存儲(chǔ)器的數(shù)據(jù)傳輸速率,還直接影響到FPGA與DDR3存儲(chǔ)器之間數(shù)據(jù)交換的穩(wěn)定性和效率。本文將詳細(xì)介紹Xilinx FPGA DD...

關(guān)鍵字: Xilinx FPGA DDR3 時(shí)鐘

TimeProvider 4100主時(shí)鐘的附件,可擴(kuò)展至200 個(gè)完全冗余的T1、E1 或CC同步輸出端

關(guān)鍵字: 5G網(wǎng)絡(luò) 時(shí)鐘

香港2022年7月7日 /美通社/ -- 壽康集團(tuán)有限公司(“壽康集團(tuán)”或“本公司”及其附屬公司,統(tǒng)稱“本集團(tuán)”;股份代號(hào):0575.HK)旗下全資附屬公司、并以香港為基地的人工智能創(chuàng)新公司及衰老與長(zhǎng)壽深層生物...

關(guān)鍵字: 時(shí)鐘 VI GE EV

文章轉(zhuǎn)自知乎[MIPI自學(xué)筆記],作者IEEE1364https://zhuanlan.zhihu.com/p/926820471?MIPI概述MIPI是MobileIndustryProcessorInterface的...

關(guān)鍵字: MIPI LAN 數(shù)據(jù)流 時(shí)鐘

1、為設(shè)計(jì)執(zhí)行綜合時(shí)使用的各種設(shè)計(jì)約束是什么?1.1、創(chuàng)建時(shí)鐘(頻率、占空比)。1.2、定義輸入端口的transition-time要求1.3、指定輸出端口的負(fù)載值1.4、對(duì)于輸入和輸出,指定延遲值(輸入延遲和輸出延遲)...

關(guān)鍵字: 數(shù)字芯片 時(shí)鐘 WIRE CK

如今,SoCs正變得越來越復(fù)雜,數(shù)據(jù)經(jīng)常從一個(gè)時(shí)鐘域傳輸?shù)搅硪粋€(gè)時(shí)鐘域。上圖信號(hào)A由C1時(shí)鐘域觸發(fā),被C2時(shí)鐘域采樣。根據(jù)這兩個(gè)時(shí)鐘之間的關(guān)系,在將數(shù)據(jù)從源時(shí)鐘傳輸?shù)侥繕?biāo)時(shí)鐘時(shí),可能會(huì)出現(xiàn)不同類型的問題,并且這些問題的解...

關(guān)鍵字: 時(shí)鐘 觸發(fā)器 同步器 SETUP

本文主要介紹各種類型的跨時(shí)鐘域問題。同步時(shí)鐘是指具有已知相位和頻率關(guān)系的時(shí)鐘。這些時(shí)鐘本質(zhì)上是來自同一時(shí)鐘源。根據(jù)相位和頻率關(guān)系,可分為以下幾類:具有相同頻率和零相位差的時(shí)鐘具有相同頻率和固定相位差的時(shí)鐘具有不同頻率和可...

關(guān)鍵字: 異步 時(shí)鐘 相位差 SETUP

跨時(shí)鐘域驗(yàn)證可分為結(jié)構(gòu)驗(yàn)證和功能驗(yàn)證兩類。結(jié)構(gòu)驗(yàn)證確保在需要的地方添加了適當(dāng)?shù)耐竭壿?。功能?yàn)證確保已添加的邏輯實(shí)現(xiàn)了預(yù)期的功能。僅通過執(zhí)行結(jié)構(gòu)驗(yàn)證,就可以檢測(cè)到許多CDC問題。這些檢查比功能驗(yàn)證更簡(jiǎn)單、更快。因此,驗(yàn)證...

關(guān)鍵字: 時(shí)鐘 數(shù)據(jù)傳輸 信號(hào) TE
關(guān)閉