中文字幕人妻偷伦在线视频_亚洲AV熟女国产一区二区三区_国产美女裸体无遮挡免费视频_一本清道av高清在线看_蜜桃精品一区二区三区在线观看_777久久人妻少妇嫩草AV

新聞banner
12

推動單片機的各指令執(zhí)行,是MCU選型的一個重要指標。

在CKS32F4xx系列產(chǎn)品中,有HSI、HSE、LSI、LSE、PLL五個重要的時鐘源,其間PLL分為主PLL和專用PLL兩部分。從時鐘頻率來分能夠分為高速時鐘源(HIS、HIS、PLL)和低速時鐘源(LSI、LSE);從來歷可分為外部時鐘源(HSE、LSE)和內(nèi)部時鐘源(HIS、LSI、PLL)。

超低功耗mcu


①:LSI是低速內(nèi)部RC振蕩器,頻率為32kHz。供獨立看門狗和RTC單元使用。

②:LSE是低速外部時鐘,接頻率為32.768kHz晶振。主要供RTC單元使用。

③:HSE是高速外部時鐘晶振輸入,頻率范圍為4MHz~26MHz。。

④:HSI是高速內(nèi)部RC振蕩器,頻率為16MHz??梢灾苯幼鳛橄到y(tǒng)時鐘或者用作PLL輸入。

⑤:PLL為鎖相環(huán)倍頻輸出,有兩個PLL:


    1)主 PLL(PLL)由 HSE 或許 HSI 供給時鐘信號,并具有兩個不同的輸出時鐘。

    其二PLLQ用于生成 USB_OTG_FS(48MHz)、隨機數(shù)發(fā)生器SDIO時鐘。

在CKS32F4xx系列固件庫system_cks32f4xx.c文件中定義了函數(shù)SystemInit(void),并在其間調(diào)用了SetSysClock()函數(shù)來裝備體系要害時鐘寄存器,其處理流程如下:

在設(shè)置主PLL時鐘時,需求設(shè)置一系列的分頻系數(shù)和倍頻參數(shù),代碼如下:


RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |  (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);

 PLL_M、PLL_N、PLL_P宏定義均在在System_cks32f4xx.c文件中定義,當采用8MHz外部晶振時,主PLL時鐘計算方法如下:

PLL = 8MHz * PLL_N / (PLL_M * PLL_P) = 8MHz * 336 /(8 * 2) = 168MHz

用戶可根據(jù)實際需求,根據(jù)SetSysClock函數(shù)內(nèi)的注釋進行實際修改,可用的時鐘源配置宏定義位于cks32f4xx.h中,如RCC_CR_HSION、RCC_CR_HSEON等。

CKS32F4xx系列外設(shè)時鐘配置

在系統(tǒng)初始化之后,在使用部分外設(shè)時,我們還需要根據(jù)外設(shè)需求修改某些時鐘源配置。在CKS32F4xx系列固件庫中,時鐘源的選擇以及時鐘使能等函數(shù)均在RCC相關(guān)固件庫文件 cks32f4xx_rcc.h 和 cks32f

void RCC_AHB1PeriphClockCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);
void RCC_AHB2PeriphClockCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState);
void RCC_AHB3PeriphClockCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

以上5個系統(tǒng)時鐘使能函數(shù)分別控制AHB1、AHB2、AHB3、APB1、APB2總線。要使能某個外設(shè),調(diào)用對應(yīng)的總線外設(shè)時鐘使能函數(shù)即可。

例如,如果我們要使能GPIOA,那么我們可以在頭文件 cks32f4xx_rcc.h 里面查看到宏定義標識符RCC_AHB1Periph_GPIOA掛載在AHB1總線之下,因此我們調(diào)用方式入如下:?

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);

 同理,如果我們要使能USART1的時鐘,那么我們調(diào)用的函數(shù)為:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

還有一類時鐘使能函數(shù)是時鐘源使能函數(shù),前面我們已經(jīng)講解過CKS32F4xx系列有5類時鐘源。這里我們列出來幾種重要的時鐘源使能函數(shù):

void RCC_HSICmd(FunctionalState NewState);
void RCC_LSICmd(FunctionalState NewState);
void RCC_PLLCmd(FunctionalState NewState);
void RCC_PLLI2SCmd(FunctionalState NewState);
void RCC_PLLSAICmd(FunctionalStateNewState);
void RCC_RTCCLKCmd(FunctionalState NewState);

具體調(diào)用方法如下:

RCC_PLLCmd(ENABLE);

 第二類時鐘功能函數(shù):時鐘源選擇和分頻因子配置函數(shù)用來選擇相應(yīng)的時鐘源以及配置相應(yīng)的時鐘分頻系數(shù),比如配置HSI、HSE、PLL三個中的一個時鐘源為系統(tǒng)時鐘。以下為幾種時鐘源配置函數(shù):

void RCC_LSEConfig(uint8_t RCC_LSE);
void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);
void RCC_HCLKConfig(uint32_t RCC_SYSCLK);
void RCC_PCLK1Config(uint32_t RCC_HCLK);
void RCC_PCLK2Config(uint32_t RCC_HCLK);
void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);
void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t PLLM,uint32_t PLLN, int32_t PLLP, uint32_t PLLQ);

比如我們要設(shè)置系統(tǒng)時鐘源為 HSI,則可以調(diào)用系統(tǒng)時鐘源配置函數(shù):

RCC_HCLKConfig(RCC_SYSCLKSource_HSI);

第三類外設(shè)復(fù)位函數(shù)如下:

void RCC_AHB1PeriphResetCmd(uint32_t RCC_AHB1Periph, FunctionalState NewState);void RCC_AHB2PeriphResetCmd(uint32_t RCC_AHB2Periph, FunctionalState NewState);void RCC_AHB3PeriphResetCmd(uint32_t RCC_AHB3Periph, FunctionalState NewState);void RCC_APB1PeriphResetCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);void RCC_APB2PeriphResetCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);

這類函數(shù)和前面講解的外設(shè)時鐘函數(shù)使用方法基本一致,不同的是一個是用來使能外設(shè)時鐘,一個是用來復(fù)位對應(yīng)的外設(shè)。對于這些時鐘操作函數(shù),我們就不一一列舉出來,大家可以打開 RCC 對應(yīng)的文件仔細了解。

推薦閱讀:低功耗MCU,超低功耗MCU,MCU芯片


底部二維碼1
手機掃一掃
關(guān)注我們微信公眾號
兴海县| 定陶县| 扎囊县| 大洼县| 清水河县| 莎车县| 隆子县| 斗六市| 英山县| 武平县| 昌都县| 稻城县| 建水县| 白河县| 彭阳县| 万盛区| 天全县| 郧西县| 澎湖县| 汝城县| 资兴市| 崇仁县| 铜陵市| 黄山市| 奎屯市| 定日县| 泽库县| 庄浪县| 新宾| 江城| 册亨县| 河西区| 远安县| 宜黄县| 罗定市| 怀仁县| 上饶县| 浠水县| 乐平市| 永嘉县| 顺昌县|