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);//小数部分
	

	
	}

更多推荐