STM32F103ZET6【HAL函开发】STM32CUBEMX-------DAC

STM32F103ZET6【HAL函开发】STM32CUBEMX-------DAC

STM32F103ZET6中只有两个DAC分别是:
DAC_OUT1------>PA4
DAC_OUT2------>PA5
在这里插入图片描述
本文中配置DAC_OUT2来进行使用,ADC1通道8来进行电压采集。
在这里插入图片描述

1. 首先配置外部时钟

选择外部晶振
在这里插入图片描述
这里可以配置成72M,也可以不用配置。在这里插入图片描述

2 . 配置ADC

配置ADC通道8,我们不要其他模式,只要普通模式即可。在这里插入图片描述

3.配置DAC

配置DAC_OUT2,并查看是否使用
在这里插入图片描述

4.配置串口

STM32F103ZET6中使用数据线连接的口是串口1(USART1)
PA9--------->TX
PA10------->RX
在这里插入图片描述

5.生成项目做准备

填写工程名和选择合适的MDK就行。
在这里插入图片描述在这里插入图片描述

6.代码编辑

/* USER CODE BEGIN Includes */
#include "string.h"
/* USER CODE END Includes */
/* USER CODE BEGIN PTD */
uint8_t adc_date[]={0};
uint32_t adc_value=0;
uint16_t dac_value=2000;  //在后面循环中该参数也需要修改,DAC输入的参数,,范围0~4096
/* USER CODE END PTD */
/* USER CODE BEGIN 0 */

//ADC的转换
uint16_t adc_get_value()
{
	uint16_t adcValue=0;
	HAL_ADC_Start(&hadc1);
	if(HAL_ADC_PollForConversion(&hadc1,10)==HAL_OK)
		adcValue=HAL_ADC_GetValue(&hadc1);
	HAL_ADC_Stop(&hadc1);
	return adcValue;
}
/* USER CODE END 0 */
  /* USER CODE BEGIN 2 */
	HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_12B_R,dac_value); //DAC数值的设置
	HAL_DAC_Start(&hdac,DAC_CHANNEL_2);  //开启DAC
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
 uint8_t adcbuff[]={0};
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		dac_value=1000;
		adc_value=adc_get_value()*3300/4096 ;
		dac_value=dac_value*3300/4096;
		sprintf((char *)adcbuff,"DAC输出电压:%d.%d  采样电压:%d.%d",dac_value/1000,dac_value%1000,adc_value/1000,adc_value%1000);  //转换成字符串
		HAL_UART_Transmit(&huart1,adcbuff,strlen((const char*)adcbuff),0xffff);
		HAL_Delay(1000);
		
  }
  /* USER CODE END 3 */

以上就是本工程全部代码。

7.实验结果

在这里插入图片描述在这里插入图片描述
工程到此就完成了。需要完整工程的链接如下:链接:https://pan.baidu.com/s/1ZmWdf7z9xtO-FhOh7fmGbA?pwd=acyw
提取码:acyw

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值