迅维网

查看: 1092|回复: 0
打印 上一主题 下一主题

STM32在uc/os ii 中强转到double为0

[复制链接]
跳转到指定楼层
1#
发表于 2016-12-29 10:11:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 山东青岛 来自 山东青岛

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
      最近将裸机上的程序移植到uc/os ii中,其中有将int16_t类型数据强转为double类型,但是打印显示转后全为 0.000,查了很久,终于解决。
      在裸机上一切正常,但是在uc/os ii中就有问题,因此可以初步判断是uc/os中的问题。这时候查uc/os转为浮点后有问题,就能找到答案。
原来是因为uc/os中的用户堆栈没有八字节对齐的原因,在裸机中运行程序时,系统默认堆栈是八字节对齐的,到uc/os中则不会这样。所以将用户堆栈八字节对齐就可以了。
我在keil MDK4.6环境下开发,在用户堆栈前加入__align(8) 关键字即解决了问题。

  • <blockquote>__align(8) static OS_STK TaskLedStk[N_TASKS][TASK_LED_STK_SIZE];




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

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复