STM32-DAC简单使用方法

发布者:Weasel最新更新时间:2019-02-12 来源: eefocus关键字: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  DAC  使用方法 引用地址:STM32-DAC简单使用方法

上一篇:STM32—进入STOP模式后功耗下不去问题
下一篇:关于STM32运行时程序卡在B.处的解决方法

推荐阅读最新更新时间:2024-03-16 16:23

详细介绍STM32驱动程序库STM32F1xx_DFP中的文件含义及其作用
嵌入式应用程序的开发可以基于微控制器厂商提供的驱动程序库,也可以针对外设寄存器直接编写驱动程序。使用厂商提供的驱动程序库进行开发,简单、快捷,兼容性好,便于移植,但代码略多;直接针对寄存器编程进行开发(建议利用头文件stm32f10x.h定义的寄存器结构和位定义),费时耗力,但能够深入理解原理,代码简洁高效。所以,建议初学者从驱动程序库入手,逐渐深入到寄存器编程。 MDK-ARM开发工具本身已经包含了STM32固件库,并可以通过软件包安装程序进行更新。STM32F1xxx_DFP.2.0.0的驱动程序主要在如下目录中:F:Keil_v5ARMPackKeilSTM32F1xx_DFP2.0.0Device,包含了开发所必须的基
[单片机]
详细介绍<font color='red'>STM32</font>驱动程序库STM32F1xx_DFP中的文件含义及其作用
基于STM32战舰开发板的SPI通信实验(全双工)
SPI通信模块简介 SPI是英语Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是 Motorola首先在其MC68HCXX系列处理器上定义的。SPI 接口主要应用在 EEPROM,FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,STM32也有SPI接口。 SPI中专有名词简介 SPI工作原理 此图与上图一样,只不过比上图更加详细一些。这里多了
[单片机]
基于<font color='red'>STM32</font>战舰开发板的SPI通信实验(全双工)
STM32 TIM1 F1 四通道完全重映射PWM 配置
void TIM1_PWM_Init(u16 arr,u16 psc) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph
[单片机]
【菜鸟入门】stm32 之 ADC 模数转换
今天对ADC进行了研究,个人感觉,ADC的配置相对也对比较复杂一点,因为需要配置的寄存器是比较多的! 在datasheet 关于ADC的简介中,明确说明ADC的输入时钟不得超过14M,他是有PCLK2经过分频得来的 这次我们选用ADC1_IN0作为讲解的对象,ADC1_IN0 -- PA0 所以在配置时钟的时候要配置PA0和ADC1,关于怎么配置,已经说的很清楚了。 在配置PA0的输入模式方面我要说明一下,有好多人在这个地方还是很郁闷的 在8.1.11 外设GPIO的配置中每种配置都说的很清楚,如果我们对那中模式配置有疑问,我们都可以直接在这里查找 这里的ADC我们采用模拟输入模式: 所以我们这里需要
[单片机]
【菜鸟入门】<font color='red'>stm32</font> 之 ADC 模数转换
ST 发布新STM32G0微控制器,增加USB和CAN接口和更大存储器
意法半导体发布新STM32G0微控制器,增加USB-C全速双模端口、CAN FD接口和更大容量的存储器 中国,2021年7月8日——意法半导体 STM32G0* 系列Arm® Cortex®-M0+ 微控制器 (MCU)新增多款产品和更多新功能,例如,双区闪存、CAN FD接口和无晶振USB全速数据/主机支持功能。 对于注重预算的应用,新的STM32G050超值产品线、STM32G051和STM32G061主流产品线增加了丰富的模拟功能和最大容量18KB 的 RAM存储器,以及多达 48 引脚且售价极具竞争力的封装。 此外,STM32G0B0 超值产品线、STM32G0B1和STM32G0C1主流产品线给STM3
[单片机]
ST 发布新STM32G0微控制器,增加USB和CAN接口和更大存储器
STM32+SDIO+FATFS文件系统 直读SD卡 (含程序)
网上关于小型嵌入式的文件系统有好多~当然要数 FATFS 很是出名 一来小巧,二来免费。当然了国产的振南的znFAT 一样开源好用而且极其的省资源~!非常适合51单片。更重要的是国语的支持,呵呵!这次在STM32上为SD卡移植文件系统还是非常简单顺利的,这多亏了ST 官方提供的驱动,而我自己不用动手编写SD卡的命令省了很多时间而且官方做的驱动虽然效率一般但是极其严谨我很是佩服。 FATFS的官方网站是 http://elm-chan.org/fsw/ff/00index_e.html znFAT的官方网站是 http://www.znmcu.cn/softshow.asp?id=47 SD卡以用SPI驱动 也可
[单片机]
STM32 PWM占空比的计算及输出比较时CCR不同
下面的这个是stm32的定时器逻辑图,上来有助于理解: TIM3的ARR寄存器和PSC寄存器, 确定PWM频率。 这里配置的这两个定时器确定了PWM的频率,我的理解是:PWM的周期(频率)就是ARR寄存器值与PSC寄存器值相乘得来,但不是简单意义上的相乘,例如要设置PWM的频率参考上次通用定时器中设置溢出时间的算法,例如输出100HZ频率的PWM,首先,确定TIMx的时钟,除非APB1的时钟分频数设置为1,否则通用定时器TIMx的时钟是APB1时钟的2倍,这时的TIMx时钟为72MHz,用这个TIMx时钟72MHz除以(PSC+1),得到定时器每隔多少秒涨一次,这里给PSC赋7199,计算得定时器每隔0.0001秒涨一次,即
[单片机]
<font color='red'>STM32</font> PWM占空比的计算及输出比较时CCR不同
STM32窗口看门狗详解
本文将介绍窗口看门狗,并通过按键模拟触发程序死机、进而触发提前唤醒中断、并复位程序。 ①窗口看门狗介绍 ②STM32CUBEMX配置工程文件 ③代码实现 ①窗口看门狗介绍 窗口看门狗用来监测由于不可预知的因素或者不可预知的逻辑条件导致程序脱离正常运行序列的软件故障。 窗口看门狗介绍之工作原理框图: 窗口看门狗介绍之配置寄存器: 预分频器用于将RCC传来的PCLK1时钟进行分频,配置寄存器中第7位第8位用来存放预分频器的预分频值,第0位至第6位用于存放窗口看门狗的窗口值,当计数器的值大于窗口值时喂狗会触发复位、即只有计数器的值在0x40与窗口值之间时喂狗不会触发程序复位;所以窗口值需要大于0x40、小于0x7f,否则窗口没有
[单片机]
<font color='red'>STM32</font>窗口看门狗详解
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved