打印
[应用相关]

定时器与PWM

[复制链接]
188|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2023-9-11 16:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
定时器的分类
基本定时器: 用于简单计时或延迟的定时器。(TIM6,7)

通用定时器: 通常具有多个定时/计数通道,并且可以用于多种用途,例如产生 PWM 脉冲、捕获外部事件、测量时间间隔,产生输出波形等。通用定时器具有灵活的配置选项,使其适用于不同的应用需求。

高级定时器: 高级定时器是相对于基本定时器和通用定时器而言的,它通常具有更复杂的功能和更高级的特性。高级定时器可以支持更多的通道和更精确的时间测量,以及更复杂的计时模式和触发条件。高级定时器通常用于需要较高精度和复杂计时操作的应用,比如音频处理、高速数据采集和控制系统等。

定时器的组成
时钟源--------分频器----------计数器-----------------重装载值

STM32的通用定时器 TIM2,3,4,5
时钟源: 内部时钟,外部时钟

预分频器:1——65536

计数器:16位

重装载值:16位

计数方向:向上,向下

在通用定时器中,预分频使能的话下次起作用,没有使能的话立即起作用!

应用:使用通用定时器实现US/ms的延时
步骤:

1,选用定时器通道TIM2,并使能时钟

2,配置TIM2,设置结构体中的项

时钟分割-----------用于输入捕获-----可以不配置

计数方向-----------向上,向下计数

重装载值-----------减1

预分频 ------------减1

重复计数器---------用于TIM1,TIM8------可以不配置

3, 开中断,使能更新中断

4,配置NVIC,每个中断都是由NVIC管理的

注意:

重装载值减1: 重装载值(Auto-Reload Register)决定了定时器溢出的时间间隔。因为定时器计数器的范围是从0到重装载值,所以如果设置重装载值为 n,那么定时器将计数 n+1 个周期才会溢出。因此需要将重装载值减1。



预分频器减1:决定了每个计数周期的时钟周期数。如果将预分频器设置为 n,那么定时器的时钟频率就会被分频为原来的 1/(n+1)。所以,为了准确计算延时,我们需要考虑到预分频器的减1操作。

应用:利用通用定时器输出PWM波
通过设置占空比的值来控制





配置过程:

1,开GPIO口的时钟,与GPIO对应的TIMX的时钟。这个对应关系可以从数据手册中查看。

2,配置GPIO为MITX的复用推挽输出

3,配置定时器: 时钟分割-----------用于输入捕获-----可以不配置

计数方向-----------向上,向下计数

重装载值-----------减1

预分频 ------------减1

重复计数器---------用于TIM1,TIM8------可以不配置

4,配置输出比较寄存器

(在time.c中--TIM_OCXInit,这个X的值对应通道,用的是定时器的那个通道,X的值就为几)

配置结构体中的项

1,选择PWM工作模式,选择根据自己决定

2,选择极性,决定高有效还是低有效

3,选择是否允许输出

4,设置比较值

............(基本不配)

在主函数中初始化配置,进行写入分频值,重装载值

设置这个PWM波对比值是需要调已经有的库函数

也是在time.c文件中 TIM_SetCompareX,这个X的值也是根据使用的那个通道来决定的!
————————————————
版权声明:本文为CSDN博主「要将爱情进行到底」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_62909771/article/details/132731693

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1760

主题

15201

帖子

10

粉丝