STM32+python产生三角波

news/2024/11/17 9:51:33/

目录

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

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

任务目标

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

实现方法

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

  //满洲里国峰电子科技,www.guofengdianzi.comDAC_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.ppmy.cn/news/19597.html

相关文章

报错整理(1.25)

报错1&#xff1a; 报错&#xff1a;gcc: error trying to exec cc1plus: execvp: No such file or directory error: command /usr/bin/nvcc failed with exit status 1解决&#xff1a;apt-get install g报错2&#xff1a; 报错&#xff1a;add-apt-repository&#xff1a;找…

背景颜色和背景图片

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

基于微信小程序的新生自助报到系统小程序

文末联系获取源码 开发语言&#xff1a;Java 框架&#xff1a;ssm JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏览器…

Windows压缩工具 “ Bandizip与7-zip ”(带你快速了解)

&#x1f4dc; “作者 久绊A” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴。 &#x1f341; 操作系统【带你快速了解】对于电脑来说&#xff0c;如果说…

车载以太网简介

车载以太网简介 基本概念 传统车载网络 LIN&#xff1a;用于通信速率低的场景&#xff0c;比如车窗、座椅等。CAN&#xff1a;目前车载网络首先&#xff0c;低成本高可靠。FlexRay &#xff1a;具备故障容错的车载总线系统。MOST&#xff1a;内置流媒体数据信道&#xff0c;…

Apache Spark 机器学习 特征抽取 4-2

Word2Vec 单词向量化是一个估算器&#xff0c;将文档转换成一个按照固定顺序排列的单词序列&#xff0c;然后&#xff0c;训练成一个Word2VecModel单词向量化的模型&#xff0c;该模型将每个单词映射成一个唯一性的、固定大小的向量集&#xff0c;对每个文档的所有单词进行平均…

大年初二、初三—— 牛客网刷题经验分享~

2023年大年初二、初三 —— 牛客网刷题经验分享~&#x1f60e;大年初初二、初三 —— 牛客网刷题经验分享~&#x1f60e;)前言&#x1f64c;牛客网——基础语法【循环输出图形篇】&#x1f64c;BC98 线段图案 &#x1f64c;BC99 正方形图案 &#x1f64c;BC100 直角三角形图案 …

Python Flask 框架设置响应头,一篇文章学明白

flask 响应头设置&#x1f4d6; 导读&#x1f4d6; Python Flask 设置响应头&#x1f389; response.headers 属性&#x1f389; flask.abort() 函数返回特定状态码&#x1f4d6; Flask 中可设置的响应头参数&#x1f4d6; 其他关于响应头的配置&#x1f381; 使用中间件&#…