6-1 STM32F405--DAC输出(软件触发)

2024-08-23 07:04

本文主要是介绍6-1 STM32F405--DAC输出(软件触发),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

功能描述:配置STM32F405RGT6的DAC,在PA5引脚每隔2秒分别输出1V、2V、3V的电压。

  • main.c文件内容如下
    #include "stm32f4xx.h"                  // Device header
    #include "Delay.h"
    #include "MyDAC.h"int main(void)
    {MyDAC_Init();	//初始化DACwhile(1){MyDAC_SetData(DAC_Channel_2, DAC_Align_12b_R, 1241);	//设置DAC通道2输出1V电压MyDAC_SoftwareTrigger(DAC_Channel_2);					//软件触发DAC通道2Delay_s(2);MyDAC_SetData(DAC_Channel_2, DAC_Align_12b_R, 2482);	//设置DAC通道2输出2V电压MyDAC_SoftwareTrigger(DAC_Channel_2);					//软件触发DAC通道2Delay_s(2);MyDAC_SetData(DAC_Channel_2, DAC_Align_12b_R, 3723);	//设置DAC通道2输出3V电压MyDAC_SoftwareTrigger(DAC_Channel_2);					//软件触发DAC通道2Delay_s(2);}
    }
    
  • MyDAC.c文件内容如下

    #include "MyDAC.h"/*** @摘要  		初始化DAC* @参数  		无* @返回值  	无* @说明  		无*/
    void MyDAC_Init(void)
    {//开启GPIOA时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//定义GPIO初始化结构体GPIO_InitTypeDef GPIO_InitStructure;//初始化上述结构体GPIO_StructInit(&GPIO_InitStructure);//配置GPIO模式为模拟模式GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//配置GPIO的速度为高速100MHZGPIO_InitStructure.GPIO_Speed = GPIO_High_Speed;//指定GPIO引脚为Pin5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//初始化对应的GPIOGPIO_Init(GPIOA, &GPIO_InitStructure);//开启DAC时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);//定义DAC初始化结构体DAC_InitTypeDef DAC_InitStruct;//初始化上述结构体DAC_StructInit(&DAC_InitStruct);//配置DAC的触发源为软件触发DAC_InitStruct.DAC_Trigger = DAC_Trigger_Software;//配置生成波形为不生成DAC_InitStruct.DAC_WaveGeneration = DAC_WaveGeneration_None;//波形生成幅度(此处无用)DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;//开启输出缓冲器DAC_InitStruct.DAC_OutputBuffer = DAC_OutputBuffer_Enable;//初始化DACDAC_Init(DAC_Channel_2, &DAC_InitStruct);//使能DACDAC_Cmd(DAC_Channel_2, ENABLE);
    }/*** @摘要  		设置DAC的输出电压* @参数  		DAC_Channel:指定DAC通道* @参数  		DAC_Align:指定数据对齐方式*				可以为下列这些值*            	@arg DAC_Align_8b_R: 8bit right data alignment selected*            	@arg DAC_Align_12b_L: 12bit left data alignment selected*            	@arg DAC_Align_12b_R: 12bit right data alignment selected* @参数  		Data:写入保持寄存器的数据* @返回值  	无* @说明  		无*/
    void MyDAC_SetData(uint32_t DAC_Channel, uint32_t DAC_Align, uint16_t Data)
    {if(DAC_Channel == DAC_Channel_1)DAC_SetChannel1Data(DAC_Align, Data);else if(DAC_Channel == DAC_Channel_2)DAC_SetChannel2Data(DAC_Align, Data);
    }/*** @摘要  		软件触发DAC* @参数  		无* @返回值  	无* @说明  		无*/
    void MyDAC_SoftwareTrigger(uint32_t DAC_Channel)
    {DAC_SoftwareTriggerCmd(DAC_Channel, ENABLE);
    }
    
  • MyDAC.h文件内容如下
    #ifndef __MYDAC_H
    #define __MYDAC_H#include "stm32f4xx.h"                  // Device headervoid MyDAC_Init(void);
    void MyDAC_SetData(uint32_t DAC_Channel, uint32_t DAC_Align, uint16_t Data);
    void MyDAC_SoftwareTrigger(uint32_t DAC_Channel);#endif
    

这篇关于6-1 STM32F405--DAC输出(软件触发)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1098688

相关文章

在Linux中改变echo输出颜色的实现方法

《在Linux中改变echo输出颜色的实现方法》在Linux系统的命令行环境下,为了使输出信息更加清晰、突出,便于用户快速识别和区分不同类型的信息,常常需要改变echo命令的输出颜色,所以本文给大家介... 目python录在linux中改变echo输出颜色的方法技术背景实现步骤使用ANSI转义码使用tpu

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

使用Java将实体类转换为JSON并输出到控制台的完整过程

《使用Java将实体类转换为JSON并输出到控制台的完整过程》在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用JSON格式,用Java将实体类转换为J... 在软件开发的过程中,Java是一种广泛使用的编程语言,而在众多应用中,数据的传输和存储经常需要使用j

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

如何关闭 Mac 触发角功能或设置修饰键? mac电脑防止误触设置技巧

《如何关闭Mac触发角功能或设置修饰键?mac电脑防止误触设置技巧》从Windows换到iOS大半年来,触发角是我觉得值得吹爆的MacBook效率神器,成为一大说服理由,下面我们就来看看mac电... MAC 的「触发角」功能虽然提高了效率,但过于灵敏也让不少用户感到头疼。特别是在关键时刻,一不小心就可能触

Spring AI集成DeepSeek实现流式输出的操作方法

《SpringAI集成DeepSeek实现流式输出的操作方法》本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的S... 目录一、后端代码二、前端代码三、运行项目小天有话说题外话参考资料前面一篇文章我们实现了《Spring

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,