找回密码
 立即注册
查看: 1180|回复: 10

浮点运算硬件和格式化浮点变量打印有冲突

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-09 10:21:33

1

主题

4

回帖

39

积分

新手上路

积分
39
发表于 2024-8-8 21:27:23 | 显示全部楼层 |阅读模式
32F12K54系列单片机,我出现的问题: 当使用 浮点运算单元 时格式化打印会出现问题,关闭浮点运算单元,格式化打印没有问题。
我的格式化打印函数为:

void print_uart3(volatile char *stringg, ...)
{
        volatile char stringx[100];  //一个足够长的字符串
        va_list arg;
        va_start(arg,stringg);
        vsprintf(stringx,stringg,arg);
        va_end(arg);
        uart3_sendstr(stringx); //发送函数 可以是oled usart spi 。。。。字符串格式
}

uart3_sendstr是串口发送函数,可以替换为其他的字符串打印函数。

若我使用 print_uart3("%f\n",a); 将float类型变量a打印出来,将会使单片机不停重启。
若我使用 print_uart3("%d\n",a); 将int类型变量a打印出来,则单片机正常运行。
若我关闭浮点运算单元
截图202408082119314362.jpg

则单片机正常打印浮点数。

我的问题代码在附件中
请求各位帮忙解决。

2.8 串口3.rar

50.53 KB, 下载次数: 71

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 2024-8-8 22:23:28 | 显示全部楼层
FPMU库是不开源的,我也不知道什么原因,不要同时用就好了
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-09 10:21:33

1

主题

4

回帖

39

积分

新手上路

积分
39
发表于 2024-8-9 00:37:21 | 显示全部楼层
下图是我使用DMA串口发送数据的情况,发送的数据会时不时抖动以下,在到达某个值的时候突然出现一片乱码
截图202408090032151328.jpg

我使用的是STC32F12K54单片机
若不使用DMA发送数据,改使用串口发送,数据就不会发送乱码
(百思不得其解)
代码打包好了,关于上一个问题,我把串口3输出改成串口1输出,浮点冲突不见了.
截图202408090036192332.jpg

这两个是用于切换使用普通串口发送和使用DMA串口发送的代码.

2.9 串口1 DMA 有BUG可能会乱码.rar

322.25 KB, 下载次数: 69

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-09 10:21:33

1

主题

4

回帖

39

积分

新手上路

积分
39
发表于 2024-8-9 00:39:51 | 显示全部楼层
Debu*** 发表于 2024-8-8 22:23
FPMU库是不开源的,我也不知道什么原因,不要同时用就好了

我需要快速计算FOC的输出,通过串口观察驱动器的状态,如果没有DMA,发送数据会非常慢,会影响FOC的计算速度,而FOC的计算频率对电机控制有很大性影响.所以不得不把串口DMA和FPMU一起使用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:358
  • 最近打卡:2025-06-15 18:40:05
已绑定手机

21

主题

488

回帖

855

积分

高级会员

积分
855
发表于 2024-8-9 08:14:07 | 显示全部楼层
这个问题有一定的代表性,我也关注一下
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-06-16 09:26:42
已绑定手机

39

主题

2059

回帖

7070

积分

论坛元老

积分
7070
发表于 2024-8-9 11:13:40 | 显示全部楼层
keil C251编译器,用到lib库文件时,不要使用“REMOVEUNUSED”。
把“REMOVEUNUSED”删掉试试:
截图202408091113068018.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-09 10:21:33

1

主题

4

回帖

39

积分

新手上路

积分
39
发表于 2024-8-9 22:19:09 | 显示全部楼层
本帖最后由 杨光宇 于 2024-8-10 14:56 编辑
乘风*** 发表于 2024-8-9 11:13
keil C251编译器,用到lib库文件时,不要使用“REMOVEUNUSED”。
把“REMOVEUNUSED”删掉试试:
...

我试试,没用,还是有乱码
截图202408101456212863.jpg 截图202408101456358522.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-06-15 22:44:24
已绑定手机

19

主题

3231

回帖

5281

积分

论坛元老

积分
5281
发表于 2024-8-9 23:40:38 | 显示全部楼层
闭源的东西调试起来很麻烦啊
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-08-09 10:21:33

1

主题

4

回帖

39

积分

新手上路

积分
39
发表于 2024-8-10 15:10:14 | 显示全部楼层
乘风*** 发表于 2024-8-9 11:13
keil C251编译器,用到lib库文件时,不要使用“REMOVEUNUSED”。
把“REMOVEUNUSED”删掉试试:
...

试过了,没用
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16645
发表于 2024-8-10 20:03:37 | 显示全部楼层
32F12K54设计改进中,尚未定型量产,请改PCB,
用速度实际更快的 8051U-34K64-LQFP48取代
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 18:15 , Processed in 0.164608 second(s), 107 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表