stm32l0xx时钟系统详解与代码配置

发布者:asd123yui最新更新时间:2018-06-18 来源: eefocus关键字:stm32l0xx  时钟系统  代码配置 手机看文章 扫描二维码
随时随地手机看文章

时钟是嵌入式系统的脉搏,对嵌入式系统至关重要。处理器内核在时钟驱动下完成状态变换等动作,外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。stm32l0xx系列低功耗新增MSI内部多频率可选时钟源,代码配置方面基于HAL库,与f系列相比存在一定的区别,本文以datasheet中的时钟树图为基础对时钟系统进行学习总结。时钟树如下图1所示:


1、LSI RC,低速内部时钟(RC振荡器),是看门狗(WatchdogLS)的唯一时钟来源,可以作为实时时钟RTC和主时钟输出(MCO)的时钟源。

2、LSE OSC,外部低速时钟(晶振),输入输出引脚接OSC32_IN、OCS32_OUT可以作为实时时钟RTC和主时钟输出(MCO)的时钟源。精度高于内部低速时钟。

3、MSI RC,全称为Multispeedinternal RC oscillator,是stm32lxx低功耗系列独有的时钟,可提供12种频率的时钟源,范围可以从100KHZ到48MHZ之间变化。可以直接选择为系统时钟和AHB时钟,也可以作为MCO的时钟源。MSI为低功耗模式提供了更多的选择,但是精度不高。官方提供的例程中多以MSI作为时钟源。

4、HSI,内部高速时钟(RC振荡器),可以直接选择为系统时钟,可以作为PLL(锁相环倍频输出)时钟源,经倍频后选择作为系统的System Clock(系统时钟)和AHB时钟。HSI还可以作为ADCCLK时钟源。

5、HSE,外部高速时钟(晶振),输入输出引脚接OSC_IN、OCS_OUT,可以直接选择为系统时钟,可以作为PLL源,经倍频后选择作为系统的(系统时钟)和AHB时钟。还可以作为MCO和RTC时钟源。

6、System Clock,系统时钟,是供STM32 中绝大部分部件工作的时钟源,是其他所有外设的时钟的来源。System Clock通过 AHB 分频器分频后送给各模块使用。System Clock还是CK_PWR和MCO的时钟源。

7、HCLK,高速外设时钟,是AHB总线时钟源,SystemClock经AHB预分频得到。供内存和 DMA 等使用。

8、FCLK为自由振荡处理器时钟,用来保证在休眠是采样到中断和跟踪休眠事件,与HCLK时钟源相同。

9、PCLK1,System Clock经AHB预分频后,送给 APB1 分频器,得出PCLK1,是APB1时钟源,供 APB1 外设使用。APB1上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、UART2、UART3 等等。另一路送给TIMx使用,若APB1分频系数为1,则不倍频,否则倍频系数为2。

9、PCLK2,System Clock经AHB预分频后,送给 APB2 分频器,得出PCLK2,是APB2时钟源,供 APB2外设使用,APB2 上面连接的是高速外设包括UART1、SPI1、Timer1、ADC1、ADC2、所有普通 IO 口(PA~PE)、第二功能 IO 口等。另一路送给TIMx使用,若APB2分频系数为1,则不倍频,否则倍频系数为2。

 

时钟初始化代码配置,选用了HSE外部时钟,未进行倍频和分频:

void SystemClock_Config(void)  

{  

  

  

  RCC_OscInitTypeDef RCC_OscInitStruct;  

  RCC_ClkInitTypeDef RCC_ClkInitStruct;  

  

  

    /**Configure the main internal regulator output voltage   

    */  

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);  

  

  

    /**Initializes the CPU, AHB and APB busses clocks   

    */  

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE;  

  RCC_OscInitStruct.HSEState = RCC_HSE_ON;  

  RCC_OscInitStruct.LSIState = RCC_LSI_ON;  

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;  

  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)  

  {  

    Error_Handler();  

  }  

  

  

    /**Initializes the CPU, AHB and APB busses clocks   

    */  

  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK  

                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;  

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;  

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;  

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;  

  

  

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)  

  {  

    Error_Handler();  

  }  

  

  

    /**Configure the Systick interrupt time   

    */  

  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);  

  

  

    /**Configure the Systick   

    */  

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);  

  

  

  /* SysTick_IRQn interrupt configuration */  

  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);  

}  


关键字:stm32l0xx  时钟系统  代码配置 引用地址:stm32l0xx时钟系统详解与代码配置

上一篇:STM32之SPI从机例程
下一篇:STM32F103的时钟配置源码学习记录

推荐阅读最新更新时间:2024-03-16 16:05

STM32学习笔记——RCC系统时钟配置
//学习RCC的配置方法,以后可以直接用 #include stm32f10x_lib.h //#define SYSCLK_HSE //#define SYSCLK_FREQ_20MHz //#define SYSCLK_FREQ_36MHz //36MH工作 //#define SYSCLK_FREQ_48MHz //48MH工作 通过宏定义改变系统时钟频率 #define SYSCLK_FREQ_72MHz //工作72MH #define DELAY_COUNT 0xFFFFF GPIO_InitTypeDef GPIO_InitStructure;
[单片机]
学习笔记∣stm32l0xx时钟系统详解与代码配置
时钟是嵌入式系统的脉搏,对嵌入式系统至关重要。处理器内核在时钟驱动下完成状态变换等动作,外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、A/D转换、定时器计数等等。stm32l0xx系列低功耗新增MSI内部多频率可选时钟源,代码配置方面基于HAL库,与f系列相比存在一定的区别,本文以datasheet中的时钟树图为基础对时钟系统进行学习总结。时钟树如下图1所示: 1、LSI RC,低速内部时钟(RC振荡器),是看门狗(WatchdogLS)的唯一时钟来源,可以作为实时时钟RTC和主时钟输出(MCO)的时钟源。 2、LSE OSC,外部低速时钟(晶振),输入输出引脚接OSC32_IN、OCS32_OUT可以作为实时
[单片机]
学习笔记∣<font color='red'>stm32l0xx</font><font color='red'>时钟</font><font color='red'>系统</font>详解与<font color='red'>代码</font><font color='red'>配置</font>
设置stm32系统各部分时钟
函数如下: /************************************************************************** * 函数名 : RccInitialisation * 函数描述 : 设置系统各部分时钟 * 输入参数 : 无 * 输出结果 : 无 * 返回值 : 无 **************************************************************************/ void RccInitialisation(void) { /* 定义枚举类型变量 HSEStartUpStatus */ ErrorStatus H
[单片机]
STM32 开发板入门教程 (三) 系统时钟 SysTick
(一) 背景介绍 在传统的嵌入式系统软件按中通常实现 Delay(N) 函数的方法为: for(i = 0; i = x; i ++); x --- 对应于 对应于 N 毫秒的循环值 对于STM32系列微处理器来说,执行一条指令只有几十个 ns,进行 for 循环时,要实现 N 毫秒的 x 值非常大,而且由于系统频率的宽广,很难计算出延时 N 毫秒的精确值。针对 STM32 微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用 Delay(N)。 (二) STM32 SysTick 介绍 Cortex-M3 的内核中包含一个 SysTick 时钟。SysTick 为一个 24 位递减计
[单片机]
MSP430F5529系统时钟频率设置---超频40MHz
先前跟大家分享了一个MSP430F5529设置25MHz的频率的方法,但是总是感觉频率变化的比较大,经过一番的研究,我发现25MHz下的时钟是经过380倍频得到的,而网上有大神有提到,倍频的过程中存在的不稳定的情况下,故有了换晶振的想法。 我所使用的的是MSP430F5529 的launchpad,板载一个32.768K的RTC时钟XTAL1和一个4MHz 的时钟,原本我只是想获得一个稳定的25MHz的时钟,但是一次错的的数据配置之后我发现系统时钟居然跑到了26MHz,于是,探究频率极限的行动开始了。现在我把这个过程分享给大家。 链接1 25MHz时钟的设置方法 ---- 博客地址 链接2: 超频的代码下载地址-----
[单片机]
MSP430F5529<font color='red'>系统</font><font color='red'>时钟</font>频率设置---超频40MHz
系统时钟和定时器;MPLL和定时器
写在前面:觉得这章比较简单,没有花较大篇幅来讲,很多寄存器的相关用法可以参照S 3C2440的官方手册,很容易看懂 1系统时钟 (1) FCLK:用于CPU核 HCLK:用于AHB总线上设备:CPU核、存储器控制器、中断控制器、LCD控制器、DMA和USB主机模块 PCLK:用于APB总线上设备:WATCHDOG、IIS、I2C、PWM定时器、MMC接口、ADC、UART、GPIO、RTC和SPI (2 )开发板时钟频率为12 MHZ,通过PLL提高系统时钟:MPLL和UPLL(S3C2440);UPLL用于USB设备,MPLL用于FCLK、HCLK、PLCK (3 )上电 FCLK=Fin(外部输入时钟) 设置MPLL
[单片机]
如何使用MPLAB代码配置配置增强型PWM模块
本在之前实验的基础上,继续向大家介绍如何使用代码配置器配置增强型PWM模块,并使用生成的代码产生增强型PWM的输出。
[机器人]
一种MCU时钟系统的设计
摘要:介绍了一个基于MCU内核的时钟系统的设计,给出了其电路结构并详细地分析了系统的工作原理。该系统能生成两相不重叠时钟,利用静态锁存器保存动态信息,提供三种电源管理方式以适应低功耗应用。在上华(CSMC)0.6μm工艺库下,利用Cadence EDA工具对电路进行了仿真,仿真结果验证了设计的准确性。 关键词:微控制器 时钟系统 两相不重叠时钟 时钟系统是微控制器(MCU)的一个重要部分,它产生的时钟信号要贯穿整个芯片。时钟系统设计得好坏关系到芯片能否正常工作。 在工作频率较低的情况下,时钟系统可以通过综合产生,即用Verilog/VHDL语言描述电路,并用EDA工具进行综合。然而,用工具综合存在电路性能低、优化率不高的问
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

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

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty