匿名
未登录
登录
丢石头百科
搜索
查看“STM8 PWM模式”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
STM8 PWM模式
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
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信号。 <strong>PWM边沿对齐模式</strong><li>向上计数配置 当TIM1_CR1寄存器中的DIR位为低的时候执行向上计数。 下面是一个PWM模式1的例子。当TIM1_CNT<TIM1_CCRi时,PWM参考信号OCiREF为高,否 则为低。如果TIM1_CCRi中的比较值大于自动重装载值(TIM1_ARR),则OCiREF保持为'1'。如 果比较值为0,则OCiREF保持为'0'。下图为TIM1_ARR=8时边沿对齐的PWM波形实例。 <blockquote> [[File:STM8_P135_1.jpg]] (图67:STM8边沿对齐,PWM模式1的波形(ARR=8))</blockquote></li><li>向下计数的配置 当TIM1_CR1寄存器的DIR位为高时执行向下计数。 在PWM模式1时,当TIM1_CNT>TIM1_CCRi时参考信号OCiREF为低,否则为高。如果TIM1_CCRi中的比较值大于TIM1_ARR中的自动重装载值,则OCiREF保持为'1'。该模式下不能产生0%的PWM波形。 </li> PWM中央对齐模式 当TIM1_CR1寄存器中的CMS位不为'00'时为中央对齐模式(所有其他的配置对OCiREF/OCi信号都有相同的作用)。 根据不同的CMS位的设置,比较标志可以在计数器向上计数,向下计数,或向上和向下计数时被置1。TIM1_CR1寄存器中的计数方向位(DIR)由硬件更新,不要用软件修改它。参看17.3.6的中央对齐模式。 图68给出了一些中央对齐的PWM波形的例子<li>TIMx_ARR=8 </li><li>PWM模式1 </li><li>标志位在以下三种情况下被置位(以箭头形式在─中标出) ─只有在计数器向下计数时(CMS=01) ─只有在计数器向上计数时(CMS=10) ─在计数器向上和向下计数时(CMS=11) </li><blockquote style="color: rgb(72, 61, 139); font-family: Arial, 新宋体, 微软雅黑; font-size: 12px; line-height: 20px;"> [[File:STM8_P136_1.jpg]] (图68:STM8中央对齐的PWM波形(APR=8))</blockquote> 单脉冲模式 STM8单脉冲模式(OPM)是前述众多模式的一个特例。这种模式允许计数器响应一个激励,并在一个程序可控的延时之后产生一个脉宽可控的脉冲。 可以通过时钟/触发控制器启动计数器,在输出比较模式或者PWM模式下产生波形。设置TIM1_CR1寄存器的OPM位将选择单脉冲模式,此时计数器自动地在下一个更新事件UEV时停止。 仅当比较值与计数器的初始值不同时,才能产生一个脉冲。启动之前(当定时器正在等待触发),必须如下配置:<li>向上计数方式:计数器CNT<CCRi≤ARR, </li>* 向下计数方式:计数器CNT>CCRi。<blockquote style="color: rgb(72, 61, 139); font-family: Arial, 新宋体, 微软雅黑; font-size: 12px; line-height: 20px;"> [[File:STM8_P137_1.jpg]] (图48:STM8单脉冲模式图例)</blockquote> 例如,你需要在从TI2输入脚上检测到一个上升沿之后,延迟tDELAY,在OC1上产生一个tPULSE宽度的正脉冲: 假定IC2作为触发1通道的触发源:<li>置TIM1_CCMR2寄存器的CC2S=01,把IC2映射到TI2。 </li><li>置TIM1_CCER1寄存器的CC2P=0,使IC2能够检测上升沿。 </li><li>置TIM1_SMCR寄存器的TS=110,使IC2作为时钟/触发控制器的触发源(TRGI)。 </li><li>置TIM1_SMCR寄存器的SMS=110(触发模式),IC2被用来启动计数器。 OPM的波形由写入比较寄存器的数值决定(要考虑时钟频率和计数器预分频器) </li><li>tDELAY由TIM1_CCR1寄存器中的值定义。 </li><li>tPULSE由自动装载值和比较值之间的差值定义(TIM1_ARR–TIM1_CCR1)。 </li><li>假定当发生比较匹配时要产生从0到1的波形,当计数器达到预装载值时要产生一个从1到0的波形;首先要置TIM1_CCMR1寄存器的OCiM=111,进入PWM模式2;根据需要有选择地设置TIM1_CCMR1寄存器的OC1PE=1,置位TIM1_CR1寄存器中的ARPE,使能预装载 寄存器;然后在TIM1_CCR1寄存器中填写比较值,在TIM1_ARR寄存器中填写自动装载值,设置UG位来产生一个更新事件,然后等待在TI2上的一个外部触发事件。 </li> 在这个例子中,TIM1_CR1寄存器中的DIR和CMS位应该置低。 因为只需要一个脉冲,所以设置TIM1_CR1寄存器中的OPM=1,在下一个更新事件(当计数器从自动装载值翻转到0)时停止计数。 特殊情况:OCx快速使能 在单脉冲模式下,对TIi输入脚的边沿检测会设置CEN位以启动计数器。然后计数器和比较值间的比较操作产生了单脉冲的输出。但是这些操作需要一定的时钟周期,因此它限制了可得到的最小延时tDELAY。 如果要以最小延时输出波形,可以设置TIM1_CCMRi寄存器中的OCiFE位;此时强制OCiREF(和OCx)直接响应激励而不再依赖比较的结果,输出的波形与比较匹配时的波形一样。 OCiFE只在通道配置为PWM1和PWM2模式时起作用。
返回至
STM8 PWM模式
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志