完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
4个回答
|
|
STM8 PWM模式
STM8的脉冲宽度调制(PWM)模式可以产生一个由TIM1_ARR寄存器确定频率、由TIM1_CCRi寄存器确定占空比的信号。 在TIM1_CCMRi寄存器中的OCiM位写入‘110’(PWM模式1)或‘111’(PWM模式2),能够独立地设置每个OCi输出通道产生一路PWM。必须设置TIM1_CCMRi寄存器的OCiPE位使能相应的预装载寄存器,也可以设置TIM1_CR1寄存器的ARPE位使能自动重装载的预装载寄存器(在向上计数模式或中央对称模式中)。 由于仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIM1_EGR寄存器的UG位来初始化所有的寄存器。 OCi的极性可以通过软件在TIM1_CCERi寄存器中的CCiP位设置,它可以设置为高电平有效或低电平有效。OCi的输出使能通过(TIM1_CCERi和TIM1_BKR寄存器中)CCiE、MOE、OISi和OSSR位和OSSI位的组合来控制。详见TIM1_CCERi寄存器的描述。 在PWM模式(模式1或模式2)下,TIM1_CNT和TIM1_CCRi始终在进行比较,(依据计数器的计数方向)以确定是否符合TIM1_CCRi≤TIM1_CNT或者TIM1_CNT≤TIM1_CCRi。 根据TIM1_CR1寄存器中CMS位域的状态,定时器能够产生边沿对齐的PWM信号或中央对齐的PWM信号。 |
|
|
|
PWM边沿对齐模式
向上计数配置 当TIM1_CR1寄存器中的DIR位为低的时候执行向上计数。 下面是一个PWM模式1的例子。当TIM1_CNT《TIM1_CCRi时,PWM参考信号OCiREF为高,否 则为低。如果TIM1_CCRi中的比较值大于自动重装载值(TIM1_ARR),则OCiREF保持为‘1’。如 果比较值为0,则OCiREF保持为‘0’。下图为TIM1_ARR=8时边沿对齐的PWM波形实例。 (图67:STM8边沿对齐,PWM模式1的波形(ARR=8)) 向下计数的配置 当TIM1_CR1寄存器的DIR位为高时执行向下计数。 在PWM模式1时,当TIM1_CNT》TIM1_CCRi时参考信号OCiREF为低,否则为高。如果TIM1_CCRi中的比较值大于TIM1_ARR中的自动重装载值,则OCiREF保持为‘1’。该模式下不能产生0%的PWM波形。 |
|
|
|
PWM中央对齐模式
当TIM1_CR1寄存器中的CMS位不为‘00’时为中央对齐模式(所有其他的配置对OCiREF/OCi信号都有相同的作用)。 根据不同的CMS位的设置,比较标志可以在计数器向上计数,向下计数,或向上和向下计数时被置1。TIM1_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。参看17.3.6的中央对齐模式。 图68给出了一些中央对齐的PWM波形的例子 TIMx_ARR=8 PWM模式1 标志位在以下三种情况下被置位(以箭头形式在─中标出) ─只有在计数器向下计数时(CMS=01) ─只有在计数器向上计数时(CMS=10) ─在计数器向上和向下计数时(CMS=11) |
|
|
|
单脉冲模式
STM8单脉冲模式(OPM)是前述众多模式的一个特例。这种模式允许计数器响应一个激励,并在一个程序可控的延时之后产生一个脉宽可控的脉冲。 可以通过时钟/触发控制器启动计数器,在输出比较模式或者PWM模式下产生波形。设置TIM1_CR1寄存器的OPM位将选择单脉冲模式,此时计数器自动地在下一个更新事件UEV时停止。 仅当比较值与计数器的初始值不同时,才能产生一个脉冲。启动之前(当定时器正在等待触发),必须如下配置: 向上计数方式:计数器CNT《CCRi≤ARR, 向下计数方式:计数器CNT》CCRi。 (图48:STM8单脉冲模式图例) 例如,你需要在从TI2输入脚上检测到一个上升沿之后,延迟tDELAY,在OC1上产生一个tPULSE宽度的正脉冲: 假定IC2作为触发1通道的触发源: 置TIM1_CCMR2寄存器的CC2S=01,把IC2映射到TI2。 置TIM1_CCER1寄存器的CC2P=0,使IC2能够检测上升沿。 置TIM1_SMCR寄存器的TS=110,使IC2作为时钟/触发控制器的触发源(TRGI)。 置TIM1_SMCR寄存器的SMS=110(触发模式),IC2被用来启动计数器。 OPM的波形由写入比较寄存器的数值决定(要考虑时钟频率和计数器预分频器) tDELAY由TIM1_CCR1寄存器中的值定义。 tPULSE由自动装载值和比较值之间的差值定义(TIM1_ARR–TIM1_CCR1)。 假定当发生比较匹配时要产生从0到1的波形,当计数器达到预装载值时要产生一个从1到0的波形;首先要置TIM1_CCMR1寄存器的OCiM=111,进入PWM模式2;根据需要有选择地设置TIM1_CCMR1寄存器的OC1PE=1,置位TIM1_CR1寄存器中的ARPE,使能预装载 寄存器;然后在TIM1_CCR1寄存器中填写比较值,在TIM1_ARR寄存器中填写自动装载值,设置UG位来产生一个更新事件,然后等待在TI2上的一个外部触发事件。 在这个例子中,TIM1_CR1寄存器中的DIR和CMS位应该置低。 因为只需要一个脉冲,所以设置TIM1_CR1寄存器中的OPM=1,在下一个更新事件(当计数器从自动装载值翻转到0)时停止计数。 特殊情况:OCx快速使能 在单脉冲模式下,对TIi输入脚的边沿检测会设置CEN位以启动计数器。然后计数器和比较值间的比较操作产生了单脉冲的输出。但是这些操作需要一定的时钟周期,因此它限制了可得到的最小延时tDELAY。 如果要以最小延时输出波形,可以设置TIM1_CCMRi寄存器中的OCiFE位;此时强制OCiREF(和OCx)直接响应激励而不再依赖比较的结果,输出的波形与比较匹配时的波形一样。 OCiFE只在通道配置为PWM1和PWM2模式时起作用。 |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1074浏览 3评论
195浏览 2评论
457浏览 2评论
370浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 11:02 , Processed in 1.094657 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号