STM32CubeMX——定时器配置

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

说明

本文将会以STM32F103C8T6为例配置定时器2定时5 ms

定时器简介

SMT32F1系列共有8个定时器:

基本定时器(TIM6、TIM7)
通用定时器(TIM2、TIM3、TIM4、TIM5)
高级定时器(TIM1、TIM8)

基本定时器功能(TIM6、TIM7):

  1. 16位向上、向下、向上/下自动装载计数器
  2. 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为 1~65535之间的任意数值
  3. 触发DAC的同步电路 注:此项是TIM6/7独有功能.
    位于APB1总线上

通用定时器(TIM2~TIM5)的主要功能:

  1. 16位向上、向下、向上/下自动装载计数器
  2. 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值
  3. 4 个独立通道(TIMx_CH1~4)可以用作:
  • 测量输入信号的脉冲长度( 输入捕获)
  • 输出比较
  • 单脉冲模式输出
  • PWM输出(边缘或中间对齐模式)
  1. 支持针对定位的增量(正交)编码器和霍尔传感器电路
  • 如下事件发生时产生中断/DMA:
    • 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
    • 触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
    • 输入捕获
    • 输出比较
  1. 位于总线APB1上

高级定时器(TIM1,TIM8)的主要功能:

  • 高级定时器具有基本,通用定时器的所有的功能,
    还具有控制交直流电动机所有的功能,
    输出6路互补带死区的信号,刹车功能等等
  • 位于APB2总线上
    需要具体了解请看原文,链接如下。
    原文链接:lihttps://blog.csdn.net/lcp0633/article/details/111145199nk

STM32CubeMX配置

新建工程

  • 搜索芯片型号(此处使用STM32F103C8T6)
  • 选择芯片
  • 开始工程
    STM32CubeMX——定时器配置

设置时钟源RCC

  • 选择高速时钟源为外部陶瓷晶体振荡器
  • 选择低速时钟源为外部陶瓷晶体振荡器
    STM32CubeMX——定时器配置

设置时钟

  • 选择时钟设置界面
  • 将HCLK配置到72MHz,系统自动配置各个时钟
  • 此时单片机时钟配置为72MHz,后面将采用该时钟频率配置定时器
    STM32CubeMX——定时器配置

设置定时器

STM32CubeMX——定时器配置

STM32CubeMX——定时器配置

  • 选择定时器(TIM2)
  • 选择定时器时钟来源(内部时钟)
    • Clock Source(时钟来源)
  • 定时器设置
    • Prtscaler (定时器预分频系数):72-1
    • Counter Mode(计数模式) : Up(向上计数模式)
    • Counter Period(自动重装载值) : 5000-1
    • CKD(时钟分频因子) : No Division 不分频 (可以选择二分频和四分频 )
    • auto-reload-preload(自动重装载) : Enable 使能
  • 计数器周期计算公式
    T = (psc+1)(arr+1)/Tclk
    • psc:定时器预分频系数
    • arr:自动重装载值
    • Tclk:系统时钟频率
  • 计算举例
    1/[72/(71+1)]*(4999+1)=5ms

项目文件设置

  • 设置项目名称
  • 选择所用IDE
    STM32CubeMX——定时器配置
  • 选择为每个功能生成一个.c和.h文件
  • 生成代码
    STM32CubeMX——定时器配置

代码部分

找到main函数,里面关于TIM2初始化的函数 MX_TIM2_Init(),进入初始化函数,查看源码STM32CubeMX——定时器配置
从上面代码可以看到,先定义了一个htim2的结构体
然后是对结构体的初始化,就是我们图形化的配置

再找到stm32f1xx_it.c文件
STM32CubeMX——定时器配置
上面的代码是如果TIM2中断,则调用 HAL_TIM_IRQHandler(&htim2);
进入HAL_TIM_IRQHandler(&htim2)函数,这里面的代码很长,就是不同的中断类型,进入不同的中断回调函数,这里找到 HAL_TIM_PeriodElapsedCallback(htim);
STM32CubeMX——定时器配置
进入这个回调函数,我们看到是个虚函数,需要我们重写,在这个函数里面,就是我们需要实现的功能,但在这之前,需要在main函数里使能中断 HAL_TIM_Base_Start_IT(&htim2)

所以使用的代码如下:
下面展示一些 内联代码片

// An highlighted block
HAL_TIM_Base_Start_IT(&htim2); //使用定时器的时候调用这个函数启动
HAL_TIM_Base_Stop_IT(&htim2);  //停止定时器的时候调用这个函数关闭
/* 定时器回调函数 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM2)
  {
    //编写回调逻辑,即定时器2定时5MS后的逻辑
  }
}

引用

最好,将本文所引用的链接放在这里,以供参考
STM32CubeMX——定时器之定时功能:https://blog.csdn.net/lcp0633/article/details/111145199
STM32 Cubemx 配置定时器定时1mS:
https://www.cnblogs.com/xingboy/p/9897500.html文章来源地址https://www.toymoban.com/news/detail-409755.html

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

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

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

相关文章

  • STM32高级定时器输出指定数量PWM(STM32CubeMx配置)

    高级定时器中有一个重复计数器,本实验输出指定个数PWM就是利用了重复计数器的特性,先来看看重复计数器的特性是什么: 计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件 这是什么意思呢,这里举个例子比如说我设定重复计数器的

    2024年02月02日
    浏览(39)
  • 野火STM32电机系列(五)Cubemx配置高级定时器TIM1

    鸽了一段时间,放心不会断的哈,目前仅仅是显示屏坏了,不影响后面项目 前文已经配置了GPIO、编码器 本节讲解CubeMX高级定时器TIM1配置带死区的6路互补的PWM 同时配置信号触发后续ADC采集 板子引角的原理图如下 对应的: Motor1--U+--PA8--TIM1_CH1 Motor1--U---PB13--TIM1_CH1N Motor1--V+--

    2024年02月15日
    浏览(38)
  • 【STM32】定时器1触发ADC多(规则)通道采样+DMA(CUBEMX配置)

    在用单片机做电源控制时不得不提ADC采集,离散系统是有固定的执行周期的,所以我们采样也是要固定时间去采样。然后就是我希望pwm波(定时器1产出)的频率与采样频率一致。 我下面演示的是G431CBU6,当然其他芯片也大差不差了。 说一下大致流程,TIM1触发ADC采样,然后

    2024年02月01日
    浏览(23)
  • STM32CUBEMX配置 定时器中断 和 上升沿中断(实现检测1s以内的脉冲个数)

    ———————————————————————————————————— ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驱动,包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)等等。

    2024年02月16日
    浏览(16)
  • 初出茅庐的小李博客之STM32CubeMx配置定时器的编码器模式

    上次文章写了编码器是如何工作的,今天就来用STM32F103C8T6的TIM3的通道1跟通道2编写一个编码器识别程序。 话不多说,上教程! 选择外部高速时钟源HSE 选择中断模式触发下降沿有效 默认是上拉输入 添加用户标签为SWITCH 使能NVIC配置 选择编码器模式 分频值设置为2-1 计数值设

    2024年02月12日
    浏览(16)
  • STM32 HAL库 CubeMX配置 定时器学习 F103C8T6

    开发板: STM32F103C8T6最小系统板 编译环境: Keil5 MDK 辅助软件: STM32 CubeMX 课程教学: 基于正点原子HAL库学习教程 其余配件: 江科大STM32配件包 和 示波器一台 备注:  因为这块开发板没有基本定时器,所以本文也 没有基本定时器的内容             本文1.3和2.1部分的

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

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

    2024年02月20日
    浏览(20)
  • 最详细STM32,cubeMX 定时器

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

    2024年02月07日
    浏览(24)
  • STM32CubeMX教程5 TIM 定时器概述及基本定时器

    开发板(STM32F407G-DISC1) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK/V2驱动 逻辑分析仪nanoDLA 使用STM32CubeMX软件配置STM32F407开发板 使用基本定时器TIM6实现每500ms控制绿灯状态变化一次,基本定时器TIM7实现每1s控制红灯状态变化一次 STM32F407拥有2个基础定时器、

    2024年02月03日
    浏览(24)
  • STM32CubeMX系列06——定时器(定时、PWM、输入捕获)

    ==== 文章汇总(有代码汇总) ==== 正点原子Mini板,主控 STM32F103RCT6. 定时器简介 这里主要讨论通用定时器(系统嘀嗒定时器、看门狗定时器、RTC定时器不考虑在内) 对于STM32F103RCT6 单片机: 2个基本定时器。分别是 TIM6 、 TIM7 。只能16位向上计数、没有IO口,没有捕获和比较通

    2024年02月01日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包