<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32學(xué)習筆記——RCC系統時(shí)鐘配置

STM32學(xué)習筆記——RCC系統時(shí)鐘配置

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏
//學(xué)習RCC的配置方法,以后可以直接用

本文引用地址:http://dyxdggzs.com/article/201611/322895.htm

#include"stm32f10x_lib.h"

//#defineSYSCLK_HSE

//#defineSYSCLK_FREQ_20MHz

//#defineSYSCLK_FREQ_36MHz//36MH工作

//#defineSYSCLK_FREQ_48MHz//48MH工作通過(guò)宏定義改變系統時(shí)鐘頻率

#defineSYSCLK_FREQ_72MHz//工作72MH

#defineDELAY_COUNT0xFFFFF

GPIO_InitTypeDefGPIO_InitStructure;//定義GPIO配置的結構體變量,用于初始化設置GPIO

RCC_ClocksTypeDefRCC_ClockFreq;//定義RCC時(shí)鐘頻率配置的結構體變量,用于配置RCC。包括SYSCLK,HCLK,PCLK1,PCLK2,ADCCLK頻率的設置

ErrorStatusHSEStartUpStatus;//定義枚舉類(lèi)型的錯誤變量

//設置系統時(shí)鐘SYSCLK的函數

voidSetSysClock(void);

voidSetSysClockToHSE(void);

voidSetSysClockTo20(void);

voidSetSysClockTo36(void);

voidSetSysClockTo48(void);

voidSetSysClockTo72(void);

voidNVIC_Configuration(void);//配置嵌套向量中斷控制器函數

voidDelay(vu32nCount);//延遲

intmain(void)

{

#ifdefDEBUG

debug();

#endif

SetSysClock();//設置系統時(shí)鐘HCLKPCLK2PCLK1

RCC_GetClocksFreq(&RCC_ClockFreq);//獲得不同片上時(shí)鐘的頻率,RCC_ClockFreq為前面定義的時(shí)鐘頻率結構體變量,該函數把當前

//不同片上時(shí)鐘的頻率存放在結構體RCC_ClockFreq中

RCC_ClockSecuritySystemCmd(ENABLE);//該函數使能或失能時(shí)鐘安全系統在這里是使能

NVIC_Configuration();

//開(kāi)啟GPIOAGPIOB模塊時(shí)鐘使能APB2時(shí)鐘

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA,ENABLE);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//選擇6,7,8,9引腳

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//GPIO速度為50MHz

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//設置為推挽輸出模式

GPIO_Init(GPIOB,&GPIO_InitStructure);//用剛剛配置好的結構體變量初始化PB口

GPIO_Write(GPIOB,GPIO_Pin_7|GPIO_Pin_9);//向GPIOB口寫(xiě)入數據

//MCO:微控制器時(shí)鐘輸出時(shí)鐘能夠輸出到外部的MCO管腳,相關(guān)的GPIO管腳必須被配置成備用功能模式即AF模式

//在STM32F103C8中PA8為MCO管腳

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;//選擇第8腳

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//復用推挽輸出模式

GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA口

//在STM32F103C8中PA8為MCO管腳

RCC_MCOConfig(RCC_MCO_HSE);//選擇在MCO管腳上輸出的時(shí)鐘源參數設置指定輸出的時(shí)鐘源,可取值如下:

//RCC_MCO_NoClock:無(wú)時(shí)鐘被選中,RCC_MCO_SYSCLK:選中系統時(shí)鐘,RCC_MCO_HSI:選中HSI,RCC_MCO_HSE:選中HSE,RCC_MCO_PLLCLK_Div2:

//選中PLL時(shí)鐘除以2

//警告:當選中系統時(shí)鐘作為MCO管腳的輸出時(shí),注意它的時(shí)鐘頻率不超過(guò)50MHz(最大I/O速率)。

while(1)

{

GPIO_Write(GPIOB,(u16)~GPIO_ReadOutputData(GPIOB));//PB口的狀態(tài)取反

Delay(DELAY_COUNT);

}

}

voidSetSysClock(void)//設定系統時(shí)鐘頻率函數

{

#ifdefinedSYSCLK_HSE

SetSysClockToHSE();//系統時(shí)鐘頻率設為HSE

#elifdefinedSYSCLK_FREQ_20MHz

SetSysClockTo20();//系統時(shí)鐘頻率設為20MHz

#elifdefinedSYSCLK_FREQ_36MHz

SetSysClockTo36();//系統時(shí)鐘頻率設為36MHz

#elifdefinedSYSCLK_FREQ_48MHz

SetSysClockTo48();//系統時(shí)鐘頻率設為48MHz

#elifdefinedSYSCLK_FREQ_72MHz

SetSysClockTo72();//系統時(shí)鐘頻率設為72MHz

#endif

}

voidSetSysClockToHSE(void)//設置系統時(shí)鐘頻率為HSE的函數

{

//復位RCC外部設備寄存器到默認值

RCC_DeInit();//將外設RCC寄存器重設為缺省值

RCC_HSEConfig(RCC_HSE_ON);//打開(kāi)外部高速晶振HSE

HSEStartUpStatus=RCC_WaitForHSEStartUp();//等待外部高速時(shí)鐘準備好

if(HSEStartUpStatus==SUCCESS)

{

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//使能flash的預取功能

FLASH_SetLatency(FLASH_Latency_0);//設置flash代碼延時(shí)時(shí)鐘周期數為0

RCC_HCLKConfig(RCC_SYSCLK_Div1);//設置AHB時(shí)鐘等于系統時(shí)鐘

RCC_PCLK2Config(RCC_HCLK_Div1);//設置APB2時(shí)鐘頻率等于A(yíng)HB時(shí)鐘

RCC_PCLK1Config(RCC_HCLK_Div1);//設置APB1時(shí)鐘頻率等于AHB時(shí)鐘

RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);//設置系統時(shí)鐘為HSE

while(RCC_GetSYSCLKSource()!=0x04)//檢查系統時(shí)鐘是否為HSE0x04:HSE作為系統時(shí)鐘

{

}

}

else

{

while(1)

{

}

}

}

voidSetSysClockTo20(void)//設置系統時(shí)鐘頻率為20MHz

{

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

HSEStartUpStatus=RCC_WaitForHSEStartUp();

if(HSEStartUpStatus==SUCCESS)

{

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

FLASH_SetLatency(FLASH_Latency_0);

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK2Config(RCC_HCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div1);

RCC_PLLConfig(RCC_PLLSource_HSE_Div2,RCC_PLLMul_5);//HSE為8MHz設置PLL輸出頻率為20MHz

RCC_PLLCmd(ENABLE);//使能PLL

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//等待PLL就緒

{

}


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: STM32RCC系統時(shí)鐘配

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>