你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

F767板子使用UCOSIII+FPU出现浮点运算错误的问题

[复制链接]
大树树 提问时间:2018-8-23 19:14 /
阅读主题, 点击返回1楼
收藏 评论22 发布时间:2018-8-23 19:14
22个回答
馒头弟 回答时间:2018-8-27 16:41:59
大树树 发表于 2018-8-25 09:45
昨天调试发现计算的时候关中断就不出错了。
但按道理讲创建任务时候加了OS_OPT_TASK_SAVE_FP选项的,可结 ...

计算耗时多少啊,关中断计算完再开→_→
大树树 回答时间:2018-8-27 19:58:46
安 发表于 2018-8-27 10:13
楼主的看一下是否增加了.s的代码,我以前用到float时,会发生死机的情况。
; Reset handler
Reset_Handler  ...

这个我看了下是有的,目前没有因为计算死机,就是数据会错误
大树树 回答时间:2018-8-27 19:59:26
党国特派员 发表于 2018-8-27 10:39
在任务初始化(OSTaskStkInit)的时候,跟一下。看浮点寄存器有没有入栈。

好的,我试试看,谢谢
stm1024 回答时间:2018-8-27 21:03:41
有没有可能是你的计算步骤太长了,例如
q_3*powf(traj_PATH_x,3)  + q_4*powf(traj_PATH_x,4)+  q_5 *powf(traj_PATH_x,5);
只算powf的时候就被中断打断了然后切换到了其他地方?
相当于你的操作不是原子性的……?但是理论上来说,及时打断了也能恢复,但是被打断的时候,寄存器是否有被中断函数覆写?

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

大树树 回答时间:2018-8-28 07:44:59
stm1024 发表于 2018-8-27 21:03
有没有可能是你的计算步骤太长了,例如
q_3*powf(traj_PATH_x,3)  + q_4*powf(traj_PATH_x,4)+  q_5 *powf( ...

UCOS按正常来讲应该会将浮点寄存器的值入栈的,但感觉上没有正常入栈导致的问题。
wangweili1978 回答时间:2018-8-28 11:43:55
根据你所说的错误描述,很可能是任务切换时浮点寄存器数据破坏了。
看下汇编代码,有没有使用S16-s31以上的寄存器。如果有的话,有可能就是s16-s31这几个寄存器没有入栈。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

大树树 回答时间:2018-8-30 07:58:48
党国特派员 发表于 2018-8-27 10:39
在任务初始化(OSTaskStkInit)的时候,跟一下。看浮点寄存器有没有入栈。

查看是否入栈是要看汇编执行的情况吗?
大树树 回答时间:2018-8-30 08:00:11
wangweili1978 发表于 2018-8-28 11:43
根据你所说的错误描述,很可能是任务切换时浮点寄存器数据破坏了。
看下汇编代码,有没有使用S16-s31以上 ...

不太会这些操作,有没有相关的资料教程之类的,求大侠分享
zhwd102198 回答时间:2018-9-14 11:38:42
你好,问题解决了吗?我得也有这问题, ucos iii 浮点出现问题,底层计算没什么问题,我在显示时偶尔会出错,此时底层变量没有问题,显示形参传给函数后 有时会出错,数据变了,想不通问题

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版