STM32 DMA normal 模式下 再次开启DMA 传输

硬件平台:STM32F407ZET      

使用标准库

DMA配置:

DMA_InitTypeDef  DMA_InitStructure;

  //DMA_DeInit(DAC_DMA_STREAM); //Deinitialize the DMAy Streamx registers to their default reset values.
  /* 使能DMA1时钟 */
  RCC_AHB1PeriphClockCmd(DAC_DMA_CLK, ENABLE);
	
	/* 配置DMA1 */
  DMA_InitStructure.DMA_Channel = DAC_DMA_CHANNEL;
  DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_WAVEADDRESS;	  //外设数据地址
  DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&data12bit ;  //内存数据地址
  DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;	      //数据传输方向内存至外设
  DMA_InitStructure.DMA_BufferSize = POINT_NUM;								//缓存大小为POINT_NUM字节	
  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_High;						    //高DMA通道优先级
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;	

  DMA_Init(DAC_DMA_STREAM, &DMA_InitStructure);
	
  DMA_Cmd(DAC_DMA_STREAM, DISABLE);

再次启用DMA传输

    DMA_Cmd(DAC_DMA_STREAM, DISABLE);
    DMA_SetCurrDataCounter(DAC_DMA_STREAM,POINT_NUM);
    DMA1->HIFCR = (uint32_t)DMA_Stream6_IT_MASK; //中断标志清零(DMA_Stream6_IT_MASK在stm32f4xx_dma.c中定义,放到头文件中使用)
    DMA_Cmd(DAC_DMA_STREAM, ENABLE);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kekehuizi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值