五、HAL_Timer的定时功能

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

1、开发环境

(1)Keil MDK: V5.38.0.0

(2)STM32CubeMX: V6.8.1

(3)MCU: STM32F407ZGT6

2、定时器简介

(1)定时器可以通过输入的时钟源进行计数,从而达到定时的功能。

3、实验目的&原理图

3.1、实验目的

(1)通过定时器设置定时,实现LED灯以500毫秒间隔闪烁。

3.2、原理图

(1)选择LED1,接PF9引脚。

五、HAL_Timer的定时功能

4、STM32CubeMX创建工程及配置

4.1、创建工程

(1)打开STM32CubeMX软件。

(2)点击File→NewProject。

五、HAL_Timer的定时功能

(3)Commercial Part Number(商用部件号)处输入MCU型号,然后选择正确的单片机型号,点击Start Project(开始项目)。

五、HAL_Timer的定时功能

(4)配置工程名、工程存放文件等。

点击Project Manager(项目经理)进行如下配置。 

五、HAL_Timer的定时功能

点击Code Generator(代码生成器)进行如下配置。 

五、HAL_Timer的定时功能

(5)点击GENERATE CODE生成KeilMDK工程。 

4.2、配置时钟及GPIO

(1)HSE、LSE时钟源选择

  • HSE:高速外部时钟源
  • LSE:低速外部时钟源
  • Disable:禁用
  • BYPASS Clock Source:旁路时钟源
  • Crystal/Ceramic Resonator :水晶/陶瓷共振器
  • 一般选择水晶陶瓷共振器
  • 旁路时钟源就是由外部给定一个时钟信号,一般用于作为同步时钟。
  • 水晶/陶瓷共振器:指外接晶振,经过内部振荡电路产生时钟。

五、HAL_Timer的定时功能

(2)LED1 GPIO配置

五、HAL_Timer的定时功能

(3)时钟树配置

五、HAL_Timer的定时功能

4.3、配置定时器

4.3.1、确定定时器挂载总线

(1)这里选择TIM2,确定TIM2挂载到哪根总线。

(2)查看STM32F407ZGT6芯片对应的数据手册。

(3)打开对应KeilMDK工程,点击Books。

五、HAL_Timer的定时功能

(4)双击打开数据手册。

五、HAL_Timer的定时功能

(5)查看芯片框图。TIM1挂载再APB1总线上,APB1 timer clocks时钟为72MHz,所以定时器1初始时钟为72MHz。

五、HAL_Timer的定时功能

4.3.2、CubeMx中的TIM1配置

(1)定时器的配置项有很多,用不到的可以不用考虑,保持默认即可。

(2)时钟源的选择,选择内部时钟。也就是APB1 timer clocks。某些定时器只能选择内部时钟。

五、HAL_Timer的定时功能

(3)定时器Parameter Settings(参数设置)计算。

  • 定时时长500毫秒。
  • Prescler(PSC -16 bits value): 分频系数,选择72-1,进行72分频,即定时时钟变为1MHz。
  • Counter Mode: 计数器模式,选择Up,向上计数。
  • Counter Period (AutoReload Register-32 bits value): 计数器周期,32位自动加载值。
  • 时钟频率1MHz表示1秒钟时钟振荡1000000次。
  • Counter Period = 500mS/(1/1Mhz) = 500mS/(1/1000000S) = 500000。

五、HAL_Timer的定时功能

(4)打开定时器中断,定时器定时时间到,进入中断处理函数。

五、HAL_Timer的定时功能

(5)点击GENERATE CODE更新KeilMDK工程。 

5、KeilMDK软件编写

5.1、程序编写

HAL_TIM_Base_Start_IT(&htim2);       /*启动定时器2,LED闪烁定时*/

/*功能:定时器中断回调函数
 *参数:定时器x
 *返回值:无
 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)    
	{
		HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);/*LED状态翻转*/
	}
}

5.2、完整工程下载地址

(1)完整工程存储再码云。

(2)STM32_CSDN: CSDN中STM32专栏的所有示例代码

五、HAL_Timer的定时功能

6、定时器计数模式

(1)Up,向上计数模式。计数器从 0 计数到自动装入的值,然后重新从0开始计数并且产生一个计数器溢出事件。

(2)Down,向下计数模式。计数器从自动装入的值 开始向下计数到 0 ,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。

7、分频系数和计数周期为什么要减1

7.1、STM32CubeMX中TIM分频系数

(1)假设STM32CubeMX中Tim2要进行72分频,分频系数设置为72-1。

(2)因为没有0分频,分频系数设置为0时表示不分频。

(3)查看对应芯片参考手册。

五、HAL_Timer的定时功能

(4)ck_psc是指定时器时钟源。

7.2、STM32CubeMXTIM计数周期

(1)应为计数值到了后,需要往下再计数一个值,也就是溢出才产生中断。

(2)溢出的同时计数值重新加载。文章来源地址https://www.toymoban.com/news/detail-503215.html

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

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

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

相关文章

  • 【HAL库】STM32CubeMX开发----非阻塞延时实验----SysTick(滴答定时器)中断

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

    2024年02月16日
    浏览(51)
  • STM32开发——简介、开发环境(Keil5、CubeMX)、HAL库

    目录 1.简介-初识STM32 2.开发环境 2.1使用Keil5  2.2使用STM32CubeMX  3.标准库与HAL库区别 4.推挽输出与开漏输出 什么是单片机? 单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能力的中央处 理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时

    2024年02月16日
    浏览(58)
  • 开发一个RISC-V上的操作系统(七)—— 硬件定时器(Hardware Timer)

    目录 往期文章传送门 一、硬件定时器 硬件实现 软件实现 二、上板测试 开发一个RISC-V上的操作系统(一)—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统(二)—— 系统引导程序(Bootloader)_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统

    2024年02月12日
    浏览(42)
  • MBD开发 STM32 Timer

    开两个定时器 一快一慢    两个中断都要使能  没有自动更新,切换下timerx就好了,但是触发UP要手动勾选    

    2024年02月14日
    浏览(27)
  • 基于STM32的定时器--定时中断(HAL库)

    本文旨在介绍如何使用STM32CubeMX配置+KEIL 5开发一个每10us定时器中断触发一次的项目。帮助初学者入门STM32的定时器使用。 定时器是STM32微控制器中非常重要的功能模块之一,用于计时、生成精确的时间延迟、触发事件等。STM32微控制器通常具有多个定时器模块,包括通用定时

    2024年02月14日
    浏览(54)
  • # HAL库STM32常用外设教程(四)—— 定时器 基本定时

    1、STM32F407ZGT6 2、STM32CubeMx软件 3、keil5 内容简述: 通篇文章将涉及以下内容,如有错误,欢迎指出 : 1、基础定时器特性 2、基础定时器的结构和功能 3、基础定时器HAL库驱动程序 (1)CubeMx配置 (2)TIM驱动程序   STM32F407有2个高级控制定时器(TIM1、TIM8)、8个通用定时器和

    2024年02月02日
    浏览(63)
  • STM32 HAL库-定时器中断

    关闭或开启所有中断;代码如下: STM32F407 有众多的定时器,其中包括 2 个基本定时器(TIM6 和 TIM7)、10 个通用定时 器(TIM2 ~ TIM5、TIM9 ~TIM14)、2 个高级控制定时器(TIM1 和 TIM8),这些定时器彼此完 全独立,不共享任何资源。 选择定时器,配置时钟源,设置预分频系数,计

    2024年01月25日
    浏览(61)
  • stm32——hal库学习笔记(定时器)

    使用纯软件(CPU死等)的方式实现定时(延时)功能 使用精准的时基,通过硬件的方式,实现定时功能 递增计数模式实例说明 中心对齐模式实例说明 TIM6 和TIM7 控制寄存器 1(TIMx_CR1) TIM6 和TIM7 DMA/中断使能寄存器(TIMx_DIER) TIM6 和TIM7 状态寄存器(TIMx_SR) TIM6 和TIM7 计数器(TIMx_CNT)

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

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

    2024年02月16日
    浏览(73)
  • STM32 hal库编程定时器计数清零

    1、stm32定时器是有重装载功能的,所以定时器中断不关的话,就不需要计数清零 2、主要是应对单次计时使用,可能因为没有清零导致程序再次运行到相同位置时,中断立即出发,没有完成计时的功能。 顺便加一个读取定时器计数值得函数

    2024年02月03日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包