最详细STM32,cubeMX 定时器

这篇具有很好参考价值的文章主要介绍了最详细STM32,cubeMX 定时器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章将详细介绍 STM32,cubeMX 定时器的配置和使用。


前言

  • 实验开发板:STM32F103C8T6。
  • 所需软件:keil5 , cubeMX 。
  • 实验目的:了解 cubeMX 定时器 的配置和使用。
  • 实验:使用定时器控制 led 闪烁。

一、定时器基础知识

STM32的定时器是用于时间测量和事件生成的复杂工具。可以使用内部或外部时钟源。时钟源和分频设置将决定定时器计数的速度。

定时器可以配置为在特定事件(如溢出或匹配特定值)上触发中断。这使得它能够周期性地执行代码片段,例如读取传感器数据或刷新显示。

定时器的主要组件:

  • 计数器:定时器的核心部分,可以配置向上/向下 计数。
  • 预分频器:分频定时器的输入时钟改变计数器的计数速率。如果时钟速度是72MHz,并使用预分频值为7199,那么计数器的计数速度将是10kHz。(72MHz / 7199)
  • 自动重载寄存器(ARR, Auto-reload register):定义了计数器重置的值。

二、cubeMX 配置

  1. 选择芯片。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  2. 配置仿真。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  3. 配置时钟,选择 HSE, 高速时钟。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  4. 配置时钟树。选择最大 72 MHZ, 然后双击 enter 即可。系统会自动配置最合适的时钟。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  5. 设置工程名,路径和工具链。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  6. 自动生成 .c / .h 文件。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  7. 将 led 引脚设置输出。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  8. 让 led 引脚默认输出高电平。因为 根据实际电路当引脚是低电平时,led 点亮。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  9. 这里我使用 定时器2 , 并使用 内部时钟源。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  10. 使能定时器中断。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  11. 设置 定时器参数(分频系数,向上计数,自动重装载值)。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

  12. 创建工程。
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

三、定时时长

定时时长 = (计数器自动重载值 + 1 )*( 分频系数 + 1 )/ 定时器时钟频率

(为什么重装载值和分频系数不置为整数? 原因:精越定时)

这里 我想要设置 定时时长为 1ms ,那么首先设置相关参数:

  • 定时器时钟频率 : 72 MHZ。
  • 分频系数 (PSC): 选择 72 分频。
  • 计数器自动重载值(ARR):可控制定时器的定时时间,改变定时时长。

因为 分频系数 / 定时器时钟频率 = 计数器的计数速率, 所以 72 / 72MHZ = 1us 。则每 1 us 计数一次。当计数到 1000 (ARR) 时, 发生定时器的溢出中断. 即 ARR 从 0 增加到 1000 ,每 1 us 增加一次,则 定时时长为 1000 * 1 us = 1 ms .
最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

四、自动生成代码讲解

自动生成的 定时器的代码在 tim.c 文件中。

  1. 首先还是 先定义一个 定时器对象,这是一个结构体。
  2. 初始化这个结构体中的相关参数。
  3. 调用 HAL_TIM_Base_Init(&htim2) 对其初始化。
  4. 之后自动调转到HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle) 执行。
    5. __HAL_RCC_TIM2_CLK_ENABLE( ); 开启定时器 2
  5. HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0); 设置优先级
    HAL_NVIC_EnableIRQ(TIM2_IRQn); 使能中断
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX
    最详细STM32,cubeMX 定时器,STM32F103C8T6教程,stm32,单片机,嵌入式硬件,定时器中断,cubemX

五、实验程序

开启定时器中断:

HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);

定时器中断回调函数:

/* 发生定时器中断后调用定时器中断回调函数 */

HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);

定时器控制 led 闪烁:

static int i=0;


/* 根据cubeMX 配置的参数确定多久触发定时器中断,这里 是每 1 ms 触发一次中断即调用该函数 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim == &htim2)
	{
		if(++i == 1000)					// 当 i 加到 1000 时,则时间到达 1 s, 翻转 led 电平
		{
			i=0;
			HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_4);
		}
	}
}

总结

下篇文章为大家介绍 串口 的相关知识。文章来源地址https://www.toymoban.com/news/detail-721906.html

到了这里,关于最详细STM32,cubeMX 定时器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 最详细STM32,cubeMX 定时器

    这篇文章将详细介绍 STM32,cubeMX 定时器的配置和使用。 实验开发板:STM32F103C8T6。 所需软件:keil5 , cubeMX 。 实验目的:了解 cubeMX 定时器 的配置和使用。 实验:使用定时器控制 led 闪烁。 STM32的定时器是用于时间测量和事件生成的复杂工具。可以使用内部或外部时钟源。时

    2024年02月07日
    浏览(44)
  • 2.基于正点原子STM32F103的定时器中断实验(HAL库实现)(cubeMX)

      基本上每一款MCU都会配备定时器这个外设,STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 同样,STM32F1系列的定时器功能也很强大,包括: TIM1和TIM8两个高级定时器; TIM2~TIM5是个通用寄存器; TIM7,TIM8,两个基本定时器。 由于本次实验适用于新手入门

    2023年04月26日
    浏览(159)
  • 基于STM32F103C8T6单片机的1秒定时器设计与应用

    标题:基于STM32F103C8T6单片机的1秒定时器设计与应用 摘要: 本文主要探讨了如何在STM32F103C8T6微控制器上利用内部定时器实现精确的1秒钟定时功能,并通过实际项目实施,验证其稳定性和可靠性。首先介绍了STM32F103C8T6单片机的特性及其定时器资源,然后详细阐述了基于TIMx(

    2024年01月18日
    浏览(59)
  • 基于STM32F103C8T6的端口重映射及定时器输出PWM控制

    #一、端口重映射原理及部分/完全重映射 #二、端口重映射的配置 #三、PWM控制 ##1、通用定时器输出PWM ##2、PWM的工作原理 ##3、PWM的内部运作机制 ##4、PWM的模式 ##5、自动加载的预载寄存器 #四、定时器输出PWM结构体及库函数的配置 #五、项目硬件 #六、项目代码 一、端口重映射

    2024年02月13日
    浏览(48)
  • STM32F103C8T6定时器实现led的周期闪烁及PWM实现流水灯

    通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。请设置一个5秒的定时器,每隔5秒从串口发送“hello windows!”;同时设置一个2秒的定时器,让LED等周期性地闪烁。 使用TIM3和TIM4,分别输

    2024年01月23日
    浏览(53)
  • STM32CubeMX配置--STM32F103C8T6最小系统板

    首先是新建工程选择左上角的 File 然后点击 NewProject ,或者直接使用快捷键 Ctrl+N 新建工程 然后选择开发板型号,在 Commercial Part Number 处输入 STM32F103C8T6 然后在下方会有选择 直接双击型号 就会进入配置界面 PINoutConfiguration (1)RCC修改 首先点击左上角的 System Core 然后点击

    2024年02月04日
    浏览(62)
  • STM32 DMA1和DMA2通道一览表、STM32F103C8T6定时器通道对应的引脚

    TIM1_BRK_IRQn               = 24,      TIM1_UP_IRQn                = 25,      TIM1_TRG_COM_IRQn           = 26,     TIM1_CC_IRQn                = 27,     TIM2_IRQn                   = 28,     TIM3_IRQn                   = 29,    这个函数TIM_SetCompare1,这个函数有四个,分别是TIM_SetC

    2024年02月05日
    浏览(47)
  • STM32 F103C8T6学习笔记5:定时器输出不同占空比PWM驱动舵机旋转角度

    现在学习使用STM32 F103C8T6的定时器PWM模式,使用PWM驱动舵机转动不同角度,文章提供源码,测试工程,测试动态效果图。 目录 基础原理:  实验目标: 测试视频结果: 测试工程下载: 这次依旧拿出之前学习过的舵机DS3115,它的基础原理不多加介绍,在往期讲MSP432的文章有所

    2024年02月13日
    浏览(41)
  • 【STM32笔记】STM32的定时器开发基础(二)(基于STM32CubeMX实现定时器中断)

      传统STM32外部中断 的设计步骤:  (1)将GPIO初始化为输入端口。  (2)配置相关I/O引脚与中断线的映射关系。  (3)设置该I/O引脚对印的中断触发条件。  (4)配置NVIC,并使能中断。  (5)编写中断服务函数。   基于STM32CubeMX的外部中断 设计步骤  (1)在STM3

    2024年02月20日
    浏览(58)
  • STM32CubeMX——定时器配置

    本文将会以STM32F103C8T6为例配置定时器2定时5 ms SMT32F1系列共有8个定时器: 基本定时器(TIM6、TIM7) 通用定时器(TIM2、TIM3、TIM4、TIM5) 高级定时器(TIM1、TIM8) 16位向上、向下、向上/下自动装载计数器 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为 1~6553

    2023年04月10日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包