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

STM32F103利用DMA控制PWM占空比出现错误

[复制链接]
crashdown 提问时间:2016-12-23 10:39 /
本帖最后由 crashdown 于 2016-12-26 09:34 编辑

新手求助,我想用DMA控制PWM占空比以控制舵机转动,在占空比减少的情况下没有问题,可是在占空比累加的情况下只会输出最后一个数据,增加每两个数据之间的差值情况会有所好转,但是还是会存在一定问题,请问是什么原因?

测试数据:
累加:300,309,319,328,338,348,357,367,376,386,396,405,415,424,434,444,453,463,472,482,492,501,511,520,530,540,549,559,568,578,588,597,607,616,626,636,645,655,664,674,684,693,703,712,722,732,741,751,760,770,

累减:780,770,760,751,741,732,722,712,703,693,684,674,664,655,645,636,626,616,607,597,588,578,568,559,549,540,530,520,511,501,492,482,472,463,453,444,434,424,415,405,396,386,376,367,357,348,338,328,319,309,

程序配置:
DMA_Config(uint_16t* action_buf, uint_16t action_size) {
  RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, input_state);

  DMA_InitTypeDef DMA_InitStructure;
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)action_buf;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;
  DMA_InitStructure.DMA_BufferSize = action_size;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Normal;
  DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;
  DMA_InitStructure.DMA_PeripheralBaseAddr = TIM1_BASE + 0x34;
  DMA_Init(DMA1_Channel3, &DMA_InitStructure);
  DMA_ITConfig(DMA1_Channel3, DMA_IT_TC, ENABLE);
  TIM_DMACmd(TIM1, TIM_DMA_CC1, ENABLE);
  DMA_Cmd(DMA1_Channel3, ENABLE);
}


<
收藏 1 评论12 发布时间:2016-12-23 10:39

举报

12个回答
jackten 回答时间:2016-12-23 11:15:55
                                 
crashdown 回答时间:2016-12-23 11:18:27

大神有遇到过吗这种问题吗?
ts2000 回答时间:2016-12-23 11:24:02
配置有问题吧?
crashdown 回答时间:2016-12-23 11:30:29
ts2000 发表于 2016-12-23 11:24
配置有问题吧?

主要在传输数据递减的情况下是正常的,累加的情况下会出现直接传输最后一个数据的情况。我用示波器看了下,占空比在数据累加的情况下也是直接跳转到最后一个数据的占空比。
五哥1 回答时间:2016-12-23 23:26:55
累加和累减的程序看一下

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

shuolang126 回答时间:2016-12-24 08:15:16
肯定程序有问题
crashdown 回答时间:2016-12-26 09:28:47
五哥1 发表于 2016-12-23 23:26
累加和累减的程序看一下

大神,上传了DMA配置,你看看有没有什么问题,数据的话是那个数组直接传输。
crashdown 回答时间:2016-12-26 09:29:09

大神,上传了部分程序,你看看有没有错误
shuolang126 回答时间:2016-12-31 08:11:19
程序不完整,缺少TIM的初始化代码!input_state状态不明

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

12下一页

所属标签

相似问题

官网相关资源

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