打印

STM32使用RTL+标准库的sin cos出现hardfault

[复制链接]
3077|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dengting|  楼主 | 2013-2-11 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先给您拜年!


问题如下:
本人使用STM32F103 + Keil MDK 4.5 + RTL,手动切换多任务(实际上没有切换)。
已查过,堆还有超大余量,栈也很多剩余,只做一个简单的循环,(不做任务切换),只要执行以下一段代码,就会HardFault_Handler()
哭啊,过年几天一直在找这个问题,最后发现是这一断代码的问题。。。
我现在的栈也是用的8字节对齐,请帮我看看下面两个三角函数有没有可能造成崩溃?
                r  = 90 - (GPSInfo.SatInfo.Elevation);                                                
                //r/= 1.5;
                r*=1.2;                        //缩放R
               
                xd= r * sin(GPSInfo.SatInfo.Azimuth * PI/180 );
                x = 267 + xd;        //以屏幕中心点偏移
                yd = r * cos(GPSInfo.SatInfo.Azimuth * PI/180);
                y= 120 - yd;        //以屏幕中心点偏移

把这几行注释掉就没问题了,,,
是我的Keil标准库没设置好?还是它有BUG?还是sin / cos的参数需要先断言?

请香主指点一下,感觉这C标准库无法驾驭,是不是要改用MicroLib?
还有,之前发现snprintf里用%f也会出错,找Keil论坛说是任务切换,什么栈不是8位对齐。。。而且我也只是用的“协同式”手动切换任务...
请高人给指一条出路。。。
沙发
dengting|  楼主 | 2013-2-13 05:24 | 只看该作者
结贴:
是自己的代码问题,造成跑飞,结果赖在了标准库的头上。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

70

帖子

0

粉丝