当前位置: 首页 > news >正文

STM32+python产生三角波

目录

  • 任务目标
  • 实现方法
  • 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

相关文章:

  • 【计算机网络(考研版)】第一站:计算机网络概述(一)
  • C++空间命名
  • 树,堆,二叉树的认识
  • 计算机存储系统
  • 返回值的理解
  • 前同事居然因为 Pycharm 的这个功能,即使离职三年也依然经常被请去喝茶~
  • IPV4地址详解
  • ubuntu 22.04学习笔记
  • 【蓝桥杯-筑基篇】基础数学思维与技巧(1)
  • 图论(入门版)
  • 使用bindgen将C语言头文件转换为Rust接口代码
  • 第九层(2):STL之string类
  • Allegro如何自动做差分对内等长操作指导
  • 搜索引擎位置跟踪应用SerpBear
  • 浅析一条SQL在mysql中是如何执行的
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • log4j2输出到kafka
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • magento2项目上线注意事项
  • Next.js之基础概念(二)
  • React-redux的原理以及使用
  • V4L2视频输入框架概述
  • 番外篇1:在Windows环境下安装JDK
  • 复习Javascript专题(四):js中的深浅拷贝
  • 技术:超级实用的电脑小技巧
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 开发基于以太坊智能合约的DApp
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一个完整Java Web项目背后的密码
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 移动端 h5开发相关内容总结(三)
  • 异步
  • 2017年360最后一道编程题
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 阿里云移动端播放器高级功能介绍
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (arch)linux 转换文件编码格式
  • (C语言)fread与fwrite详解
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (论文阅读30/100)Convolutional Pose Machines
  • (三)uboot源码分析
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (一)基于IDEA的JAVA基础10
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)程序员技术练级攻略
  • (转)德国人的记事本
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .NET Framework杂记
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net 后台导出excel ,word
  • .net 受管制代码
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)