单片机学习小组
登录
直播中
人走了
9年用户
894经验值
擅长:制造/封装 光电显示
私信
关注
定时器PWM模式的配置过程是怎样的呢
开启该帖子的消息推送
单片机
定时器
PWM
什么是脉冲宽度调制模式?
定时器PWM模式的配置过程是怎样的呢?
回帖
(1)
李玉华
2022-1-18 11:25:47
定时器PWM模式
介绍:
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。
在PWM模式下,TIMx_CNT和TIMx_CCRx时钟在进行比较,(依据计数器的计数方向)以确定是否符合TIMx_CNT≥TIMx_CCRx或者TIMx_CNT≤TIMx_CCRx。
OCxREF信号只能在下述条件下产生:
当比较的结果改变或者当输出比较模式从“冻结”切换到某个PWM模式。
[tr]PWM模式1PWM模式2[/tr]
向上计数
CNT
CNT
向下计数
CNT>CCR1低 否则高
CNT>CCR1 高 否则低
配置过程:
①:TIMx_CCMRx的OCxM位写“110”(PWM模式1)或者“111”(PWM模式2)。
②:TIMx_CCMRx的OCxPE位写“1”,使能TIMx_CCRx的预装载功能(CCRx)。
③:TIMx_CR1的ARPE位写"1",使能自动重装载的预装载功能(ARR)。
④:TIMx_EGR的UG位写“1”,重新初始化计数器。
⑤:TIMx_CCER的CCxP位控制OCx的极性(高电平有效、低电平有效)。
⑥:TIMx_CCER的CCxE位控制OCx的输出使能。
实验思路:
关于中央对齐模式的测试:
由图可知,当ARR=8,CCRx=4时,在CNT向上计数并且小于CCRx时,OCxREF输出高电平,在CNT向下计数且大于CCRx时,OCXREF输出低电平。所以这个波形的占空比为50%,设置计数周期为100us,则整个波形周期为1600us,通过改变CMS(中央对齐模式)可以在不同的状态下触发比较中断,对此我们进行实验验证。
注意:在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐模式。不推荐当运行在中央对齐模式时改写计数器,因为这会产生不可预知的结果 。如果写入计数器的值大于自动重加载的值(TIMx_CNT>TIMx_ARR),则方向不会被更新。
[tr]CMS=01CMS=02CMS=03[/tr]
只在计数器向下计数时被设置
只在计数器向上计数时被设置
在计数器向上和向下计数时均被设置
首先正常配置定时器为PWM模式1,ARR=8,PSC=7200-1,CCR1=4。一个计数周期为100us,在进入比较中断的时候把flag置1,在主函数中一直检测flag状态,置1时等待一个计数周期,这样我们就能查看到下一个CNT值。例如CMS=01时,在进入中断后CNT=4,如果延时一个计数周期,那么CNT=3,此时就可以发现CNT是在向下计数并且当不满足CNT>CCR1时触发了中断。类似的,我们改CMS=02,在进入中断后CNT=4,如果延时一个计数周期,那么CNT=5,此时就可以发现CNT是在向上计数并且当不满足CNT
定时器PWM模式
介绍:
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。
在PWM模式下,TIMx_CNT和TIMx_CCRx时钟在进行比较,(依据计数器的计数方向)以确定是否符合TIMx_CNT≥TIMx_CCRx或者TIMx_CNT≤TIMx_CCRx。
OCxREF信号只能在下述条件下产生:
当比较的结果改变或者当输出比较模式从“冻结”切换到某个PWM模式。
[tr]PWM模式1PWM模式2[/tr]
向上计数
CNT
CNT
向下计数
CNT>CCR1低 否则高
CNT>CCR1 高 否则低
配置过程:
①:TIMx_CCMRx的OCxM位写“110”(PWM模式1)或者“111”(PWM模式2)。
②:TIMx_CCMRx的OCxPE位写“1”,使能TIMx_CCRx的预装载功能(CCRx)。
③:TIMx_CR1的ARPE位写"1",使能自动重装载的预装载功能(ARR)。
④:TIMx_EGR的UG位写“1”,重新初始化计数器。
⑤:TIMx_CCER的CCxP位控制OCx的极性(高电平有效、低电平有效)。
⑥:TIMx_CCER的CCxE位控制OCx的输出使能。
实验思路:
关于中央对齐模式的测试:
由图可知,当ARR=8,CCRx=4时,在CNT向上计数并且小于CCRx时,OCxREF输出高电平,在CNT向下计数且大于CCRx时,OCXREF输出低电平。所以这个波形的占空比为50%,设置计数周期为100us,则整个波形周期为1600us,通过改变CMS(中央对齐模式)可以在不同的状态下触发比较中断,对此我们进行实验验证。
注意:在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐模式。不推荐当运行在中央对齐模式时改写计数器,因为这会产生不可预知的结果 。如果写入计数器的值大于自动重加载的值(TIMx_CNT>TIMx_ARR),则方向不会被更新。
[tr]CMS=01CMS=02CMS=03[/tr]
只在计数器向下计数时被设置
只在计数器向上计数时被设置
在计数器向上和向下计数时均被设置
首先正常配置定时器为PWM模式1,ARR=8,PSC=7200-1,CCR1=4。一个计数周期为100us,在进入比较中断的时候把flag置1,在主函数中一直检测flag状态,置1时等待一个计数周期,这样我们就能查看到下一个CNT值。例如CMS=01时,在进入中断后CNT=4,如果延时一个计数周期,那么CNT=3,此时就可以发现CNT是在向下计数并且当不满足CNT>CCR1时触发了中断。类似的,我们改CMS=02,在进入中断后CNT=4,如果延时一个计数周期,那么CNT=5,此时就可以发现CNT是在向上计数并且当不满足CNT
举报
更多回帖
rotate(-90deg);
回复
相关问答
单片机
定时器
PWM
STM32
定时器
总断
配置
过程
是
怎样
的
2021-11-23
720
为什么STM32单片机的
定时器
PWM
输入捕获
模式
无法读取编码
器
呢
2022-01-21
1547
通用TIMx
定时器
输出
PWM
配置
的流程是
怎样
的
2021-11-23
789
请问一下
怎样
正确的去设定
定时器
PWM
的
模式
?
2021-06-30
764
同一个
定时器
的两个通道
怎样
设置为不同的
PWM
模式
?
2023-10-17
320
通用
定时器
PWM
是如何工作的
2022-01-19
758
定时器
的原理是什么?
定时器
PWM
的原理又是什么
2021-11-24
1883
使用TIM2的基本
定时器
功能
配置
过程
是
怎样
的
2021-11-23
1389
Stm32
定时器
怎样
才能直接产生
pwm
波
呢
2021-11-23
1369
怎样
通过
定时器
控制管脚输出
PWM
信号
2021-11-25
1209
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分