HAL库开发——TIM定时器中断与PWM输出

一、预备知识

1.定时器TIM功能:定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断、内外时钟源选择、输入捕获、输出比较、编码器接口、主从触发模式等多种功能,我们主要使用的是普通定时中断和PWM输出比较功能。

每一个时钟周期计数器+1,周期数量*单个周期时间=定时时长

二、普通定时器功能

1.计算公式:单个时钟周期=1 / (输入时钟频率/分频系数+1)

定时时间=(技术周期+1) / (输入时钟频率/分频系数+1)=(ARR+1)*(PCS+1)/Tclk

2.cubeMX配置

找到对应TIMx定时器,选择 internal clock (内部时钟源)一般均选择这个选项,其他都不需要选。

3.程序内容

创建中断函数

 参数TIM_HandleTypeDef*htim为产生中断的定时器编号

 三、PWM输出功能

1.原理讲解

每个定时器有4个通道,每个通道都有一个捕获比较寄存器(即获取CNT的值,与CCRx进行比较),通过比较输出高低电平,以此来实现对脉宽的调制(PWM)
TIMx_ARR寄存器确定PWM频率,TIMx_CCRx寄存器确定占空比
向上计数模式:当CNT<CCRx时,TIMx_CHx通道输出低电平,当CNT>CCRx时,TIMx_CHx通道输出高电平

在这里插入图片描述

例:

在选择输出PWM时,Slave Mode ,Trigger Source不会涉及。

参数说明:

计数模式:向上计数即为计数器从0加到ARR(自动重装载值),计数器溢出,然后计数器归为0,继续加循环,向下计数即为计数器从ARR减到0,计数器溢出。然后计数器归为ARR,继续减循环

内部时钟因子:暂时忽略

PWM模式:设置CNT大于还是小于CRR时为有效电平,具体如下,PWM模式1: 在向上计数时,当CNT<CCRx时通道x为有效电平,当CNT>CCRx时通道x为无效电平; 在向下计数时,当CNT>CCRx时通道x为无效电平,当CNT<CCRx时通道x为有效电平
PWM模式2: 在向上计数时,当CNT<CCRx时通道x为无效电平,当CNT>CCRx时通道x为有效电平; 在向下计数时,当CNT>CCRx时通道x为有效电平,当CNT<CCRx时通道x为无效电平
有效电平可以是高电平也可以是低电平,具体得看CCER寄存器的CC1P位的值来确定,CC1P=0 时有效电平为高,CC1P=1时 有效电平为低。

在这里插入图片描述

通道极性:即设置有效电平为高电平还是低电平,有效电平即为占空比中占的部分

PSC分频系数

ARR自动重装数

CCR计数器值

频率=系统频率 / (PSC+1)(ARR+1)HZ

分辨率=1 / (ARR+1)

占空比=CRR / (ARR+1)

先通过频率和分辨率计算ARR和PSC的值,CCR从0增到ARR+1对应0到100%占空比

输出模式配置为复用推挽输出 (Alternte Function Push Pull)

 

 __HAL_TIM_SetCompare(,,)函数通过设置CCR值配置占空比

参数说明:①定时器编码②定时器通道③CCR的值

四、在MBD中的应用

在simulink中,勾选Timers的Duty Cycle is an input port 后,输入Tim的变量应为0~100的占空比值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值