STM32CubeMX时钟配置详解

软件:
(1)STM32CubeMX
(2)SW4STM32
实验平台:STM32F407VET6开发板


使用STM32CubeMX的一个好处就是图形化配置,在时钟配置方面,主要了解清楚高级外设总线(APB1、APB2)控制哪些外设。
(0)先配置好PA6、PA7(控制LED灯),好观察实验现象
这里写图片描述
(1)首先配置RCC(复位和时钟控制),选择外部高速始终,如下图
这里写图片描述

(2)为了测试不同APB的时钟频率效果,在此选择了TIM1和TIM2,按下图配置
这里写图片描述

(3)为什么选择以上两个定时器作为例子?参考STM32F4XX中文参考手册,找到RCC相关内容,如图
这里写图片描述
这里写图片描述
可知TIM1APB2TIM2APB1

(4)进入时钟配置,我的STM32F407开发板外部晶振是8MHz的,在Input freequency 输入8,在HCLK 那里会提示最大频率168MHz,输入168,然后自动寻求配置,注意第一次配置出来的还是内部时钟HSI 的,要选择为HSE ,配置好后如下图
这里写图片描述
顺便提一下,STM32F103的开发板也差不多的,只不过F1的最高时钟频率是72MHz。
(5)配置好后时钟后可以看到APB1 定时器(如TIM2)频率为84MHz,APB2 定时器(如TIM1)频率为168MHz

(6)设置NVIC,TIM1是高级定时器,选择更新中断,TIM2是通用定时器
这里写图片描述
这里写图片描述
除了定时器,我自己还设置了两个串口中断,可以不用理会

(7)设置定时器
这里写图片描述
这里写图片描述
上面两个定时器设置实现的都是定时1s进入中断处理。


以TIM1为例,APB2时钟频率168MHz=168,000,000Hz,选取预分频系数(Prescaler)(16位存储,预分频系数最大65535)为16799,则定时器的时钟频率为168,000,000 / 16800 = 10000 Hz,频率为1万赫兹,选取计数周期(Counter Period,16位存储)为9999, 所以定时周期1s,同理TIM2也是同样计算,如果APB的时钟频率改变,一样安装上面的方法进行设置。

(8)生成SW4STM32工程,打开,在main函数里面while前启动定时器,如下代码

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  HAL_TIM_Base_Start_IT(&htim1);/启动定时器
  HAL_TIM_Base_Start_IT(&htim2);
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

(9)编写定时器中断

/* USER CODE BEGIN 4 */

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)	// 判断哪个定时器中断
	{
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_6);	// 翻转灯
	}
	if(htim->Instance == TIM1)	// 判断哪个定时器中断
	{
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_7);	// 翻转灯
	}

}

/* USER CODE END 4 */

最后烧写到开发板实现预定效果,对定时器中断的详细视频介绍可以参考博主制作的相关视频,一个是在proteus仿真实现的,另一个是结合freertos实现的:https://www.bilibili.com/video/av63392182, https://www.bilibili.com/video/av63560586

  • 30
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 新版STM32CubeMX时钟配置是指在进行STM32微控制器的硬件设计时,使用最新版本的STM32CubeMX软件工具来配置系统时钟。 在新版STM32CubeMX中,时钟配置变得更加简单和直观。首先,我们选择所需的STM32微控制器型号,并创建新的工程。然后,在时钟配置选项卡中,可以对时钟进行全面和灵活的配置。 首先,我们需要选择外部时钟源,例如晶体振荡器或外部时钟信号。然后,我们可以设置各个时钟源的频率和分频系数,以满足系统的要求。此外,我们还可以配置PLL(锁相环)以生成所需的系统时钟频率。 另外,新版STM32CubeMX还提供了更多的选项和功能,以便进一步调整时钟配置。例如,我们可以选择为特定的外设配置独立的时钟源,以最大程度地提高系统性能。此外,我们还可以通过启用或禁用时钟输出来控制时钟的输出和传输。 最后,在完成时钟配置后,STM32CubeMX会自动生成相应的初始化代码,包括时钟配置和初始化函数。我们只需将这些代码导入到我们的工程中,即可轻松地配置和使用时钟。 总的来说,新版STM32CubeMX时钟配置功能更加强大和易于使用,可以满足不同应用需求下的时钟设计要求,并提供了自动生成初始化代码的便利。 ### 回答2: 新版STM32CubeMX是一款用于配置STM32微控制器的软件工具。时钟配置是其中最重要的功能之一。 时钟配置对于微控制器的正常运行至关重要。在新版STM32CubeMX中,我们可以通过图形化界面来配置时钟。首先,我们需要选择要配置时钟源,如内部振荡器(HSI、LSI)或外部振荡器(HSE、LSI)。 然后,我们可以选择时钟源的频率。对于内部振荡器,我们可以选择16MHz(HSI)或32kHz(LSI)。对于外部振荡器,我们需要根据实际硬件连接来选择合适的频率。 此外,新版STM32CubeMX还提供了时钟树图,用于显示时钟配置的数学关系。我们可以看到每个时钟源的频率以及它们如何分配给不同的模块(例如CPU、外设等)。 配置时钟后,我们还可以生成初始化代码,并将其导入到STM32CubeIDE或其他开发环境中。这样,我们就可以在程序中轻松访问和控制时钟。 总而言之,新版STM32CubeMX提供了一种简便的方式来配置STM32微控制器的时钟。通过图形化界面和时钟树图,我们可以轻松地设置时钟源和频率,并生成相应的初始化代码。这极大地简化了开发人员的工作,并确保微控制器能够正常运行。 ### 回答3: 新版STM32CubeMX时钟配置是针对STMicroelectronics的STM32多功能微控制器设计的一种工具,可用于更方便地配置微控制器的时钟源和时钟分频器。 新版STM32CubeMX提供了直观的用户界面,可通过图形化的方式配置时钟源并设置分频器。用户可以选择使用内部时钟源,如HSI(高速内部时钟)、HSI48(48MHz内部时钟)或LSE(低速外部时钟),也可以选择使用外部时钟源,如HSE(高速外部时钟)或LSE。 在时钟配置中,用户可以通过拖拽控件与时钟树进行交互。用户可以选择适当的时钟源,然后设置各个时钟分频器的分频系数,以满足系统的需求。配置完成后,用户可以生成相应的代码和初始化配置文件,以便在使用STM32芯片进行嵌入式软件开发时直接使用。 新版STM32CubeMX时钟配置在用户友好性和可视化方面进行了改进,使得开发者更容易理解和配置时钟源和分频器。此外,它还兼容不同型号的STM32芯片,同时提供了实时时钟(RTC)配置等其他选项,以供全面的配置。 总之,新版STM32CubeMX时钟配置是一种简单、便捷的工具,可帮助开发者在设计STM32微控制器的时钟源和时钟分频器时节省时间和精力。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值