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

Cube中TIM_DMA例程问题

[复制链接]
reynoldxu 提问时间:2016-4-13 12:48 /
本帖最后由 reynoldxu 于 2016-4-13 13:01 编辑

Hi all:

最近在使用Cube 的Timer中碰到一些问题,请大家一起看看是什么问题

目的:
输出固定个数的占空比可变方波,比如800kHZ,20%,20%,40%,60%,80%,100%,驱动WS2812S LED灯

硬件:
STM32-Nucleo-F303RE

实现:
参考CubeF3中的例程(STM32Cube_FW_F3_V1.4.0\Projects\STM32F303RE-Nucleo\Examples\TIM\TIM_DMA)能够输出占空比可变的PWM,但是历程中似乎没有写完整,实际测到pwm波形并不是有限个数而是无限个,大于DMA目标个数后的PWM占空比为DMA最后一次传送给Timer_CCR的值.

思考可能是因为Start_DMA之后没有关闭而产生的问题,在HAL_TIM_PWM_PulseFinishedCallback回调中加入HAL_TIM_PWM_Stop_DMA.
观测波形,发现可以停止PWM不停产生,但是仍然会多出几个脉冲,将DMA优先级与NVIC优先级调成最高情况一样
参考"STM32L053可控PWM脉冲方法之DMA,[原文链接,提及在使用Cube库中可能需要增加预分频系数来提高响应?增加预分频系数到15之后问题依旧

综上所述:
1.STM32Cube_FW_F3_V1.4.0总关于TIM_DMA的例程是否有Bug不全或者是需要修改?
2.当在HAL_TIM_PWM_PulseFinishedCallback回调中加入HAL_TIM_PWM_Stop_DMA后任然无法及时响应,可能的改善方法?
3.在实际的测试中发现,每次启动HAL_TIM_PWM_Start_DMA后,第一个脉冲数据总是有些问题,如图所示,该如何解决?

核心代码如下:
  1. uint8_t pwm_duty[19]={1,1,2,3,4,5};

  2. int main(void)
  3. {
  4. ...//各种初始化
  5.     while (1)
  6.     {
  7.         HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t *)&pwm_duty[0], 6);
  8.         HAL_Delay(10);
  9.     }
  10. }

  11. void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
  12. {
  13.     if(htim->Instance == TIM1 )
  14.     {
  15.         HAL_TIM_PWM_Stop_DMA(&htim1, TIM_CHANNEL_1);
  16.     }
  17. }
复制代码

相关代码与波形文件截图在如下地址:
http://coding.net/u/reynoldxu/p/testPWM_DMA/git

错误的波形图如下:
http://coding.net/u/reynoldxu/p ... blob/master/pic.png

收藏 评论3 发布时间:2016-4-13 12:48

举报

3个回答
mark0668 回答时间:2016-4-13 13:45:13
方法一;你的DMA是单次模式,改为循环模式,就不会输出后面几个连续的PWM而是重复重新开始
方法二,是因为用了库的原因,处理不够定时器快输出了几个PWM才执行到关闭定时器的函数。
废鱼 回答时间:2016-4-13 17:33:26
while (1)

    {

        HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t *)&pwm_duty[0], 6);

        HAL_Delay(10);

    }
这里判断执行完后再开始。
爱因福尔 回答时间:2017-6-7 17:03:23
兄弟,你问题解决了。我也是同样的问题,其余都正常,就是第一个led有时候会出问题,我查了一圈发现就你是用的STM32+HAL+TIM+DMA+WS2812B

所属标签

相似问题

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