一、stm32的dac功能输出电压

本文介绍了一个基于 STM32 的 DAC (数字模拟转换器) 控制程序的实现细节。主要内容包括如何通过按键控制 DAC 的输出电压,并通过 UART 串口实时显示 DAC 的输出值。文中展示了具体的 C 语言代码实现,包括 DAC 和 UART 的初始化配置、DAC 输出值的设置以及按键控制等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、软件配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、配置

void DAC1_Set_Vol(uint16_t vol)
{
	double temp=vol;
	temp/=1000;
	temp=temp*4096/3.3;
  HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,temp);//设置输出dac值
}


int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}
int fgetc(FILE * f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1,&ch, 1, 0xffff);
  return ch;
}
  
    uint16_t adcx;
	float temp;
 	uint8_t t=0;	 
	uint16_t dacval=0;
	uint8_t key;
		
   MX_USART1_UART_Init(); 
   MX_DAC_Init(); 
   MX_GPIO_Init();
   while (1)
   {
		if(	HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_4)==0)
		{
						if(dacval<4000)dacval+=200;
            HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,dacval);//设置按键控制dac输出的步进值增加。
		}
		if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)==0)	
		{
			if(dacval>200)
				dacval-=200;
			else dacval=0;
            HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_12B_R,dacval);//设置按键控制dac输出的步进值减少。
		}	 
		HAL_Delay(200);
    adcx=HAL_DAC_GetValue(&hdac,DAC_CHANNEL_1);
		temp=(float)adcx*(3.3/4096);			    //将dac通道里的值通过比值转化过来
			adcx=temp;
		printf("int temp:%f ,",temp);//整数部分
			temp-=adcx;
			temp*=1000;
		printf("float temp:%f\n",temp);//小数部分
	

	
	}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值