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

相关文章

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,

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

Python使用Colorama库美化终端输出的操作示例

《Python使用Colorama库美化终端输出的操作示例》在开发命令行工具或调试程序时,我们可能会希望通过颜色来区分重要信息,比如警告、错误、提示等,而Colorama是一个简单易用的Python库... 目录python Colorama 库详解:终端输出美化的神器1. Colorama 是什么?2.

Ubuntu 怎么启用 Universe 和 Multiverse 软件源?

《Ubuntu怎么启用Universe和Multiverse软件源?》在Ubuntu中,软件源是用于获取和安装软件的服务器,通过设置和管理软件源,您可以确保系统能够从可靠的来源获取最新的软件... Ubuntu 是一款广受认可且声誉良好的开源操作系统,允许用户通过其庞大的软件包来定制和增强计算体验。这些软件

软件设计师备考——计算机系统

学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2