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

news/2025/1/1 13:55:53/

基于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创建一个工程

  2. RCC选取外部时钟
    ![3

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

在这里插入图片描述
4. Clock Source:定时器时钟源,选择Internal Clock

5. 然后开始配置时钟树,设置如下图所示,使定时器主频为168MHz。而TIM3是挂接在APB1上的,所以也就是要让APB1这儿最终为84MHz

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。


7. 打开定时器中断

8. 填写生成的工程信息(工程名称,存放位置等)
在这里插入图片描述
值得注意的是,MDK的最小版本千万不要选错
9. 生成代码

  1. 成功的话会出现提示

  2. 进入工程,发现初始化代码都已经生成

  3. 进入Keil 5后,不要忘了配置debug,不然会烧录失败。
    在这里插入图片描述

  4. 我们需要开启定时器中断: HAL_TIM_Base_Start_IT(&htim3);

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

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


http://www.ppmy.cn/news/98338.html

相关文章

618京东预售一般便宜多少?跟直接买有啥区别?

618京东预售一般便宜多少?跟直接买有啥区别? 京东作为消费者比较喜欢的电商购物平台之一,经常会推出促销打折的活动,以吸引用户到平台上购物。在这些大促活动中,平台会在预售环节设置专属的优惠,让消费者下单提前锁定这些折扣&a…

vue2实例

目录 数据与方法 你提到vue有两种数据和方法,js是不是只有一种 vue2自带的实例和方法 vue2$会和jQuery冲突d的问题 vue2中被人吐槽的this(vue3已改进) 箭头函数和普通函数中的this 生命周期 数据与方法 没看懂,好像是讲在什…

Ansible原理简介与安装篇

工作原理 1、在Ansible管理体系中,存在“管理节点”和“被管理节点” 2、被管理节点通常被称为”资产“ 3、在管理节点上,Ansible将AdHoc或PlayBook转换为python脚本。并通过SSH将这些python脚本传递到被管理服务器上。在被管理服务器上依次执行&#xf…

SwiftUI中EnvironmentObject使用中,直接修改数据源的原值的方法

在Swift中有几种引用,一个通过Binding var Param来引用原变量的值,在子函数或子View中修改 Param,但我们也经常使用EnvironmentObject来引用全局数据。 例如: struct TestEnvSubView: View {EnvironmentObject var globalData :…

网络安全做红队攻防 35 岁以后可以干嘛?

35岁之后不是都当技术总监,CTO了或者自己创业了吗? 不会,单渗透测试来说,到后期更多是经验的积累。同一个事情,经验老道师傅的可能用更少的命令,发更少的请求完成这个事情,更隐蔽,更…

电动汽车变频器

目录 1、电动汽车与汽油动力车的区别 2、变频器 3、变频器内元件 3.1、汽车变频器的组成和功能 3.1.1、电容器 3.1.2、变频器控制单元 3.1.3、逆变桥驱动单元 3.1.4、逆变桥单元 3.2、汽车上变频器的组成和功能 3.2.1、DC/DC升压转换器。 3.2.2、DC/DC降压转换器。 …

【剑指offer】数据结构——字符串

目录 数据结构——字符串直接解【剑指offer】05. 替换空格【剑指offer】17. 打印从1到最大的n位数【剑指offer】20. 表示数值的字符串【剑指offer】37. 序列化二叉树【剑指offer】50. 第一个只出现一次的字符【剑指offer】58. 翻转单词顺序【剑指offer】58.2 左旋转字符串【剑指…

NLP(自然语言处理)学习记录

这几年一直都在研究CV领域,后面想抽点时间学习一下NLP方面的东西【纯个人兴趣爱好】,本人从来没有接触过NLP方面的学习,也不知道怎么学习,因此只能东一榔头西一棒槌的学了,希望可以快速系统的学起来~会专门建立一个专栏…