[STM32]定时器

定时器种类

种类功能
通用定时器输出比较,PWM,输入捕获
高级定时器通用定时器功能、互补输出(PWM电机控制)
基础定时器用于控制DAC?

寄存器

寄存器名称功能
PSC预分频器寄存器
ARR自动重载寄存器
CCR捕捉/比较寄存器

这三种寄存器在物理上是分为两个寄存器。

影子寄存器

目的:为了实现配置的同步,如在改变PWM的周期和占空比时,需要同步操作ARR和CCR比较寄存器;如同步操作多个定时器同步;

有影子寄存器就对应有预装载寄存器。
preload register(预装载寄存器):可以直接读写数据的寄存器;
shadow register(影子寄存器):用户无法直接操作,但真正起作用的寄存器。

例如:更改ARR寄存器。需要从ARR预装载寄存器更新到到影子寄存器。这个过程有两种方式,通过寄存器APRE(autopreload)控制。
一种是立刻更新(APRE =0 ,更改预装载寄存器值直接更新都),一种是等触发事件之后更新(APRE =1,当预装载寄存器值被修改时,必须在下一次更新事件(UEV)发生后才能更新影子寄存器的值);

在这里插入图片描述
在这里插入图片描述

链接

HAL定时器常用函数

功能初始化使能回调函数
基本定时HAL_TIM_Base_Init
HAL_TIM_Base_MspInit
HAL_TIM_Base_Start
还有_IT 中断模式 _DMA模式
HAL_TIM_PeriodElapsedCallback
输入捕捉HAL_TIM_IC_Init
HAL_TIM_IC_MspInit
HAL_TIM_IC_Start
还有_IT 中断模式 _DMA模式
HAL_TIM_IC_CaptureCallback

其他功能类似;

PWM输出

MX中配置定时器,直接输出
在这里插入图片描述
代码中:

//PWM 使能
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
//修改周期:通过修改ARR值(修改周期还可以通过修改 分频值)
__HAL_TIM_SetAutoreload(&htim2,  newPeriodTick);
//修改占空比:通过修改比较值
__HAL_TIM_SetCompare(&htim2, TIM_CHANNEL_2, pwmTick);

输入捕捉

在这里插入图片描述
初始化中

//使能输入捕捉中断 并使能
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
//使能定时器 周期中断/溢出中断
HAL_TIM_Base_Start_IT(&htim2);

中断回调函数

//在溢出中断中对溢出次数 进行计数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if (htim->Instance == TIM2) {
    tim2_overCnt++;
  }
}

//在输出捕捉中断中计算 时间tick数
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
	uint32_t tick;
	if(TIM2 == htim->Instance)
	{
    //记录当前中断的tick值
    tick=  HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);
    //记录两次中断之间的tick值
    tim2_tick = tim2_overCnt*20000  + tick - tim2_lasttick ;
    tim2_lasttick =  tick ;    
    tim2_overCnt = 0;

    //如果计算脉冲时间的话 需要改变捕捉的极性来捕捉下降沿时刻 从而计算脉冲时间
    //__HAL_TIM_SET_CAPTUREPOLARITY(&htim5,TIM_CHANNEL_1,TIM_ICPOLARITY_FALLING); 
	}
	}
	
}

主函数中

通过周期数计算时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值