STM32之HAL开发——RCC外设&CubeMX配置时钟

RCC外设介绍

RCC是Reset and Clock Control (复位时钟控制)的缩写,它是STM32内部的一个重要外设,负责管理各种时钟源和时钟分频,以及为各个外设提供时钟使能。RCC模块可以通过寄存器操作或者库函数来配置。

RCC是复位和时钟控制模块,它负责管理STM32内部的各种时钟源和时钟分频,以及为各个外设提供时钟使能。时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的指令。不同的外设可能需要不同的时钟频率,所以RCC模块可以通过寄存器操作或者库函数来配置系统时钟和总线时钟。

RCC复位部分

系统复位

系统复位将复位所有寄存器至它们的复位状态。 当发生以下任一事件时,产生一个系统复位:

  • NRST引脚上的低电平(外部复位) 
  •  窗口看门狗计数终止(WWDG复位)
  • 独立看门狗计数终止(IWDG复位)
  • 软件复位(SW复位)
  • 在进入待机模式时产生低功耗管理复位: 通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。
  • 在进入停止模式时产生低功耗管理复位: 通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。这时,即使执行了进入停机模式的过程,系统将被复位而不是进入停机模式。

关于用户选择字节的进一步信息,请参考STM32F10xxx闪存编程手册。

电源复位

电源复位当以下事件中之一发生时,产生电源复位:

  • 上电/掉电复位(POR/PDR复位)
  • 从待机模式中返回

备份域复位

备份区域拥有两个专门的复位,它们只影响备份区域。 当以下事件中之一发生时,产生备份区域复位。

  • 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)中的BDRST位产生。
  • 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。

RCC时钟控制部分

时钟是STM32内部最核心的器件,它可以提供时钟信号。依赖于这个信号,STM32中的器件才可以有条不紊地将工作进行下去。

STM32中能够主动发出时钟信号的元器件,可以用作时钟源。STM32中有四个时钟源,还有一个辅助时钟源生成倍频时钟信号的器件锁相环

时钟源有以下几种:

  1. HSE 外部高速时钟
  2. HSI 内部高速时钟
  3. LSE 外部低速时钟
  4. LSI 内部低速时钟
  5. PLL锁相环

CubeMX配置时钟

首先在软件中先选择RCC时钟来源,一般使用外部高速晶振
紧接着在选择PLCLK,在鼠标区域输入需要的晶振频率即可一键配置完成,不需要考虑分频,倍频等其他需要自己计算的因素。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于STM32HAL时钟配置,我可以给你一些简单的介绍: 在使用STM32HAL库时,需要先对芯片的时钟进行配置,以确保正确的时钟频率和时钟源。 1. 配置时钟源:根据芯片型号和应用场景选择合适的时钟源,包括内部RC振荡器、外部晶体振荡器、PLL等。 2. 配置时钟分频器:根据需要对时钟频率进行分频,以得到所需的系统时钟、总线时钟外设时钟等。 3. 配置时钟使能:使能所需的时钟源和分频器,以确保时钟系统正常工作。 关于具体的代码实现,你可以参考STM32HAL库提供的时钟配置函数,如下所示: ``` /* 配置时钟源为外部晶体振荡器 */ RCC_OscInitTypeDef RCC_OscInitStruct; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 8; RCC_OscInitStruct.PLL.PLLN = 336; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 7; HAL_RCC_OscConfig(&RCC_OscInitStruct); /* 配置时钟分频器和使能外设时钟 */ RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5); ``` 以上只是一个简单的示例,具体的实现要根据应用场景和芯片型号进行调整。如果你需要更详细的信息,可以参考STM32HAL库的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值