打印
[STM32F0]

stm32f072 DMA传输数据的问题

[复制链接]
1328|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
winrar|  楼主 | 2016-10-21 10:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 winrar 于 2016-10-21 10:40 编辑

请教大家个问题啊:
用STM32F072C8,DMA传输数据到DAC
PA5管脚输出,用DMA1_Channel4,TIM2作为TRGO
配置好DMA1_Channel4,使能

DMA1->ISR中DMA1_Channel4除传输错误外立马全部置1
{
  DMA1_Channel4->CPAR = DAC_DHR12R_Address;
  DMA1_Channel4->CMAR = (uint32_t)&Sine12bit;
  DMA1_Channel4->CNDTR = 640;
  DMA1_Channel4->CCR = 0x00002590;
  DMA1_Channel4->CCR |= DMA_CCR_EN;

  while(DMA1->ISR&DMA_ISR_TCIF4 == 0){;}
  DMA1_Channel4->CCR &= (uint16_t)(~DMA_CCR_EN);
  DMA1->IFCR |= DMA1_CHANNEL4_IT_MASK;
}
最后三句话不加的话能输出20个正弦波(Sine12bit数据)
加了最后三句话没正弦波
抓波形的话就只输出第一个数据就立马停止了
单步调试的话
DMA1_Channel4->CCR |= DMA_CCR_EN;
执行完毕后,DMA1->ISR&DMA_ISR_TCIF4就立马置位了

哪位大神给点建议啊
沙发
winrar|  楼主 | 2016-10-21 11:47 | 只看该作者
程序问题。&与==优先级的关系
真是汗了
调试的时候看寄存器应该不准确
while((DMA1->ISR&DMA_ISR_TCIF4) == 0){;}
结贴

使用特权

评论回复
板凳
皈依| | 2016-10-22 09:14 | 只看该作者
楼主自己提出问题,自己解决,还把解决办法发出来了,值得提倡!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

35

帖子

0

粉丝