细说MCU用自带的波形发生器实现DAC输出的方法

news2024/11/15 12:12:43

目录

一、参考示例

二、配置参数

1.配置DAC

2.配置TIM3

三、代码修改

四、查看结果


        DAC模块自带的硬件波形发生器只有三角波(Triangle wave)和 (Noise wave)两种。此外,如果配置了Trigger2参数,在波形发生模式中就出现(并且仅出现)锯齿波的选项(Sawtooth wave)。这些硬件自带的波形发生器也很容易使用。不过输出波形的频率是与输出幅值相关联的,虽然也可以受定时器控制,但频率调整不太方便。

一、参考示例

        本项目依赖的软件和硬件工程参考本文作者写的文章:细说MCU用DMA实现DAC输出的方法-CSDN博客  https://wenchm.blog.csdn.net/article/details/140655500icon-default.png?t=N7T8http://xn--https-rfa//wenchm.blog.csdn.net/article/details/140655500        本文仅表述与参考文件不一样的工程配和代码修改。

二、配置参数

1.配置DAC

        配置DAC1,将OUT1模式(OUT1mode)选择为Connected to external pin only,也就是将DAC1的输出通道1连接到外部引脚,该引脚为PA4。因为要用定时器来触发DAC,所以将其中的Trigger选择为Timer 3 Trigger Out event。将Wave generation mode选择为Triangle wave generation,Maxium Triangle Amplitude选择为4095。

2.配置TIM3

        在TIM3模式和配置界面中,先将模式(Mode)的时钟源(Clock Source)选择为内部时钟(Internal Clock);在定时器设置(Counter Settings)区,将预分频因子(Prescaler)设置为0,计数器周期(Counter Period)设置为169。由于配置了用TIM3来触发DAC,所以在定时器的触发事件选择(Trig-ger Event Selection TRGO)列表框中要选择Update Event。定时器的事件更新频率为170*10^6/ ((0+1)(169+1))=1MHz。

        其它参数配置与参考文件相同。

三、代码修改

        在while(1)前面添加的初始化代码中,做如下修改:

 /* USER CODE BEGIN 2 */
  HAL_TIM_Base_Start(&htim3);
  HAL_DACEx_TriangleWaveGenerate(&hdac1,DAC_CHANNEL_1,DAC_TRIANGLEAMPLITUDE_4095);
  HAL_DAC_Start(&hdac1,DAC_CHANNEL_1);
/* USER CODE END 2 */

        开启定时器的初始化语句是HAL_TIM_Base_Start(),初始化三角波发生器的语句是HAL_DACEx_TriangleWaveGenerate()和启动DAC的语句HAL_ DAC_Start()。其中HAL_DACEx_TriangleWaveGenerate()的最后一个参数就是控制三角波输出电压幅值的,这里给的是最大值。常量DAC_TRIANGLEAMPLITUDE_4095在库函数文件stm32g4xx_hal_dac_ex.h中定义。

四、查看结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1950976.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round 874 (Div. 3)(A~D题)

A. Musical Puzzle 思路: 用最少的长度为2的字符串按一定规则拼出s。规则是&#xff1a;前一个字符串的尾与后一个字符串的首相同。统计s中长度为2的不同字符串数量。 代码: #include<bits/stdc.h> #include <unordered_map> using namespace std; #define N 20…

vue3前端开发-小兔鲜项目-登录功能的业务接口调用

vue3前端开发-小兔鲜项目-登录功能的业务接口调用!这次&#xff0c;正式调用远程服务器的登录接口了。大家要必须使用测试账号密码&#xff0c;才能验证我们的代码。 测试账号密码是&#xff1a;账号&#xff08;xiaotuxian001&#xff09;&#xff1b;密码是&#xff08;1234…

【python】sklearn基础教程及示例

【python】sklearn基础教程及示例 Scikit-learn&#xff08;简称sklearn&#xff09;是一个非常流行的Python机器学习库&#xff0c;提供了许多常用的机器学习算法和工具。以下是一个基础教程的概述&#xff1a; 1. 安装scikit-learn 首先&#xff0c;确保你已经安装了Python和…

什么是hdfs如何使用驱动程序访问hdfs

目录 什么是hdfs 主要特点包括&#xff1a; 架构组成&#xff1a; 应用场景&#xff1a; 如何使用驱动程序访问hdfs 准备工作环境&#xff1a; 启动 Hadoop 服务 可能遇到的问题&#xff1a; ssh验证失败 验证Hadoop服务 对hdfs进行文件操作 什么是hdfs HDFS&#x…

【数据结构】栈(基于数组、链表实现 + GIF图解 + 原码)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;数据结构 &#x1f4da;本系列文章为个人学…

Linux--Socket 编程 UDP(简单的回显服务器和客户端代码)

目录 0.上篇文章 1.V1 版本 - echo server 1.1认识接口 1.2实现 V1 版本 - echo server&#xff08;细节&#xff09; 1.3添加的日志系统&#xff08;代码&#xff09; 1.4 解析网络地址 1.5 禁止拷贝逻辑&#xff08;基类&#xff09; 1.6 服务端逻辑 &#xff08;代码&…

Leetcode—769. 最多能完成排序的块【中等】

2024每日刷题&#xff08;149&#xff09; Leetcode—769. 最多能完成排序的块 实现代码 class Solution { public:int maxChunksToSorted(vector<int>& arr) {int ans 0;int mx INT_MIN;for(int i 0; i < arr.size(); i) {mx max(arr[i], mx);if(mx i) {a…

【C++】C++应用案例-旋转图像

旋转图像的需求&#xff0c;在图片处理的过程中非常常见。我们知道对于计算机而言&#xff0c;图像其实就是一组像素点的集合&#xff0c;所以图像旋转的问题&#xff0c;本质上就是一个二维数组的旋转问题。 我们可以给定一个二维数组&#xff0c;用来表示一个图像&#xff0c…

【C++】——红黑树(手撕红黑树,彻底弄懂红黑树)

目录 前言 一 红黑树简介 二 为什么需要红黑树 三 红黑树的特性 四 红黑树的操作 4.1 变色操作 4.2 旋转操作 4.3 插入操作 4.4 红黑树插入代码实现 4.5 红黑树的删除 五 红黑树迭代器实现 总结 前言 我们之前都学过ALV树&#xff0c;AVL树的本质就是一颗平…

Oracle对比两表数据的不一致

MINUS 基本语法如下 [SQL 语句 1] MINUS [SQL 语句 2];举个例子&#xff1a; select 1 from dual minus select 2 from dual--运行结果 1-------------------------------- select 2 from dual minus select 1 from dual--运行结果 2所以&#xff0c;如果想找所有不一致的&a…

软件测试---Linux

Linux命令使用&#xff1a;为了将来工作中与服务器设备进行交互而准备的技能&#xff08;远程连接/命令的使用&#xff09;数据库的使用&#xff1a;MySQL&#xff0c;除了查询动作需要重点掌握以外&#xff0c;其他操作了解即可什么是虚拟机 通过虚拟化技术&#xff0c;在电脑…

富芮坤FR800X系列之按键检测模块设计

FR800X系列按键检测模块 读者对象&#xff1a; 本文档主要适用以下工程师&#xff1a; 嵌入式系统工程师 单片机软件工程师 IOT固件工程师 BLE固件工程师 文章目录 1.概要2.用户如何设计按键检测模块2.1 GPIO初始化2.2按键模块初始化2.3设计中断函数&#xff1a;2.4循环…

【Python面试题收录】Python编程基础练习题①(数据类型+函数+文件操作)

本文所有代码打包在Gitee仓库中https://gitee.com/wx114/Python-Interview-Questions 一、数据类型 第一题&#xff08;str&#xff09; 请编写一个Python程序&#xff0c;完成以下任务&#xff1a; 去除字符串开头和结尾的空格。使用逗号&#xff08;","&#…

【数据库】Quartz2.3 框架 数据库设计说明书

1、 Quartz表说明 2、 quartz 的触发时间的配置 1、 cron 方式&#xff1a;采用cronExpression表达式配置时间。 2、 simple 方式&#xff1a;和JavaTimer差不多&#xff0c;可以指定一个开始时间和结束时间外加一个循环时间。 3、 calendars 方式&#xff1a;可以和cron配合使…

Java-----栈

目录 1.栈&#xff08;Stack&#xff09; 1.1概念 1.2栈的使用 1.3栈的模拟实现 1.4栈的应用场景 1.5栈、虚拟机栈、栈帧有什么区别呢 1.栈&#xff08;Stack&#xff09; 1.1概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操…

Centos8 yum 更换源以及安装内核头文件

文章目录 一、简介二、yum 更换源三、安装内核头文件 一、简介 CentOS 是一个开源项目&#xff0c;发布了两个不同的 Linux 发行版——CentOS Stream 和 CentOS Linux 。 CentOS Stream 是即将发布的红帽企业 Linux 产品的上游开发平台。 CentOS 项目将于 2024 年 6 月 30 日…

场外期权如何报价?名义本金是什么?

今天带你了解场外期权如何报价&#xff1f;名义本金是什么&#xff1f;投资者首先需要挑选自己想要进行期权交易的沪深上市公司股票。选出股票后&#xff0c;需要将股票信息、预期的操作时间&#xff08;如期限&#xff09;、看涨或看跌的选择以及预计的交易金额等信息报给场外…

商家虚假发货行为频发,电商平台如何通过物流轨迹来监管?(内附视频号、抖音、京东的发货规则)

近年来&#xff0c;“虚假发货”问题在电商行业中日益凸显。某投诉平台数据显示&#xff0c;截至2024年7月&#xff0c;搜索“虚假发货”显示的投诉高达19万条&#xff0c;如何有效监控卖家发货的合规性与及时性、打击虚假发货行为成为电商平台的重要议题。 为了维护消费者权益…

剧透:巴黎奥运会用上了AI转播

** AI增强技术&#xff0c;让比赛画面变成电影特效。 ** 巴黎奥运会即将开幕&#xff01; 阿里云在奥运转播中应用的AI增强技术 将让比赛画面变成电影特效&#xff01; 剧透如下 &#x1f447;&#x1f3fb; 阿里云为奥运转播提供的高自由度回放“子弹时间”&#xff0c;是…

[Mysql-DDL数据操作语句]

目录 DDL语句操作数据库 库&#xff1a; 查看&#xff1a;show 创建&#xff1a;creat 删除&#xff1a;drop 使用(切换)&#xff1a;use 表&#xff1a; 查看&#xff1a;desc show 创建&#xff1a;create 表结构修改 rename as add drop modify change rename as …