历史上的今天
返回首页

历史上的今天

今天是:2025年07月30日(星期三)

正在发生

2019年07月30日 | 学习笔记∣stm32l0xx时钟系统详解与代码配置

2019-07-30 来源:eefocus

时钟是嵌入式系统的脉搏,对嵌入式系统至关重要。处理器内核在时钟驱动下完成状态变换等动作,外设部件在时钟的驱动下完成各种工作,比如串口数据的发送、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);

}


推荐阅读

史海拾趣

和芯润德(CoreChips)公司的发展小趣事

在2010年代初,中国的集成电路市场仍被国际巨头所主导,技术壁垒高筑。然而,和芯润德科技有限公司(以下简称“和芯润德”)却勇敢地挑战了这一现状。公司创始人团队凭借对技术的深刻理解和不懈追求,成功研发出首款具有自主知识产权的以太网网络芯片,打破了美系技术的长期垄断。这一突破不仅为和芯润德赢得了市场的认可,也为中国集成电路产业赢得了宝贵的尊严。

Hokuriku公司的发展小趣事

在20世纪70年代,电子行业正处于快速发展期,对高精度、高稳定性的电子元器件需求激增。Hokuriku Electric凭借其深厚的技术积累,成功研发出新一代高精度金属板电阻器。这款电阻器不仅具有极低的温度系数和出色的长期稳定性,还大幅提升了电子设备的性能和可靠性。这一技术突破迅速赢得了市场的广泛认可,使Hokuriku Electric在电阻器领域崭露头角,为后续发展奠定了坚实基础。

Ford Aerospace & Communications Corp公司的发展小趣事

在20世纪20年代,亨利·福特不仅专注于汽车制造业,还展现了对航空技术的浓厚兴趣。他资助了威廉·布什纳尔·斯道特(Willam Bushnell Stout)的飞机研发项目,这标志着福特向航空领域的初步探索。斯道特设计的福特三发飞机(后被称为“铁皮鹅”)虽未直接成为商业成功的典范,但它为福特汽车公司积累了宝贵的航空技术经验,也为后续可能的航空通信项目奠定了基础。

ERGOBAHCO公司的发展小趣事

ERGOBAHCO公司成立于20世纪90年代初,当时正值电子行业快速发展的黄金时期。公司创始人李明(化名)看准了市场对于高质量电子配件的需求,决定从电子连接器这一细分领域入手。然而,初创时期公司面临着资金短缺、技术落后等诸多挑战。李明凭借对市场敏锐的洞察力,成功争取到了几笔关键的投资,并带领团队攻克了一系列技术难关。通过不懈努力,ERGOBAHCO公司逐渐在电子连接器领域站稳了脚跟。

Display Elektronik GmbH公司的发展小趣事

Display Elektronik GmbH公司自创立之初,就致力于显示技术的研发与创新。在21世纪初,公司推出了一款采用全新显示技术的液晶显示屏,其高分辨率、低功耗和长寿命的特点迅速赢得了市场的认可。随着技术的不断迭代,Display Elektronik GmbH逐步确立了在显示技术领域的领先地位。

Digital Voice Systems Inc公司的发展小趣事

Digital Voice Systems, Inc.(DVSI)于1988年成立,当时正值数字通信技术的兴起阶段。公司创始人凭借对语音编解码技术的深刻理解和前瞻性的市场洞察力,决定投身于这一领域。他们开发出了具有专利保护的基于鲁棒性多带激励模型(MBE Model)的低码率语音压缩算法,如IMBE和AMBE编解码系统。这些算法在当时的市场上独树一帜,为DVSI赢得了第一桶金。

在创立初期,DVSI面临着资金、技术、市场等多方面的挑战。然而,他们凭借着坚定的信念和不懈的努力,逐步克服了这些困难。他们不断投入研发,优化算法,提高产品的性能和稳定性;同时,他们积极开拓市场,与各大通信设备制造商建立合作关系,将产品推向市场。

随着时间的推移,DVSI的产品逐渐在市场上获得了认可。他们的编解码系统被广泛应用于移动通信、卫星通信、军事通信等领域,为客户提供了高效、稳定的语音通信解决方案。DVSI也因此逐渐崭露头角,成为了电子行业中一颗耀眼的明星。

故事二至五框架概述

  1. 技术创新与突破:DVSI在语音编解码技术方面的持续创新,如推出新一代的高效压缩算法,进一步提升了产品的竞争力。
  2. 市场拓展与国际化:随着公司实力的增强,DVSI开始拓展国际市场,与全球多家知名企业建立合作关系,实现了国际化发展。
  3. 合作与竞争:在电子行业中,DVSI与其他企业的合作与竞争并存。他们通过合作共赢的方式,共同推动行业的发展;同时,也面临着来自竞争对手的挑战和竞争压力。
  4. 企业文化与团队建设:DVSI注重企业文化建设,倡导创新、协作、共赢的价值观。他们注重团队建设,吸引了一批优秀人才加入公司,为公司的发展提供了有力的人才保障。

以上故事和框架概述仅供参考,您可以根据这些线索进一步挖掘和编写关于DVSI公司的故事。

问答坊 | AI 解惑

用10个漂亮问题完美结束面试

本帖最后由 paulhyde 于 2014-9-15 09:41 编辑 在面试结束前,大多数的主考官都会丢问题给求职者,最常见的就是:你有没有什么问题或疑问,想要提出来的?无论求职者是否有提出问题,其实,这个问题背后的真正含意,通常是主考官用来测试你对这份 ...…

查看全部问答>

找工作,选择比努力更重要

选择比努力更重要 一个人一生当中最大的幸福在于选择对两件事,一是找对单位、找对老板、找对上司;第二件事就是找对妻子或丈夫。为什么这么说呢?当太阳升起时我们与上司共事,当日落西下,我们与自己的爱人相拥。你永远可以更主动地去影响你的上 ...…

查看全部问答>

求助:51与8155连接问题,模拟端口方式

如题,因为8155只需要低八位地址,P2想留做他用,故想采用普通IO模拟地址总线、ALE、WR等端口方式实现。按照时序图写出程序,但实验失败,在此求助,先谢过啦。代码如下: #include #include sbit AL = P2^0;    //ALE sbit W = P2^2 ...…

查看全部问答>

LCD液晶的操作

1602液晶:2行,每行16个点 主要看“写指令”和“写数据”,因为E=高脉冲,所以在初始化的时候要给E低电平,为高脉冲做准备。 1602液晶的屏幕地址,且以0x80为基地址。 在初始化中的指令码对应下表: 我写的LC ...…

查看全部问答>

如何获取WIFI的NIC_STATISTICS

直接用如下代码获取,返回值为TRUE,得不到数据:         memset(&m_nicdata, 0, sizeof(m_nicdata));         m_nicdata.Size = sizeof(NIC_STATISTICS);         m_nicdata.ptc ...…

查看全部问答>

求购在WINCE6.0下,A4平台上运行的TCPMP源码,价钱面议

在下求购能在WINCE6.0下,A4平台上运行的TCPMP源码. 本人在深圳 南山,西丽. QQ 50580776 EMAIL: gmb_669@163.com…

查看全部问答>

EVC下将LPBYTE转换成LPWSTR,谢谢!

LPBYTE lpByte; 如何转化为LPWSTR类型呢?…

查看全部问答>

求教!!t6963c的程序,没有任何字符或者汉字显示出来。用c写的。

#ifndef _lcd_ #define _lcd_ #include #include #define LineChar 30 #define ColumnChar 16 #define comport  0x8001 #define dataport 0x8000 #define unchar unsigned char #define unint  unsigned int sfr ...…

查看全部问答>

stm32+enc28j60在ucos系统下实现UDP协议网络收发,上源码~

说    明:本例程是基于STM32_V3.4固件函数库的uCOSII网络通讯实例,在MDK4.12中编译通过。 操作过程:1、打开APP文件夹的MDK工程文件,编译后下载到开发板;           2、打开“串口调试程序”,选 ...…

查看全部问答>

强烈建议用vs 2010 或者更高的版本去模拟raw os.

raw os 的所有的模块都能在vc  上去模拟和debug, 功能是无比强劲的,也是非常方便的。对于公司的后期开发也是非常方便,能迅速在PC上搞定,直接下载板子里去,迅速出产品。 广大的爱好者完全没必要去买开发板,只要有VC 就可以去学习嵌 ...…

查看全部问答>