STM32CubeMX学习四 之定时器配置

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


前言

记录一下STM32CubeMX的学习笔记,同时分享给初学的小白,希望一起进步。
如何使用STM32CubeMX以及工程创建在之前的博客有提到,这里就直接从定时器讲起。


一、本地环境

编译环境:KEIL
代码生成:STM32CubeMX
库:HAL
MCU:STM32F072

二、开始

1.定时器配置

假设你的cubeMX工程已经建好,这里我们开始配置定时器2(TIM2),使用内部时钟源。
STM32CubeMX学习四 之定时器配置

2.内部时钟配置

配置完GPIO后开始配置时钟,我这里配置的是内部时钟,配置的24Mhz的内部时钟(HSI)如图:
STM32CubeMX学习四 之定时器配置

2.TIMER配置

我这里配置的是1ms的定时器。我们要通过配置预分频和计数周期来定时1ms。
我们的内部时钟周期配置的是24M,而我们要定时1ms,那么Prescaler设置成(24-1),Counter Period设置为(1000-1)。设置的这两个数字可以根据实际需求来凑即可,只要算出来是1ms即可。

计算公式:

频率(f)
时间(F)
预分频(Prescaler)
计数周期(Counter Period)
f = timer_clock  / (Prescaler+1) / (Counter_Period+1)  //timer在计算的时候会自动将值+1
计算如下:
Prescaler = 24-1
Counter_Period = 1000-1
f = 24Mhz / (24-1+1) / (1000-1+1) = 1000hz
T = 1/1000 = 1ms

配置如图:
Counter Mode 是 计数模式,根据需求向上计数(up)或者向下计数(down)。
STM32CubeMX学习四 之定时器配置
NVIC中断配置:
STM32CubeMX学习四 之定时器配置

4.代码生成

时钟配置完毕后,选择“Project Manager”到工程配置界面。
1、配置工程的名称
2、工程存储路径
3、IDE选择(如果是keil工具,选择MDK-ARM)
4、mcu依赖的cube包在哪个目录
STM32CubeMX学习四 之定时器配置

接着到“Code Generator”下选择这几个选项来生成工程:

STM32CubeMX学习四 之定时器配置

选择好过后我们就可以点击右上角的"GENERATE CODE"按键来生成代码了。
如果提示你的firmware package 缺少直接更新下载即可,如果没网状态,就需要去官网下载依赖包放在之前提到的目录下即可。

我是用一下依赖包生成得工程代码。
STM32CubeMX学习四 之定时器配置

3.编译工程

点击编译按钮对工程进行编译。
STM32CubeMX学习四 之定时器配置
在 CubeMX 生成的文件中添加用户代码的时候,必须是写在/* USER CODE BEGIN n*/和/* USER CODE
END n*/之间。这样如果需要改变 Cube 工程的配置,在重新生成代码时,在这两句注释之间的语 句不会被覆盖。而用户新建或添加的文件不会受到影响。

4.添加功能代码

我们这里工程就基本建好了,现在来实现功能代码部分。
在代码中添加如下代码使能定时器中断:

HAL_TIM_Base_Start_IT(&htim2)

STM32CubeMX学习四 之定时器配置

我们要添加函数功能到回调函数内,那么怎么去找这个回调函数了?
1、我们可以打开对应的头文件,这里是stm32f0xx_hal_time.h,找到以callback结尾的函数(void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);)
STM32CubeMX学习四 之定时器配置

通过点击右键,然后点击“go to Definition…”就可以定位到函数实现的地方:
STM32CubeMX学习四 之定时器配置

这里我们看到这个函数是被 __weak修饰的函数,所以这个函数如果我们要使用的话直接把函数复制出来在用户端直接重写就行了。
在CubeMX生成的程序框架中,TIMER共用一个回调函数接口。要想知道是哪个定时器中断源,就判断其输入参数htim即可。

在time.c中添加以下代码就可以识别对应的定时器中断了。

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)  /* tim2 1ms*/
	{
		//功能代码
	}
}

定时器配置这样就结束了,上面提到内部时钟源的配置,这里在提一下外部时钟源的配置。

5.外部时钟配置

将PF1和PF2配置成外部晶振功能:
STM32CubeMX学习四 之定时器配置

选择HSE的时钟配置如下:
STM32CubeMX学习四 之定时器配置文章来源地址https://www.toymoban.com/news/detail-428814.html


创作不易,请大佬们点个赞!
有问题请留言讨论!

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

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

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

相关文章

  • 搭建stm32电机控制代码框架(二)——Stm32CubeMx配置定时器

    搭建了基础的环境,配置了一个简单的工程后,CubeMx的基本操作就会了。然后基于这个操作往下推进,开始对关键模块定时器的攻略,这个部分需要先熟悉一下Stm32的定时器基本原理。 《STM32参考手册》中仅对定时器的介绍就已经占了100多页,这里就不一一展开,挑一些关键

    2024年02月06日
    浏览(48)
  • 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 CubeMX学习实验13:定时器输入捕获获取PWM频率

    使用定时器5作为输入捕获定时器,将通道1(PA0)设置为输入捕获,设置预分频器和计数值,这里设置为1us计数一次,最大可以捕获周期为0xFFFFFFFFus的PWM,所以一般不需要考虑溢出的问题,使能自动重装载。 使能定时器中断,选择合适的优先级,   将引脚设置下拉,保证没

    2024年03月14日
    浏览(39)
  • 【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笔记】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)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包