已经解决,主要是有两个问题,第一个问题是DMA配置结构体的参数设置问题,正确应该使用:dma_init_struct.periph_memory_width = DMA_PERIPH_WIDTH_16BIT;
第二问题是DAC初始化的问题,正确初始化应该为一下代码:
- //配置DAC输出引脚
- rcu_periph_clock_enable(RCU_GPIOA);
- rcu_periph_clock_enable(RCU_DAC);
-
- gpio_mode_set(GPIOA, GPIO_MODE_ANALOG, GPIO_PUPD_NONE, GPIO_PIN_4);
- //gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
-
- //配置DAC
- dac_deinit(DAC0);
-
- //触发源选择(定时器5)
- dac_trigger_source_config(DAC0, DAC_OUT0, DAC_TRIGGER_T5_TRGO);
- //dac_output_buffer_disable(DAC0, DAC_OUT0); //使用这个配置函数波形会出现偏移
- //触发使能
- dac_trigger_enable(DAC0, DAC_OUT0);
- dac_wave_mode_config(DAC0, DAC_OUT0, DAC_WAVE_DISABLE);
- dac_enable(DAC0, DAC_OUT0);
- //使能DAC的DMA
- dac_dma_enable(DAC0, DAC_OUT0);
|