×
单片机 > 单片机程序设计 > 详情

STM32-DAC简单使用方法

发布时间:2020-08-21 发布时间:
|

前言:

最近在调试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函数输出对应的电压值。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多