您的位置 首页 培训

stm32f407时钟装备办法例程解析

这里我们写一个RCC配置函数来说明各函数的用途,其中HSE=8MHz。***@说明配置STM32F407的时钟系统*@参数无*@返回无*@

这儿咱们写一个RCC装备函数来阐明各函数的用处,其间HSE = 8MHz。

/**

* @阐明装备STM32F407的时钟体系

* @参数无

* @回来无

* @阐明 void Clock_Config(void)按如下表格装备时钟

*

*==================================================================

* Supported STM32F4xx device revision | Rev A

*—————————————————————————–

* System Clock source | PLL (HSE)

*—————————————————————————–

* SYSCLK(Hz) | 168000000

*—————————————————————————–

* HCLK(Hz) | 168000000

*—————————————————————————–

* AHB Prescaler | 1

*—————————————————————————–

* APB1 Prescaler | 4

*—————————————————————————–

* APB2 Prescaler | 2

*—————————————————————————–

* HSE Frequency(Hz) | 8000000

*—————————————————————————–

* PLL_M |8

*—————————————————————————–

* PLL_N | 336

*—————————————————————————–

* PLL_P | 2

*—————————————————————————–

* PLL_Q |7

*===================================================================

*/

void Clock_Config(void){

ErrorStatus State;

uint32_t PLL_M;

uint32_t PLL_N;

uint32_t PLL_P;

uint32_t PLL_Q;

/*装备前将一切RCC重置为初始值*/

RCC_DeInit();

/*这儿挑选 外部晶振(HSE)作为 时钟源,因而首要翻开外部晶振*/

RCC_HSEConfig(RCC_HSE_ON);

/*等候外部晶振进入安稳状况*/

while( RCC_WaitForHSEStartUp() != SUCCESS );

/*

**咱们要挑选PLL时钟作为体系时钟,因而这儿先要对PLL时钟进行装备

*/

/*挑选外部晶振作为PLL的时钟源*/

/* 到这一步停止,已有HSE_VALUE = 8 MHz.

PLL_VCO input clock = (HSE_VALUE or HSI_VALUE / PLL_M),

依据文档,这个值被主张在1~2MHz,因而咱们令PLL_M = 8,

即PLL_VCO input clock = 1MHz */

PLL_M = 8;

/* 到这一步停止,已有PLL_VCO input clock = 1 MHz.

PLL_VCO output clock = (PLL_VCO input clock) * PLL_N,

这个值要用来核算体系时钟,咱们 令PLL_N = 336,

即PLL_VCO output clock = 336 MHz.*/

PLL_N = 336;

/* 到这一步停止,已有PLL_VCO output clock = 336 MHz.

System Clock = (PLL_VCO output clock)/PLL_P ,

由于咱们要SystemClock = 168 Mhz,因而令PLL_P = 2.

*/

PLL_P = 2;

/*这个系数用来装备SD卡读写,USB等功能,暂时不必,依据文档,暂时先设为7*/

PLL_Q = 7;

/* 装备PLL并将其使能,取得168Mhz的System Clock时钟*/

RCC_PLLConfig(RCC_PLLSource_HSE, PLL_M, PLL_N, PLL_P, PLL_Q);

RCC_PLLCmd(ENABLE);

/*到了这一步,咱们现已装备好了PLL时钟。下面咱们装备Syetem Clock*/

/*挑选PLL时钟作为体系时钟源*/

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/peixun/260443.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部