```C
数字模拟转换是一种将数字信号转换为模拟信号。本实验要求学生掌握 DAC 的使用及
其转换过程与规则。本实验涉及 RCC，GPIO，DAC，RCC 的配置
2.13.2 实验要求
掌握 DAC 原理及控制方法，通过万用表测试输出电压的正确性，或者通过 AD 通道读
取 DAC 输出的电压值，验证 DA 是否正确。
2.13.3 实验原理：
STM32 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入，电压输出型的 DAC。
DAC 可以配置为 8 位或 12 位模式，也可以与 DMA 控制器配合使用。DAC 工作在 12 
位模式时，数据可以设置成左对齐或右对齐。DAC 模块有 2 个输出通道，每个通道都有单
独的转换器。在双 DAC 模式下，2 个通道可以独立地进行转换，也可以同时进行转换并同
步地更新 2 个通道的输出。实验板电路如图所示，DA 输出引脚为 PA4。输出电压可以通过
TP13 使用万用表进行测试，也可连接到 JP9 的 3 脚，利用 CPU 的 AD 输入进行检测。
STM32 的 DAC 模块主要特点有：
① 2 个 DAC 转换器：每个转换器对应 1 个输出通道
② 8 位或者 12 位单调输出
③ 12 位模式下数据左对齐或者右对齐
④ 同步更新功能
⑤ 噪声波形生成
⑥ 三角波形生成
⑦ 双 DAC 通道同时或者分别转换
⑧ 每个通道都有 DMA 功能
配置代码如下：
RCC->APB2ENR|=1<<2; //使能 PORTA 时钟 
RCC->APB1ENR|=1<<29; //使能 DAC 时钟 
GPIOA->CRL&=0XFFF0FFFF; 
GPIOA->CRL|=0X00000000; //PA4 模拟输入 
DAC->CR|=1<<0; //使能 DAC1
DAC->CR|=1<<1; //DAC1 输出缓存不使能 BOFF1=1
DAC->CR|=0<<2; //不使用触发功能 TEN1=0
DAC->CR|=0<<3; //DAC TIM6 TRGO,不过要 TEN1=1 才行
DAC->CR|=0<<6; //不使用波形发生
DAC->CR|=0<<8; //屏蔽、幅值设置
DAC->CR|=0<<12; //DAC1 DMA 不使能 
DAC->DHR12R1=0; //数据保持寄存器置 0
2.13.4 实验步骤
1）连接仿真器 USB 线，注意此时 USB 线不要和 PC 连接
2）连接仿真和开发板之间的 20 芯排线
3）仿真器 USB 线插入电脑 USB 接口
4）下载程序并调试，分析并检验实验结果。
```