C/C++教程

【STM32F4】HAL库 CubeMX(十五)--------DAC实验

本文主要是介绍【STM32F4】HAL库 CubeMX(十五)--------DAC实验,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、DAC是什么?
  • 二、DAC实验
    • 1.实验所需配置功能
    • 2.功能配置
    • 3.时钟配置
    • 4.生成代码


前言

STM32F4 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。DAC
可以配置为 8 位或 12 位模式,也可以与 DMA 控制器配合使用。DAC 工作在 12 位模式时,
数据可以设置成左对齐或右对齐。DAC 模块有 2 个输出通道,每个通道都有单独的转换器。
在双 DAC 模式下,2 个通道可以独立地进行转换,也可以同时进行转换并同步地更新 2 个
通道的输出。DAC 可以通过引脚输入参考电压 Vref+(通 ADC 共用)以获得更精确的转换
结果。

一、DAC是什么?

STM32F4 的 DAC 模块主要特点有:
① 2 个 DAC 转换器:每个转换器对应 1 个输出通道
② 8 位或者 12 位单调输出
③ 12 位模式下数据左对齐或者右对齐
④ 同步更新功能
⑤ 噪声波形生成
⑥ 三角波形生成
⑦ 双 DAC 通道同时或者分别转换
⑧ 每个通道都有 DMA 功能

二、DAC实验

1.实验所需配置功能

由于原子在本讲用的模块较多,我们只是测试,所以仅挑了部分,可表示实验结果就行。
1) 串口
2) ADC
3) DAC

2.功能配置

在这里插入图片描述

3.时钟配置

RCC时钟配置如前文一样(此处一般情况是不变的)。
【STM32F4】HAL库 CubeMX(一)--------创建工程(点亮LED)

4.生成代码

在这里插入图片描述
仿自原子的DAC设置函数,可多次自己设置电压值

	HAL_ADC_Start(&hadc1);
	temp = 2.5;//2.5V
	temp/=1000;
	temp=temp*4096/3.3;
	HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, temp);

来源于ADC例程

		HAL_ADC_PollForConversion(&hadc1, 50);
		if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))
		{
			ADC_Value = HAL_ADC_GetValue(&hadc1);
			printf("PA5 True Voltage value : %.4f \r\n",ADC_Value*3.3f/4096);
			HAL_Delay(500);
		}

在这里插入图片描述

这篇关于【STM32F4】HAL库 CubeMX(十五)--------DAC实验的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!