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

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扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版