STM32HAL库使用DAC输出任意指定电压

1-uart.c实现重定向,记得包含stdio.h

int fputc(int ch,FILE* f)
{
    
    
	uint8_t temp[1]={
    
    ch};
{
    
    
	HAL_UART_Transmit(&huart1,temp,1,2);
}
	return HAL_OK;
}

2-启动DAC转换

HAL_DAC_Start(&hdac1,DAC1_CHANNEL_2);//启动DAC转换

3-编写测试函数

		//如果按键1按下
		if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)==GPIO_PIN_RESET)
		{
    
    
			HAL_Delay(100);
			if(HAL_GPIO_ReadPin(KEY1_GPIO_Port,KEY1_Pin)==GPIO_PIN_RESET)
			{
    
    
				DACVALUE+=10;
				if(DACVALUE>=255) DACVALUE=255;
				HAL_DAC_SetValue(&hdac1,DAC1_CHANNEL_2,DAC_ALIGN_8B_R,DACVALUE);//电压转换
				printf("KEY1 + DACVALUE:%d,Voltage:%3.3f\r\n",DACVALUE,DACVALUE*3.3/255);
			}
			
		}
		//如果按键2按下
		if(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin)==GPIO_PIN_RESET)
		{
    
    
			HAL_Delay(100);
			if(HAL_GPIO_ReadPin(KEY2_GPIO_Port,KEY2_Pin)==GPIO_PIN_RESET)
			{
    
    
								DACVALUE-=10;
				if(DACVALUE<=0) DACVALUE=0;
				HAL_DAC_SetValue(&hdac1,DAC1_CHANNEL_2,DAC_ALIGN_8B_R,DACVALUE);//电压转换
				printf("KEY2 - DACVALUE:%d,Voltage:%3.3f\r\n",DACVALUE,DACVALUE*3.3/255);
			}
			
		}

猜你喜欢

转载自blog.csdn.net/ABCisCOOL/article/details/113995936