DMA 循环输出 16 点正弦波
// 16点正弦表:sin(i/16*2π)*2047+2048, i=0..15
const uint16_t sine[16] = {2048,2812,3438,3757,3757,3438,2812,2048,
1284,658,339,339,658,1284,2048,0}; // 示例16点
DAC_HandleTypeDef hdac;
hdac.Instance = DAC;
HAL_DAC_Init(&hdac);
DAC_ChannelConfTypeDef cfg = {0};
cfg.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
cfg.DAC_Trigger = DAC_TRIGGER_T6_TRGO; // 定时器6触发
cfg.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;
HAL_DAC_ConfigChannel(&hdac, &cfg, DAC_CHANNEL_1);
HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1, (uint32_t*)sine, 16,
DAC_ALIGN_12B_R);
// 触发频率决定输出波形频率:16点×10kHz = 160kHz采样率