STM32+python产生三角波

news2025/1/13 16:53:58

目录

  • 任务目标
  • 实现方法
  • python制作数表

由于项目需要,需要产生一个三角波,需要覆盖4000个点的一个数组,这样的数组点数太多了,肯定不能自己一个一个手写了。最简单的一个方法是在嵌入式程序中用C写一个函数,对一个数组,用数学公式初始化。不过最近在学python,就想着用python生成这样的一个数表,锻炼锻炼,完全是一个不误正业的射频工程师(笑哭)

任务目标

使用STM32产生一个周期为500us的三角波,点数越多越好。

实现方法

(1)方法1:STM32本身可以使用硬件设置产生三角波:

  //满洲里国峰电子科技,www.guofengdianzi.com
  DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;	
  //设置三角波产生器					
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_Triangle ;
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;	
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);

(2)方法2:制作一个三角波数表,结合定时器使用,每次定时中断在数表中选取一个数值输出,通过定时器的中断周期来确定三角波的周期。本文重点介绍如何使用python产生三角波数表:

python制作数表

目标:生成一个从100到2000,从2000再到100的一个数表,步进是1,然后将这些数据存储到一个txt文件中。

倒推思路:产生一组数据,并写入txt文档中
=> 什么样的数据可以写入txt文件呢?字符串就可以。
=> 字符串的样子:
在这里插入图片描述
由于表格比较大,所以需要换行符,因此字符串需要数“数字”、“逗号”、“反斜杠\”三种元素。
=> 如何做这样的字符串?可以先做个列表new_file_list,然后使用’'.join(new_file_list)转换成字符串,
=> 如何做列表?循环,数字+逗号+反斜杠

明确了这些,我们来看下代码:

写上升斜边的数据:

//满洲里国峰电子科技,www.guofengdianzi.com
while data_index<data_length:
	tri_data.append(num_start+data_index)
	tri_data.append(',')
	if (data_index%30)==0:
		tri_data.append('\\\n')
	data_index=data_index+1

写下降斜边的数据:

//满洲里国峰电子科技,www.guofengdianzi.com
data_index=0
while data_index<(data_length-1):
	tri_data.append(num_end-1-data_index)
	tri_data.append(',')
	if (data_index%30)==0:
		tri_data.append('\\\n')
	data_index=data_index+1

使用str()函数将列表元素转换成字符串,并用append方法加入到列表中:

//满洲里国峰电子科技,www.guofengdianzi.com
while i<len(tri_data):
	new_file_list.append(str(tri_data[i]))
	i=i+1

至此我们已经获得了一个完整的列表,现在我们将列表转换为字符串写入txt文件。

//满洲里国峰电子科技,www.guofengdianzi.com
new_file_data=''.join(new_file_list)

with open(newfile,"w") as f:
    f.write(new_file_data)

合并字符串采用的是join方法,''表示不采用任何连接符合并字符串。

作者:潇洒的电磁波(专业:射频芯片设计、雷达系统、嵌入式。欢迎大家项目合作交流。)
Wechat:GuoFengDianZi

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

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

相关文章

基于蜣螂优化的Elman神经网络数据预测-附代码

基于蜣螂算法优化的Elman神经网络数据预测 - 附代码 文章目录基于蜣螂算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立4.基于蜣螂优化的Elman网络5.测试结果6.参考文献7.Matlab代码摘要&#xff1a;针对…

LwIP系列--内存管理(内存池)详解

一、目的在《LwIP系列--内存管理&#xff08;堆内存&#xff09;详解》中我们详细介绍了LwIP中内存堆的实现原理&#xff0c;本篇我们介绍LwIP中内存池的实现细节。在LwIP源码中为了满足特定内存分配的需要以及优化内存占用制定了各种尺寸大小的内存池&#xff08;每种内存池管…

Golang应用执行Shell命令实战教程

本文学习如何在Golang程序中执行Shell命令&#xff08;如&#xff0c;ls&#xff0c;mkdir或grep&#xff09;&#xff0c;如何通过stdin和stdout传入I/O给正在运行的命令&#xff0c;同时管理长时间运行的命令。为了更好的理解&#xff0c;针对不同场景由浅入深提供几个示例进…

77、TensoRF: Tensorial Radiance Fields

简介 主页&#xff1a;https://apchenstu.github.io/TensoRF/ 总体而言&#xff0c;该文章主要内容于DVGO类似 将场景的亮度场建模为4D张量&#xff0c;它表示一个具有每体素多通道特征的3D体素网格&#xff0c;中心思想是将4D场景张量分解为多个紧凑低秩张量分量&#xff0c…

06 | 要找工作了,应该如何准备?

前言 前言&#xff1a;找工作更像相亲&#xff0c;总有一款适合自己。简历就像一份广告&#xff0c;对方要什么你写什么&#xff0c;而不是你有什么。 文章目录前言一、找工作的流程二、做法1. 分析职位描述&#xff08;JD&#xff09;1&#xff09;组成2&#xff09;做法一、找…

【数据结构】7.2 线性表的查找

7.2.1 顺序查找&#xff08;线性查找&#xff09; 应用范围&#xff1a; 顺序表或线性链表表示的静态查找表。表内元素之间可以无序。 数据元素类型定义&#xff1a; 数据表可能有多个数据域的值&#xff0c;比如成绩表中有姓名、成绩、总分等。所以用结构类型来表示要存储…

背景颜色和背景图片

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <!--这行代码是告诉浏览器需要使用"utf-8"字符集打开 因为HBuilder工具是采用utf-8编码的 注意&#xff1a;并不是设置当前页面的字符集编码方式--> …

SpringMVC(十二):SpringMVC文件下载

文章目录 SpringMVC文件下载 一、下载之前的准备 二、下载的基本流程 三、下载的请求数据 1、下载的后台实现 2、下载的示例代码 SpringMVC文件下载 一、下载之前的准备 展示所有玩家信息&#xff0c;包括图片展示。 <% page contentType"text/html;charset…

Linux_常见命令

1.ls ls -l 列出隐藏文件&#xff0c;并显示10项权限,类似如同下图 在部分发行版本的linux下&#xff0c;ll等同于ls -l 首先&#xff0c;第一列为-则代表着这一列是文件&#xff0c; 第一列为d则代表这一列为目录 除了第一位&#xff0c;那么其他还有9位&#xff0c;分为3组…

学习shell与shell script 02_vim 的保存恢复与打开时的警告信息

[1] Stopped vim test.txt $kill -9 %1[1] Stopped vim test.txt $jobs [1] Killed vim test.txt编辑一个文件后&#xff0c;使用Ctrl z 挂起。然后被不正常中断&#xff0c;导致暂存盘无法通过正常的流程来结束。所以暂…

AHB协议(2/2)

Charpter 4 Bus Interconnection 4.1 互联结构 互联结构在系统中提供了M端和S端的连接。单一的M端只需要使用一个解码器和多路选择器。 一个多M端的系统中需要使用提供仲裁和将信号从不同的M端分发到对应的S端的互联结构。分发结构需要地址&#xff0c;控制信号和写数据。 4…

ARM uboot的常用命令

一、uboot 的常用命令1 1、类似 linux 终端的行缓冲命令行 (1) 行缓冲的意思就是&#xff1a;当我们向终端命令行输入命令的时候&#xff0c;这些命令没有立即被系统识别&#xff0c;而是被缓冲到一个缓存区&#xff08;也就是系统认为我们还没有输入完&#xff09;&#xff…

2.5 变量与常量

文章目录1.变量1.1 变量的声明1.2 变量的命名1.3 变量的初始化1.4 变量的使用2 常量1.变量 和其他的编程语言一样&#xff0c;JAVA也是用变量来存储值的&#xff0c;常量可以理解为一种特殊的变量&#xff0c;其特殊在它的值是不变的。 1.1 变量的声明 声明变量本质就是创造…

自动驾驶感知——环境感知的基本概念

文章目录1. 智能汽车概述1.1 汽车新四化1.2 智能网联汽车1.3 SAE J3016自动驾驶分级标准2. 环境感知定义2.1 智能网联汽车系统架构2.2 环境感知定义及对象3. 各类传感器的介绍4. 环境感知经典算法概述5. 自动驾驶仿真软件的功能5.1 背景介绍5.2 自动驾驶仿真软件平台背后的科学…

(二十六)Set系列集合

简介: Set集合&#xff0c;基础自Collection。特征是插入无序&#xff0c;不可指定位置访问。Set集合的实现类可说是基于Map集合去写的。通过内部封装Map集合来实现的比如HashSet内部封装了HashMap。Set集合的数据库不能重复&#xff08; 或 eqauls&#xff09;的元素Set集合的…

AxMath使用教程(持续更新中)

前言 这两天学了学Latex&#xff0c;主要是为了以后写毕业论文做铺垫&#xff0c;而且Latex在数学公式这一方面&#xff0c;要比Word方便许多&#xff0c;于是我就下载了一款国产的公式编辑器——AxMath。永久会员不贵&#xff0c;只要36元&#xff0c;而且软件很好用&#xf…

【自然语言处理】情感分析(一):基于 NLTK 的 Naive Bayes 实现

情感分析&#xff08;一&#xff09;&#xff1a;基于 NLTK 的 Naive Bayes 实现朴素贝叶斯&#xff08;Naive Bayes&#xff09;分类器可以用来确定输入文本属于某一组类别的概率。例如&#xff0c;预测评论是正面的还是负面的。 它是 “朴素的”&#xff0c;它假设文本中的单…

机器学习: Label vs. One Hot Encoder

如果您是机器学习的新手&#xff0c;您可能会对这两者感到困惑——Label 编码器和 One-Hot 编码器。这两个编码器是 Python 中 SciKit Learn 库的一部分&#xff0c;它们用于将分类数据或文本数据转换为数字&#xff0c;我们的预测模型可以更好地理解这些数字。今天&#xff0c…

图机器学习-节点嵌入(Node Embedding)

图机器学习-节点嵌入(Node Embedding) Node Embedding简单点来说就是将一个node表示为一个RdR^dRd的向量。 EncoderDecoder Framework 我们首先需要设计一个encoder对节点进行编码。既然要比较相似度那么我就需要定义节点的相似度。同时我们还需要定义一个decoder&#xff0…

Java线程的生命周期的五种状态

在java中&#xff0c;任何对象都要有生命周期&#xff0c;线程也不例外&#xff0c;它也有自己的生命周期。当Thread对象创建完成时&#xff0c;线程的生命周期便开始了&#xff0c;当run()方法中代码正常执行完毕或者线程抛出一个未捕获的异常(Exception)或者错误(Error)时&am…