基于STM32的定时器--定时中断(HAL库)

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

介绍

引言

本文旨在介绍如何使用STM32CubeMX配置+KEIL 5开发一个每10us定时器中断触发一次的项目。帮助初学者入门STM32的定时器使用。

定时器介绍

定时器是STM32微控制器中非常重要的功能模块之一,用于计时、生成精确的时间延迟、触发事件等。STM32微控制器通常具有多个定时器模块,包括通用定时器(General Purpose Timer)和高级定时器(Advanced Timer)。每个定时器模块都具有多个通道,每个通道都可以用于不同的定时和计数操作。

以下是一些常见的STM32定时器的特点和功能:

  1. 通用定时器(General Purpose Timer):STM32中常见的通用定时器包括TIM2、TIM3、TIM4等。它们通常具有以下特点:
    • 可以选择不同的时钟源和分频因子,以获得所需的定时精度。
    • 支持输入捕获功能,用于测量外部信号的脉冲宽度、周期等。
    • 支持输出比较功能,可用于生成精确的脉冲、PWM信号等。
    • 支持定时中断,可以在达到指定的定时值时触发中断。
  2. 高级定时器(Advanced Timer):STM32中常见的高级定时器包括TIM1、TIM8等。它们通常具有以下特点:
    • 具有更多的定时通道,用于更复杂的定时和计数操作。
    • 支持更高的定时精度和频率。
    • 提供更多的功能选项,如编码器接口、PWM输入捕获等。
  3. 低功耗定时器(Low-Power Timer,LPTIM):STM32中的LPTIM模块是为低功耗应用设计的定时器,具有以下特点:
    • 在低功耗模式下仍能保持活动,以提供精确的时间计数。
    • 适用于节能需求高的应用,如电池供电的系统。

使用STM32的定时器,您可以执行以下操作:

  • 计时和测量外部信号的时间参数,如脉冲宽度、周期等。
  • 生成精确的定时延迟,用于控制操作的时序。
  • 产生PWM信号,用于驱动电机、控制LED亮度等。
  • 触发中断,以响应特定的定时事件。

实例

项目介绍

此项目为了讲解如何使用定时器,每10us触发一次定时器中断。我们可以通过这个实例,进行自己的开发。

准备

  1. MCU:STM32F407(根据自己的需求选择即可,流程都一样)
  2. 库:HAL库
  3. 开发工具:STM32CubeMX
  4. 开发环境Keil 5

设计流程

  1. 使用STM32CubeMX创建一个工程
    hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件

  2. RCC选取外部时钟
    ![3hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件

  3. 选择Debug(不选不能烧录和调试)

hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件
4. Clock Source:定时器时钟源,选择Internal Clock
hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件
5. 然后开始配置时钟树,设置如下图所示,使定时器主频为168MHz。而TIM3是挂接在APB1上的,所以也就是要让APB1这儿最终为84MHz
hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件
6. 实现时钟配置:设置定时器中断,每10us触发中断一次。(后续canopen的最小时间单位即为此处进入一次中断的时间),每次进入定时器中断的的时间计算公式为:
t i m e = (( P r e s c a l e r + 1 )( P e r i o d + 1 )) / 定时器总线时钟源 time=((Prescaler+1)(Period+1))/定时器总线时钟源 time=((Prescaler+1)(Period+1))/定时器总线时钟源
eg:当定时器总线时钟源为84MHz,Prescaler为83,Period为9.此时定时时间为:84*10/84000000=0.00001s=10us。

hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件
7. 打开定时器中断
hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件
8. 填写生成的工程信息(工程名称,存放位置等)
hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件
值得注意的是,MDK的最小版本千万不要选错
9. 生成代码
hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件

  1. 成功的话会出现提示
    hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件

  2. 进入工程,发现初始化代码都已经生成
    hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件

  3. 进入Keil 5后,不要忘了配置debug,不然会烧录失败。
    hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件

  4. 我们需要开启定时器中断: HAL_TIM_Base_Start_IT(&htim3);
    hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件

  5. 编写定时器中断回调函数

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == htim3.Instance) 
	{	
	
		//书写我们想要执行的功能
	}
}
  1. 编译一下,无错误,项目完成,每10us进入中断回调函数一次。

hal库开启定时器中断,STM32入门到精通(嵌入式开发基础),stm32,单片机,嵌入式硬件文章来源地址https://www.toymoban.com/news/detail-619640.html

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

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

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

相关文章

  • STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数

    该篇文章中用到的步进电机闭环驱动器为Emm42_V4.0步进电机闭环驱动器。该闭环驱动器自带FOC矢量闭环控制算法,能实现力矩、速度、位置三环控制。 如下图所示,该42步进闭环电机驱动器的A+、A-、B+、B-连接步进电机,通过右侧的使能、脉冲、方向端对步进电机进行驱动控制

    2024年02月01日
    浏览(53)
  • STM32 HAL库 STM32CubeMX -- TIM(定时器中断)

    STM32F1 系列中,除了一些特殊的型号,大部分F1有8 个定时器,分为 基本定时器,通用定时器和高级定时器 。 基本定时器TIM6 和TIM7 是一个16 位的只能向上计数的定时器,只能定时,没有外部IO。 通用定时器TIM2/3/4/5 是一个16 位的可以向上/下计数的定时器,可以定时,可以输出

    2024年02月16日
    浏览(72)
  • STM32HAL库定时器中断、按键中断、串口中断、按键消抖和低通滤波算法详解

    本文将详细介绍STM32HAL库中的定时器中断、按键中断、串口中断的使用方法,以及按键消抖和低通滤波算法的实现。希望能对您的STM32开发提供帮助。 目录 1. 定时器中断 2. 按键中断 3. 串口中断 4. 按键消抖 5. 低通滤波算法 一、定时器中断 定时器中断是STM32开发中常用的一种

    2024年02月15日
    浏览(49)
  • 【HAL库】STM32CubeMX开发----非阻塞延时实验----SysTick(滴答定时器)中断

    STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F103/F207/F407----目录 HAL库 有自带的 ms级 延时函数: HAL_Delay(); 缺点: 这是 阻塞延时 方式,就是延时期间,什么都不能干,这样很浪费资源。 这篇文章主要介绍,利用 SysTick(滴答定时器)中断 实现 非阻塞延时 的实验

    2024年02月16日
    浏览(49)
  • STM32 HAL库 通用定时器介绍及相关应用例程 定时器中断 输出PWM (点亮LED呼吸灯、输出PWM、输入捕获) CubeMX

    (部分图引自于ATK) 前情提要(基本定时器) 点此进入 通用定时器类别 通用定时器和基本定时器相比大致的工作方式是相似的,不过通用定时器比基本定时器多了一些很好用的功能,比如: 外部输入捕获 输出比较 输出PWM 时钟源 CubeMX为我们提供了配置时钟的非常方便的工

    2024年04月15日
    浏览(82)
  • (四) timer+pit(定时器中断)+encoder(编码器)-逐飞TC264库学习(对比STM32 HAL库)

    PIT , 是programmable interval timer 可编程间隔定时器 DSC中的器件 的缩写,所以就是定时器中断,有点像32里的timer(TIMx) 目前看来一共能用通道的有四个 typedef enum // 枚举通道号 {     CCU60_CH0,     CCU60_CH1,     CCU61_CH0,     CCU61_CH1, }pit_index_enum; 因为涉及到中断,为方便设定中断优

    2024年03月15日
    浏览(72)
  • 手把手教你开发stm32——定时器(上)(基于hal库)

    定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断。 16位计数器、预分频器、自动重装载寄存器的时基单元。 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能。 根据复杂度和引用

    2024年02月03日
    浏览(46)
  • 基于STM32CubeIDE HAL库利用基本定时器实现串口接收不定长数据

    ✨申明:本文章仅发表在 CSDN 网站,任何其他网见此内容均为盗链和爬取,请多多尊重和支持原创! 🍁对于文中所提供的相关资源链接将作不定期更换。 📌相关参考《HAL库教程9:串口接收不定长数据》 🎉对于串口接收不定长数据的处理方案网上有很多,个人觉得采用定时

    2024年02月09日
    浏览(53)
  • HAL STM32基于系统滴答定时器(SysTick)实现多任务时间片轮询

    📑RTOS(实时操作系统)和定时器时间片轮询是两种不同的任务调度和执行方式的差异简介 🔖 以下部分内容,由AI给出的解答: 🔖RTOS(实时操作系统): 🌿RTOS是一种专门设计用于实时系统的操作系统,它可以有效地管理多个任务,提供任务调度、同步和通信等功能。 🌿

    2024年02月21日
    浏览(43)
  • Note10:基于STM32H7+HAL+CubeMX+DMA+SPI+串口中断+定时器+RTC的多传感器数据采集系统(2*ADXL355和ADXL375通过Sync时序同步)

    本文的初衷一方面是将我的一些关于STM32开发方面浅显的个人经验分享给初学者、并期望得到大佬的批评指正,另一方面是记录自己的实验过程便于回顾。 我预感应该要写很多,不过鉴于之前的数篇笔迹中,对于SPI/DMA/ADXL3XX系列加表的使用已经详细描述过了,所以这篇博客只

    2024年02月10日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包