STM32F103 时钟配置

2019-10-11来源: eefocus关键字:STM32F103  时钟  配置

STM32F103外部8M的振荡器,经过倍频后最高可以达到72M。


void RCC_DeInit(void)        将外设RCC寄存器重设为缺省值

void RCC_HSEConfig(u32 RCC_HSE)    设置外部高速晶振(HSE)

    RCC_HSE    取值如下:

        RCC_HSE_OFF     HSE晶振OFF

        RCC_HSE_ON     HSE晶振ON


        RCC_HSE_Bypass     HSE晶振被外部时钟旁路

ErrorStatus RCC_WaitForHSEStartUp(void) 等待HSE起振

该函数将等待直到HSE就绪,或者在超时的情况下退出

    返回值

一个ErrorStatus枚举值:

SUCCESS:HSE晶振稳定且就绪

ERROR:HSE晶振未就绪

void RCC_HCLKConfig(u32 RCC_HCLK) 设置AHB时钟(HCLK)

AHB(HCLK)时钟源自系统时钟(SYSCLK)

RCC_HCLK 取值如下:

RCC_SYSCLK_Div1 AHB时钟 = 系统时钟

RCC_SYSCLK_Div2 AHB时钟 = 系统时钟 / 2

RCC_SYSCLK_Div4 AHB时钟 = 系统时钟 / 4

RCC_SYSCLK_Div8 AHB时钟 = 系统时钟 / 8

RCC_SYSCLK_Div16 AHB时钟 = 系统时钟 / 16

RCC_SYSCLK_Div64 AHB时钟 = 系统时钟 / 64

RCC_SYSCLK_Div128 AHB时钟 = 系统时钟 / 128

RCC_SYSCLK_Div256 AHB时钟 = 系统时钟 / 256

RCC_SYSCLK_Div512 AHB时钟 = 系统时钟 / 512

void RCC_PCLK2Config(u32 RCC_PCLK2) 设置高速AHB时钟(PCLK2)

PCLK2时钟源自AHB时钟(HCLK)

RCC_PCLK2输入参数:

RCC_HCLK_Div1 APB2时钟 = HCLK

RCC_HCLK_Div2 APB2时钟 = HCLK / 2

RCC_HCLK_Div4 APB2时钟 = HCLK / 4

RCC_HCLK_Div8 APB2时钟 = HCLK / 8

RCC_HCLK_Div16 APB2时钟 = HCLK / 16

void RCC_PCLK1Config(u32 RCC_PCLK1) 设置低速AHB时钟(PCLK1)

RCC_PCLK1输入参数

RCC_HCLK_Div1 APB1时钟 = HCLK

RCC_HCLK_Div2 APB1时钟 = HCLK / 2

RCC_HCLK_Div4 APB1时钟 = HCLK / 4

RCC_HCLK_Div8 APB1时钟 = HCLK / 8


RCC_HCLK_Div16 APB1时钟 = HCLK / 16

void RCC_PLLConfig(u32 RCC_PLLSource, u32 RCC_PLLMul) 设置PLL时钟源及倍频系数

RCC_PLLSource输入参数

RCC_PLLSource_HSI_Div2 PLL的输入时钟 = HSI时钟频率除以2

RCC_PLLSource_HSE_Div1 PLL的输入时钟 = HSE时钟频率

RCC_PLLSource_HSE_Div2 PLL的输入时钟 = HSE 时钟频率除以2

RCC_PLLMul输入参数

RCC_PLLMul_2 PLL输入时钟 x 2

RCC_PLLMul_3 PLL输入时钟 x 3

RCC_PLLMul_4 PLL输入时钟 x 4

RCC_PLLMul_5 PLL输入时钟 x 5

RCC_PLLMul_6 PLL输入时钟 x 6

RCC_PLLMul_7 PLL输入时钟 x 7

RCC_PLLMul_8 PLL输入时钟 x 8

RCC_PLLMul_9 PLL输入时钟 x 9

RCC_PLLMul_10 PLL输入时钟 x 10

RCC_PLLMul_11 PLL输入时钟 x 11

RCC_PLLMul_12 PLL输入时钟 x 12

RCC_PLLMul_13 PLL输入时钟 x 13

RCC_PLLMul_14 PLL输入时钟 x 14

RCC_PLLMul_15 PLL输入时钟 x 15

RCC_PLLMul_16 PLL输入时钟 x 16

void RCC_PLLCmd(FunctionalState NewState) 使能或者失能PLL

NewState输入参数


ENABLE 或者 DISABLE

FlagStatus RCC_GetFlagStatus(u8 RCC_FLAG) 检查指定的RCC标志位设置与否

RCC_FLAG输入参数

RCC_FLAG_HSIRDY HSI晶振就绪

RCC_FLAG_HSERDY HSE晶振就绪

RCC_FLAG_PLLRDY PLL就绪

RCC_FLAG_LSERDY LSI晶振就绪

RCC_FLAG_LSIRDY LSE晶振就绪

RCC_FLAG_PINRST 管脚复位

RCC_FLAG_PORRST POR/PDR复位

RCC_FLAG_SFTRST 软件复位

RCC_FLAG_IWDGRST IWDG复位

RCC_FLAG_WWDGRST WWDG复位

RCC_FLAG_LPWRRST 低功耗复位

返回值

SET RESET

void RCC_SYSCLKConfig(u32 RCC_SYSCLKSource) 设置系统时钟(SYSCLK)

RCC_SYSCLKSource输入参数    

RCC_SYSCLKSource_HSI 选择HSI作为系统时钟

RCC_SYSCLKSource_HSE 选择HSE作为系统时钟

RCC_SYSCLKSource_PLLCLK 选择PLL作为系统时钟

u8 RCC_GetSYSCLKSource(void)        返回用作系统时钟的时钟源

返回值

0x00:HSI作为系统时钟

0x04:HSE作为系统时钟

0x08:PLL作为系统时钟


例程    HSE作为PLL,PLL作为SYSCLK

RCC_DeInit();

RCC_HSEConfig(RCC_HSE_ON);

if (RCC_WaitForHSEStartUp() == SUCCESS) {

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK2Config(RCC_HCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

RCC_PLLCmd(ENABLE);

while( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET ) {

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

while( RCC_GetSYSCLKSource() != 0x08 );

}

}

关键字:STM32F103  时钟  配置 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic476833.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32F103 UART通信讲解
下一篇:STM32 串口调试UART1,调试笔记1

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F0 ADC学习
开始时候使用的是stdlib的库,最近发现cube库用的越来越广泛了,遂开始使用cube库来完成ADC的多通道采集实验。ADC 的driver 在STM32F0XX_HAL_DRIVER当中,有stm32f0xx_hal_adc.c文件中,我们可以在stm32f0xx_hal_conf.h中开启 宏定义 ADC 模块。ADC有三种工作模式,polling interruptDMA我这里使用了polling的方式来获取多通道的数据。首先是要声明两个参数设置的结构体ADC_HandleTypeDef             AdcHandle
发表于 2019-10-09
STM32F030 使用内部时钟和外部时钟
static void SetSysClock(void){  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;    /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/#if defined (PLL_SOURCE_HSI)  /* At this stage the HSI is already enabled */   /* Enable Prefetch Buffer and set Flash Late
发表于 2019-10-09
STM32F030F4P6单片机由外部时钟改为内部时钟的步骤
一.看程序运行的时候初始化时钟部分: 二.查看systeminit定义如下: 这就是打开的函数内容这就是使用外部时钟的配置,也就是库函数的默认配置):static void SetSysClock(void){  __IO uint32_t StartUpCounter = 0, HSEStatus = 0;    /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*//* Enable HSE */ //打开外部时钟开关 
发表于 2019-10-09
STM32F030F4P6单片机由外部时钟改为内部时钟的步骤
STM32F4(Flash读保护)
1,目的在实际的产品发布中,如果不对储存在单片机Flash中的程序做一些保护的话,就有可能被一些不法公司,通过仿真器(J-Link,ST-Link等)把Flash中的程序读取回来,得到bin文件或hex文件,然后去山寨产品。所以我们需要对程序进行保护,一种比较简单可靠的方法就是把Flash设置成读保护。2,开发环境1,适用芯片:STM32F4全部芯片2,固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.8.03,IDE:MDK5173,程序源码/**************************************************************** * Function
发表于 2019-10-09
stm32F103 DMA通道
发表于 2019-10-09
stm32F103 DMA通道
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved