历史上的今天
返回首页

历史上的今天

今天是:2024年12月26日(星期四)

正在发生

2018年12月26日 | STM32—RCC时钟

2018-12-26 来源:eefocus

前言:

最近在调试STM32L152芯片,本文总结下STM32L152的RCC时钟配置方法。


硬件平台:STM32L152


软件平台:keil v5+cubeMX


函数库:HAL库


内容:


        RCC:Reset and Clock Control,复位与时钟控制系统。系统复位有三种:系统复位、电源复位、RTC domain复位。复位内容本文暂不详解,本文重点详解Clock Control部分。下面看下STM32L152芯片的时钟框图和cubeMX软件中的时钟框图。


如上图所示,在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。


①HSI:High Speed Internal,高速内部时钟,RC振荡器;

②HSE:High Speed External,高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源;

③LSI:Low Speed Internal,低速内部时钟,RC振荡器,频率为37kHz;

④LSE:Low Speed External,低速外部时钟,接频率为32.768kHz的石英晶体;

⑤PLL:Phase Locked Loop,锁相环倍频分频输出。


另外,STM32还具有双时钟机制,即时钟安全系统CSS(Clock Security System)。在外部晶振不工作时,转而使用内部RC振荡器作为自己时钟心跳保证系统正常运行。当外部晶振恢复正常后,重新使用外部晶振。


上图中也提到3种时钟,FCLK、HCLK和PCLK。简单介绍下三种时钟。


(1)FCLK:Free Running Clock,为CPU提供时钟信号,平时说的CPU主频,就是这个时钟信号,1/Fclk即为CPU时钟周期;


(2)HCLK:为AHB bus peripherals提供时钟信号,AHB:advanced high-performance bus;HCLK是高速外设时钟,一般给内存、flash提供时钟。


(3)PCLK:为APB bus peripherals供给时钟信号,APB:advanced peripherals bus;PCLK是低速外设时钟,一般给CAN、USB、I2C、USART、SPI、Timer、ADC和DAC提供时钟信号。下面结合Cubemx生成的系统时钟原程序进行分析。


void SystemClock_Config(void)

{

 

 

  RCC_OscInitTypeDef RCC_OscInitStruct;

  RCC_ClkInitTypeDef RCC_ClkInitStruct;

  RCC_PeriphCLKInitTypeDef PeriphClkInit;

 

 

    /**Configure the main internal regulator output voltage 

    */

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//设置调压器输出电压级别1,用来设置调压器输出电压级别,器件未以最大                                                                   频率工作,达到性能和功耗平衡

 

 

 

 

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

    */

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSI

                              |RCC_OSCILLATORTYPE_HSE;

  RCC_OscInitStruct.HSEState = RCC_HSE_ON;

  RCC_OscInitStruct.HSIState = RCC_HSI_ON;

  RCC_OscInitStruct.HSICalibrationValue = 16;//HSI时钟16M

  RCC_OscInitStruct.LSIState = RCC_LSI_ON;

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;//PLL时钟源为HSE

  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL8;//8倍频

  RCC_OscInitStruct.PLL.PLLDIV = RCC_PLL_DIV2;//2分频

  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)//初始化

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

 

    /**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_PLLCLK;

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;//AHB 1分频

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;//APB1 1分频

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;//APB2 1分频

 

 

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)//初始化

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

 

  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC;

  PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSI;//RTC时钟选择LSI

  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)

  {

    _Error_Handler(__FILE__, __LINE__);

  }

 

 

    /**Configure the Systick interrupt time 

    */

  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);//滴答定时器配置

 

 

    /**Configure the Systick 

    */

  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);//滴答定时器选择HCLK 不分频

 

 

  /* SysTick_IRQn interrupt configuration */

  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);//滴答定时器中断优先级

}

 

推荐阅读

史海拾趣

BENCENT公司的发展小趣事

在取得一系列成绩的同时,BENCENT公司也始终关注可持续发展。公司注重环保和节能技术的研发和应用,致力于为客户提供更加环保、高效的电子产品。同时,公司还积极参与社会公益事业,回馈社会。展望未来,BENCENT公司将继续坚持创新驱动、质量为本的发展理念,不断推动电子行业的进步和发展。


请注意,这些故事仅为框架性的描述,并未包含具体的细节和数据。您可以根据BENCENT公司的实际情况和发展历程,对这些故事进行进一步的丰富和完善。同时,确保在描述事实时保持客观公正的态度,避免加入主观评价。

FRONTIER公司的发展小趣事

背景:FRONTIER Electronics作为一家专注于无源元件和集成无源元件设计与制造的公司,自成立以来便致力于技术创新。

发展故事:在21世纪初,FRONTIER Electronics凭借其在电感器、变压器、二极管等领域的深厚技术积累,成功推出了一系列高性能、高可靠性的电子产品。随着市场需求的不断增长,公司逐步扩大生产规模,并在全球范围内建立了完善的销售网络。通过持续的技术研发和市场拓展,FRONTIER Electronics逐渐在电子行业中崭露头角,成为该领域的领军企业之一。

Hpc Technology Inc公司的发展小趣事

背景:此故事基于假设存在一个专注于超级计算机研发的FRONTIER公司。

发展故事:近年来,随着大数据和人工智能技术的飞速发展,超级计算机在科研、工业等领域的应用越来越广泛。FRONTIER Supercomputing作为该领域的佼佼者,成功研发出了世界上首台突破百亿亿次计算瓶颈的超级计算机——Frontier。该计算机以其卓越的性能和广泛的应用价值,在多个领域取得了突破性成就,如太空探索、气候建模、基因组学等。Frontier的成功不仅为公司赢得了国际声誉,也为全球科技进步贡献了重要力量。

Corporation Soneet公司的发展小趣事

然而,随着市场竞争的加剧,Soneet也面临着来自同行的挑战。为了应对这些挑战,Soneet不断加强研发投入,提升技术创新能力。同时,公司还通过优化生产流程、降低成本等方式,提高产品的竞争力。这些措施使得Soneet能够在激烈的市场竞争中保持领先地位。

DURATOOL公司的发展小趣事

DURATOOL公司自成立以来,一直致力于电子工具的技术创新。在20世纪90年代,公司研发出了一款具有革命性的数字万用表,该产品在精确度、稳定性和操作便捷性方面均大幅超越当时的市场主流产品。这一创新不仅为DURATOOL公司赢得了大量忠实用户,也为其在电子测量工具市场树立了技术领先的形象。随后,DURATOOL公司不断加大研发投入,推出了一系列具有竞争力的新产品,逐步巩固了其在电子工具行业的领先地位。

ATC [American Technical Ceramics]公司的发展小趣事

电子行业是一个充满竞争和变化的领域,企业需要不断创新才能应对市场的挑战。假设ATC在面对激烈的市场竞争时,始终保持对创新的追求和投入。公司不仅注重产品技术的创新,还积极探索新的商业模式和市场策略。通过不断创新,ATC成功应对了市场的各种挑战,保持了稳健的发展态势。

问答坊 | AI 解惑

学习型89S51/52 USB口ISP 微型界面

引用:原帖由 soso 于 2009-2-27 14:57 发表 能否将图列出来 再放一些技术参数呢,这样可以更直接看到 按SOSO所说,我分两个主题发,因为跟贴后面没有找到附件按钮 …

查看全部问答>

GPS导航仪使用的路径规划算法一般是什么?

RT。 是dijkstra么? 可是o(n^2)的复杂度就算是一个城市,GPS导航仪的芯片也承受不下来啊。 或者是什么近似算法?…

查看全部问答>

高分求助:Ardence RTX下网卡驱动只能收不能发

在Ardence RTX 8.1(一个windows下的实时平台,www.ardence.com)开发环境下, intel 82566 mm网卡的驱动程序,能收到数据,但是发送失败 据说是AMT的影响,但是我们明明在BIOS里禁用了这个东西。 而且windows下和linux下的驱动程序都是工作的好 ...…

查看全部问答>

vc2005开发的智能设备ocx使用哪个命令能在pda上注册? 注册时这个ocx是不是必须在windows目录下?

vc2005开发的智能设备ocx使用哪个命令能在pda上注册? 注册时这个ocx是不是必须在windows目录下?…

查看全部问答>

各位高手快来看看啊,现在在做一个网口芯片的驱动设计,但是调过后发现只能发送数据,接收端接收不到数据是什么原因呢?

目前在调DM9000快速以太网网口芯片,按照硬件手册,编写驱动程序,但是上板子上调了以后,发现只可以发送数据,却不能够接收到数据,请问有没有哪位高手做过这个,可不可以给我说说这会是什么样的原因,可能是硬件的原因,还是我编写的软件程序有问 ...…

查看全部问答>

S3C2410 驱动编写的问题,急急急?

arm-linux-gcc -D__KERNEL__ -I/friendly-arm/kernel/include -Wall -Wstrict-prototypes -Wno-trigraphs -Os -mapcs -fno-strict-aliasing -fno-common -fno-common -pipe -mapcs-32 -march=armv4 -mtune=arm9tdmi -mshort-load-bytes -msoft-floa ...…

查看全部问答>

同时实现两个功能

一个小程序,两个子函数分别为控制流水灯和让电机旋转,想让两个功能同时实现,下到单片机里时两个功能不能同时进行,灯亮时电机不旋转,电机旋转时灯不亮,请大家帮忙看一下,我初学avr,谢谢大家的指教,程序如下 #include <iom16v.h>#inclu ...…

查看全部问答>

st最便宜的mcu是什么型号,可以做到什么价格?

量30K每月,rom 4k,带adc和pwm,14pin就够,基本上的ic都有…

查看全部问答>

大家啊来说说都有哪些比较好的MSP430学习的网站吧

EG3关于嵌入式开发的站点,提供非常多关于嵌入式开发的资料。包括开发公司,技术文档,免费资源等等。版面包括busses & boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,system-on-a-chip 等等。强烈推荐http:// ...…

查看全部问答>

9B96的以太网PHY接隔离变压器后能直接接光模块吗

9B96的以太网PHY接隔离变压器后能直接接光模块吗?求解啊…

查看全部问答>