话不多说,直接展示效果,可以看到很平滑。
这是因为经过卡尔曼滤波算法输出的波形,加上输出的数组点数为512个精细值;
1、配置DAC+DMA
配置定时器2
打开定时器中断
2、书写代码
在main前启用定时器和DMA+DAC,
HAL_TIM_Base_Start(&htim2);
HAL_DAC_Start_DMA(&hdac,DAC_CHANNEL_1,(uint32_t*)Sine12bit,512,DAC_ALIGN_12B_R);//开启输出
写一个正弦数组,现贴出512个数的数组
const uint32_t Sine12bit[]={
2048, 2073, 2098, 2124, 2149, 2174, 2199, 2224, 2249, 2274, 2299, 2324, 2349, 2374, 2399, 2424, 2448, 2473, 2498, 2522, 2547, 2571, 2595, 2619, 2644, 2668, 2692, 2715, 2739, 2763, 2786, 2810, 2833, 2856, 2879, 2902, 2925, 2948, 2970, 2993, 3015, 3037, 3059, 3081, 3103, 3124, 3146, 3167, 3188, 3209, 3229, 3250, 3270, 3290, 3310, 3330, 3349, 3369, 3388, 3407, 3426, 3444, 3462, 3480, 3498, 3516, 3533, 3551, 3568, 3584, 3601, 3617, 3633, 3649, 3665, 3680, 3695, 3710, 3725, 3739, 3753, 3767, 3780, 3794, 3807, 3820, 3832, 3844, 3856, 3868, 3879, 3890, 3901, 3912, 3922, 3932, 3942, 3951, 3960, 3969,
3978, 3986, 3994, 4002, 4009, 4016, 4023,