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

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

    关注

    184

    文章

    17742

    浏览量

    250569
  • 控制系统
    +关注

    关注

    41

    文章

    6630

    浏览量

    110655
  • 时钟
    +关注

    关注

    11

    文章

    1735

    浏览量

    131543
收藏 人收藏

    评论

    相关推荐

    北斗卫星同步时钟系统:精准时间的秘密

    办公楼中,所有的电脑、时钟甚至是楼宇的自动化系统,都显示着同一个时间。这个时间均来源于北斗卫星同步时钟系统。这个系统由一个母钟(主
    的头像 发表于 12-03 14:19 180次阅读
    北斗卫星同步<b class='flag-5'>时钟</b><b class='flag-5'>系统</b>:精准时间的秘密

    北斗卫星时钟系统——ZREXT2000卫星时钟扩展分机

          卫星时钟系统 是专为大型电站、电厂设计的多种输出接口的冗余接收系统,  北斗/GPS卫星时钟系统 采用2台北斗/GPS主
    的头像 发表于 11-11 14:37 204次阅读
    北斗卫星<b class='flag-5'>时钟</b><b class='flag-5'>系统</b>——ZREXT2000卫星<b class='flag-5'>时钟</b>扩展分机

    CPU时钟周期的组成和作用

    CPU时钟周期是计算机体系结构中一个至关重要的概念,它直接关联到CPU的运行速度和性能。以下是对CPU时钟周期的定义、组成和作用的详细解析。
    的头像 发表于 09-26 15:32 679次阅读

    时钟噪声对DAC性能影响系统分析

    电子发烧友网站提供《时钟噪声对DAC性能影响系统分析.pdf》资料免费下载
    发表于 09-26 09:14 0次下载
    <b class='flag-5'>时钟</b>噪声对DAC性能影响<b class='flag-5'>系统分析</b>

    液压伺服控制系统组成及其组成部件的作用

    液压伺服控制系统是一种利用液压技术实现高精度、高速度、高稳定性的控制方式,广泛应用于工业自动化、航空航天、机器人等领域。本文将详细介绍液压伺服控制系统组成及其
    的头像 发表于 06-14 11:03 1619次阅读

    运动控制系统由什么组成

    运动控制系统是一种用于控制机械运动的系统,它能够根据预定的轨迹和速度对机械进行精确控制。运动控制系统广泛应用于工业自动化、机器人技术、航空航
    的头像 发表于 06-12 10:51 1550次阅读

    机械运动控制系统组成和应用

    机械运动控制系统,作为现代机械工程领域的重要组成部分,对于实现机械设备的自动化、智能化和精确控制具有至关重要的意义。随着科技的不断进步和工业自动化水平的不断提高,机械运动控制系统的应用
    的头像 发表于 06-07 14:46 1409次阅读

    闭环控制系统的原理和组成

    与期望的输出进行比较,进而调整系统输入,以实现系统输出的精确控制。本文将详细介绍闭环控制系统的定义、原理、组成及其在各领域的应用。
    的头像 发表于 06-05 17:21 2227次阅读

    运动控制系统组成与作用

    运动控制系统作为现代自动化技术的核心之一,其广泛应用于工业自动化、机器人技术、精密制造等领域。它通过控制电机或其他执行器,使机器或设备按照预期的轨迹和速度运动,实现自动化操作。本文将对运动控制系统
    的头像 发表于 06-05 16:35 2588次阅读

    工业控制系统组成和应用

    效率、降低了生产成本,并为企业的可持续发展提供了有力支持。本文将详细介绍工业控制系统的定义、组成、应用领域以及未来发展趋势。
    的头像 发表于 06-04 15:54 1268次阅读

    PLC远端控制系统是什么?PLC远端控制系统组成

    )对PLC进行编程、监控、数据采集、故障诊断和控制调整。 PLC远端控制系统统通常包含以下几个关键组成部分: 1、PLC(可编程逻辑控制器):作为
    的头像 发表于 05-28 14:51 620次阅读

    几款高精度时钟芯片的规格选型分析

    几款高精度时钟芯片,几乎很多应用都需要精确的计时例如银行系统,安全系统和电能表等。获得高精度实时时钟芯片的关键在于:精确频率振荡设备,以及用于控制
    发表于 05-13 11:50 0次下载

    RCC_ADCCLKConfig函数的ADC时钟是默认的吗?

    ADC配置中,没有找到配置ADC时钟的函数RCC_ADCCLKConfig;ADC时钟是默认的吗?
    发表于 03-28 08:36

    如何解决同步时钟系统中的常见问题和故障?

    天线是时钟同步系统中至关重要的组成部分,其故障可能会导致时间同步精度下降或无法正常工作。故障原因可能包括天线损坏、连接线松动等。 时间同步精度不够 时钟同步
    的头像 发表于 03-19 10:42 1645次阅读
    如何解决同步<b class='flag-5'>时钟</b><b class='flag-5'>系统</b>中的常见问题和故障?

    控制系统之间如何实现时钟同步?

    控制系统之间如何实现时钟同步? 控制系统之间的时钟同步是确保不同系统之间的时钟保持一致的过程。它
    的头像 发表于 01-16 14:37 1142次阅读