定时器计时

本文介绍了在STM32中如何配置和使用定时器,特别是关于HAL库的配置,包括预分频器、计数模式、周期设置等。通过开启定时器更新中断并设置中断回调函数,实现了基本定时功能。文中详细阐述了定时器结构体的各个参数,并给出了代码实例。
摘要由CSDN通过智能技术生成

前言

1:也就是TIM6最小要二分频
在这里插入图片描述
2:如果想使用定时器更新中断,需要先使能更新中断,然后再使能定时器就可以用了

HAL库配置

在这里插入图片描述
84M/(8400-1)=10KHZ=100US
100*20000=2S
auto-reload preload:是否使能自动重装载,如果没有使能,那么就可以在任何时刻通过软件进行更新。如果使能了的话,那么重新设置的值,只能在跑完原本那个周期才会重新跑我们新设定的那个值
影子寄存器:我们初始化配置预分频寄存器和计数器就是源寄存器,使我们可以进行读和写的。影子寄存器是无法操作的是内部硬件使用的,影子寄存器是程序运行时真正起作用的,源寄存器只是给我们读写使用的,只有在更新事件的时候才会把源寄存器的值拷贝到影子寄存器中
在这里插入图片描述
在这里插入图片描述
TRGO:触发输出信号,是定时器输出给其他定时器或者外设的触发信号,暂时用不到,用到再说

结构体

	typedef struct 
	{
   
		uint16_t Prescaler; // 预分频器
		uint16_t CounterMode; // 计数模式
		uint32_t Period; // 定时器周期
		uint16_t ClockDivision; // 时钟分频
		uint8_t RepetitionCounter; // 重复计算器
	} TIM_Base_InitTypeDef;

(1) Prescaler:定时器预分频器设置,时钟源经该预分频器才是定时器时钟,它设定 TIMx_PSC 寄存器的值。可设置范围为 0 至 65535,实现 1 至 65536 分频。
(2) CounterMode:定时器计数方式,可是在为向上计数、向下计数以及三种中心对齐模式。基本定时器只能是向上计数,即 TIMx_CNT 只能从 0 开始递增,并且无需初始化。
(3) Period:定时器周期,实际就是设定自动重载寄存器的值,在事件生成时更新到影子寄存器。可设置范围为 0 至 65535。
(4) ClockDivision:时钟分频,设置定时器时钟 CK_INT 频率与数字滤波器采样时钟频率分频比,基本定时器没有此功能,不用设置。
(5) RepetitionCounter:重复计数器,属于高级控制寄存器专用寄存器位,利用它可以非常容易控制输出 PWM 的个数。这里不用设置。

虽然定时器基本初始化结构体有 5 个成员,但对于基本定时器只需设置其中两个就可以,想想使用基本定时器就是简单。

代码库分析

开启定时器更新中断

原函数在stm32f4xx_hal_tim.c中

//此函数功能
//1:开启更新中断2:使能定时器,所以只需加这句函数就行了
	HAL_TIM_Base_Start_IT(&htim6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值