已经解决,主要是有两个问题,第一个问题是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);
|