目录
- 任务目标
- 实现方法
- 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方法,''表示不采用任何连接符合并字符串。
作者:潇洒的电磁波