找回密码
 立即注册
查看: 979|回复: 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, 下载次数: 67

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 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, 下载次数: 66

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数: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
  • 打卡总天数:321
  • 最近打卡:2025-05-01 21:04:13
已绑定手机

21

主题

487

回帖

1027

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6841

积分

论坛元老

积分
6841
发表于 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
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

积分
4866
发表于 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”删掉试试:
...

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 00:18 , Processed in 0.134232 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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