STM32-DAC简单使用方法

前言:

最近在调试STM32L152芯片的DAC功能,本文总结下STM32L152芯片 DAC简单使用方法。

硬件平台:STM32L152

软件平台:keil v5+cubeMX

函数库:HAL库

DAC使用方法

实现:

1.DAC的初始化。

DAC_HandleTypeDef hdac;
 

void DAC_Init(void)
{
  DAC_ChannelConfTypeDef sConfig;
    /**DAC Initialization 
    */
  hdac.Instance = DAC;
  if (HAL_DAC_Init(&hdac) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    /**DAC channel OUT1 config 
    */
  sConfig.DAC_Trigger = DAC_TRIGGER_NONE;
  sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_ENABLE;//输出缓存使能
  if (HAL_DAC_ConfigChannel(&hdac, &sConfig, DAC_CHANNEL_1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
}

其中,DAC的时钟开启在void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)函数中。

void HAL_DAC_MspInit(DAC_HandleTypeDef* hdac)
{


  GPIO_InitTypeDef GPIO_InitStruct;
  if(hdac->Instance==DAC)
  {
  /* USER CODE BEGIN DAC_MspInit 0 */
  /* USER CODE END DAC_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_DAC_CLK_ENABLE();
  
    /**DAC GPIO Configuration    
    PA4     ------> DAC_OUT1 
    */
    GPIO_InitStruct.Pin = GPIO_PIN_4;
    GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);//对应的DAC管脚配置。

  /* USER CODE BEGIN DAC_MspInit 1 */
  /* USER CODE END DAC_MspInit 1 */
  }
}

void DAC_Trigger(uint16_t Value)
{
    HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1 ,DAC_ALIGN_12B_R ,Value); //DAC的输出电压=Value*3.3/4096;
    HAL_DAC_Start(&hdac, DAC_CHANNEL_1); //开启DAC
    delay_ms(1000);
    HAL_DAC_Stop(&hdac, DAC_CHANNEL_1);//关闭DAC
}

总结:上述简单介绍了DAC输出电压实现步骤,步骤为DAC初始化、开启DAC时钟、配置DAC管脚、调用DAC函数输出对应的电压值

你可能感兴趣的:(STM32,STM32开发)