STM32L152 DAC简单使用方法

来源:互联网 发布:php eval 解密 编辑:程序博客网 时间:2024/06/05 20:33

背景:

基于STM32的HAL库,介绍下STM32L152 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函数输出对应的电压值。

原创粉丝点击