0
点赞
收藏
分享

微信扫一扫

stm32使用数学库-基于stm32cubeide

奔跑的酆 2022-03-12 阅读 79

dsp的库位置,以F1为例:
在这里插入图片描述
打开如下所示
在这里插入图片描述
使用如下几个文件
在这里插入图片描述
在这里插入图片描述
复制到项目文件夹
在这里插入图片描述
右击项目点击属性进行编辑,按照如下步骤添加路径和库
在这里插入图片描述
这里注意这里是M3的核,所以选ARM+MATH_CM3
在这里插入图片描述
这里库的名字编写规则为删去前面的lib还有后缀
在这里插入图片描述
效果如下:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
需要使用串口,在cubemx中使能串口,然后添加串口重定向

#include "stdio.h"

#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif

PUTCHAR_PROTOTYPE
{
	HAL_UART_Transmit(&huart1, (uint8_t*)&ch,1,HAL_MAX_DELAY);
  return ch;
}

因为涉及到很多浮点计算,这里使能浮点打印
在这里插入图片描述
添加头文件
在这里插入图片描述

在main函数中添加如下代码

  int16_t i;
  float32_t pSinVal;
  float32_t pCosVal;
  for(i = -180; i < 180; i++)
  {
  	  arm_sin_cos_f32(i, &pSinVal, &pCosVal);
      printf("%f,%f\n",pSinVal,pCosVal);
  }

打印结果如下,这里为了方便查看已经将串口接受的数据保存为文本
在这里插入图片描述
使用python进行图像绘制,查看效果

import matplotlib.pyplot as plt

f = open("test.txt",'r')
x = range(-180,180,1)
y_sin = []
y_cos = []
for line in f:
    # print(line.split(',')[0])
    line= line.strip('\n')
    y_sin.append(float(line.split(',')[0]))
    y_cos.append(float(line.split(',')[1]))
f.close()

plt.plot(x,y_sin,color = "green")
plt.plot(x,y_cos,color = "red")
plt.title("demo")
plt.xlabel("X")
plt.ylabel("Y")


plt.show()

结果如下,还是很好看的
在这里插入图片描述
查看打印时间,在代码执行前后添加变量记录
在这里插入图片描述
使用debug查看,其实这个时间都花在串口上了,我这边测试不加串口函数的话时间是16ms
在这里插入图片描述

举报

相关推荐

0 条评论