实验要求:输出DAC1通道1(PA4)输出三角波。然后关闭通道1触发(TEN1位置0),关闭输出缓冲(BOFF1位置1),使用12位右对齐模式,将数字量写入DAC_DHR12R1寄存器。
接下来介绍产生三角波的函数。第一个参数为最大值的数字量,取值为0~4095,比如取值2048时候,输出最高值为1.65V;第二个参数为采样点的间隔时间,第三个参数为采样点的数量,而周期为采样点间隔时间 * 采样点的数量;第四个参数是总体产生的波形个数。采样点个数的约束如下:(采样点个数/2)<=(最大数字量 + 1)。
void dac_triangular_wave(uint16_t maxval, uint16_t dt, uint16_t samples, uint16_t n)
{
float incval;
float curval;
if(samples > ((maxval + 1) * 2)) return;
incval = (maxval + 1) / (samples / 2);
for(u16 j = 0; j < n; j++)
{
curval = 0;
HAL_DAC_SetValue(&DAC_HANDLE, channel, DAC_ALIGN_12B_R, curval);
for(u16 i = 0; i < (samples/2); i++) //上升波
{
curval += incval;
HAL_DAC_SetValue(&DAC_HANDLE, channel, DAC_ALIGN_12B