你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8s 停止输出pwm后,输出IO口的电平问题解决

[复制链接]
vilsenma 发布时间:2018-7-20 16:54
问题:在使用定时器输出PWM时,假如此时关闭PWM的输出,其IO口会出现高低电平交替出现的情况!1.代码设置:TIM2->CCER2寄存器设置的是输出使能和输出有效电平为低电平;

  1. /* Disable the Channel 1: Reset the CCE Bit, Set the Output State, the Output Polarity(low) */
  2.         TIM2->CCER2 &= (uint8_t)(~( TIM2_CCER2_CC3E  | TIM2_CCER2_CC3P));
  3.         /* Set the Output State & Set the Output Polarity */
  4.         TIM2->CCER2 |= (uint8_t)((uint8_t)(0x11 & TIM2_CCER2_CC3E) | (uint8_t)(0x02 & TIM2_CCER2_CC3P));
  5.         /* Reset the Output Compare Bits & Set the Output Compare Mode(PWM1) */
  6.         TIM2->CCMR3 = (uint8_t)((uint8_t)(TIM2->CCMR3 & (uint8_t)(~TIM2_CCMR_OCM)) |<font color="#ff0000"> (uint8_t)0x60</font>);
复制代码
2.停止输出PWN:先使能定时器,然后强制输出为有效电平

  1. /* Disable timer2 */
  2.     TIM2->CR1 &= (uint8_t)(~TIM2_CR1_CEN);
  3.         /* Reset the OCM Bits & Configure the Forced output Mode */
  4.         TIM2->CCMR3  =        (uint8_t)((uint8_t)(TIM2->CCMR3 & (uint8_t)(~TIM2_CCMR_OCM)) | <font color="#ff0000">(uint8_t)0x50</font>);
复制代码
3.重新启动定时器输出PWM:重新配置位输出PWM1模式,启动定时器
  1. /* Reset the OCM Bits & Configure the Forced output Mode */
  2.                                                 TIM2->CCMR3  =        (uint8_t)((uint8_t)(TIM2->CCMR3 & (uint8_t)(~TIM2_CCMR_OCM)) | <font color="#ff0000">(uint8_t)0x60</font>);
  3.                                                 TIM2->CR1 |= (uint8_t)TIM2_CR1_CEN;                 //产生pwm
复制代码
4.至于上面红色的设置关键字:
来自于stm8s参考手册TIMx_CCMR1

stm8s参考手册——CCMR3寄存器

stm8s参考手册——CCMR3寄存器
收藏 评论2 发布时间:2018-7-20 16:54

举报

2个回答
fanyao-367090 回答时间:2018-7-30 17:14:18
楼主这个是求助还是分享啊,没看懂
vilsenma 回答时间:2018-7-31 08:48:14
分享啊

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版