0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RCC时钟控制系统组成及时钟原程序分析

牵手一起梦 来源:eefocus 作者:eefocus 2020-01-24 17:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

RCC时钟控制系统组成及时钟原程序分析

RCC时钟控制系统组成及时钟原程序分析

RCC时钟控制系统组成及时钟原程序分析

如上图所示,在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是低速外设时钟,一般给CANUSBI2C、USART、SPI、Timer、ADCDAC提供时钟信号。下面结合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);//滴答定时器中断优先级

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电源
    +关注

    关注

    185

    文章

    18979

    浏览量

    264474
  • 控制系统
    +关注

    关注

    41

    文章

    6987

    浏览量

    114376
  • 时钟
    +关注

    关注

    11

    文章

    1999

    浏览量

    135226
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    SysClk系统时钟的切换

    系统时钟 SysClk 可选择 5 种时钟源,包括 HSE、LSE、PLL、HSI、LSI,通过对系统控制寄存器 SYSCTRL_CR0的 SYSCLK 位域进行设置,可在不同
    发表于 12-16 08:00

    PLC控制系统应用的抗干扰问题分析及处理措施

    控制精度下降,甚至引发设备故障。本文将深入分析PLC控制系统应用中常见的干扰问题,并提出相应的处理措施,为工业自动化系统的稳定运行提供参考。 一、PLC
    的头像 发表于 12-12 07:43 1531次阅读
    PLC<b class='flag-5'>控制系统</b>应用的抗干扰问题<b class='flag-5'>分析</b>及处理措施

    安徽京准:NTP电子时钟系统 子母钟系统 成果展示#

    时钟系统
    ahjzdz
    发布于 :2025年11月26日 10:55:27

    停车的时长准不准?铁路时钟系统、铁路时钟、铁路授时

    时钟系统
    西安同步电子科技有限公司
    发布于 :2025年11月12日 17:41:04

    铁路时钟系统介绍、时钟系统、授时服务器

    时钟系统
    西安同步电子科技有限公司
    发布于 :2025年11月12日 17:39:23

    指针式时钟 单面网络子钟

    时钟
    jf_47371611
    发布于 :2025年09月12日 13:38:52

    瑞萨RA系列FSP库开发实战指南(29)CGC(时钟生成电路)时钟控制

    Circuit,中文译为“时钟生成电路”,或者也可以叫它“时钟控制电路”。 13.1.1 时钟源 我们学过《数字逻辑电路》知道,在芯片集成电路的
    的头像 发表于 08-05 14:02 3582次阅读
    瑞萨RA系列FSP库开发实战指南(29)CGC(<b class='flag-5'>时钟</b>生成电路)<b class='flag-5'>时钟</b><b class='flag-5'>控制</b>

    赛思电子时钟缓冲器的组成与应用介绍

    时钟缓冲器是现代电子系统中重要的组成部分,它可以有效地解决时钟信号在长距离传输和电路间切换时遇到的问题。在大多数电子设备中,时钟信号被用来同
    的头像 发表于 07-15 17:27 732次阅读
    赛思电子<b class='flag-5'>时钟</b>缓冲器的<b class='flag-5'>组成</b>与应用介绍

    时钟系统推荐,时钟系统哪家好?赛思时钟系统助力中国气象科学研究院构建智慧气象网络

    时钟系统推荐,时钟系统哪家好?赛思时钟系统助力中国气象科学研究院构建智慧气象网络
    的头像 发表于 05-20 09:32 1012次阅读
    <b class='flag-5'>时钟</b><b class='flag-5'>系统</b>推荐,<b class='flag-5'>时钟</b><b class='flag-5'>系统</b>哪家好?赛思<b class='flag-5'>时钟</b><b class='flag-5'>系统</b>助力中国气象科学研究院构建智慧气象网络

    时钟电路的组成与设计要点介绍

    在数字电子系统的运行中,时钟电路掌控着各部件协同工作的节奏。它通常由时钟发生器、时钟分频器、时钟缓冲器等核心部分构成,这些组件各司其职,共同
    的头像 发表于 05-05 15:40 2070次阅读

    电机微机控制系统可靠性分析

    可靠性是电机微机控制系统的重要指标,延长电机平均故障间隔时间(MTBF),缩短平均修复时间(MTTR)是可靠性研究的目标。电机微机控制系统的故障分为硬件故障和软件故障,分析故障的性质和产生原因,有
    发表于 04-29 16:14

    FPGA时序约束之设置时钟

    Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束中设置了时钟组或false路径。使用set_clock_groups命令可以使时序
    的头像 发表于 04-23 09:50 1637次阅读
    FPGA时序约束之设置<b class='flag-5'>时钟</b>组