WCH沁恒单片机
直播中

李鑫

7年用户 1286经验值
私信 关注
[问答]

CH32V307 FreeRTOS的浮点问题如何解决?

在使用官方提供的FreeRTOS例程中,默认是不使用F指令子集的。我在开启了F指令子集后,并在“freertos_risc_v_chip_specific_extensions.h”文件中将宏ARCH_FPU修改为1后,无法进行浮点数的计算。工程配置如下

测试程序如下:

打印的内容如下:

但是不开F指令子集的话是可以正常打印计算的。请问是有什么操作不正确吗

回帖(2)

林秀玲

2022-9-16 09:31:24
您好,可以检查一下操作系统中任务堆栈的对齐方式是否为8字节对齐,若不是,改为8字节对齐应该可以解决问题。printf的C运行库要求8字节对齐,若没有对齐导致发送浮点数失败,因此操作操作系统需要对任务堆栈做出要求,需要进行8字节对齐。FreeRTOS的字节对齐方式设置如下图

此外需要注意下,当需要打印浮点类型时,MRS要进行如下配置,具体如下图:
举报

张涵

2022-9-16 09:31:37
您好,工程配置将下图圈出部分也勾选上
举报

更多回帖

发帖
×
20
完善资料,
赚取积分