完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教大家:我自己编写了组合导航相关的算法,在VS2013上已经调试通过了,但是利用CCS将适当修改后的代码写入F28335的RAM中调试的时候,有一个子函数的参数传递有问题,如下: 主函数: int q_0 = 15; int r_0 = 3; double coef_fb_0 = 1.0; void main() { InitSysCtrl(); ////InitGpio(); DINT; InitPieCtrl(); IER= 0x0000; IFR= 0x0000; InitPieVectTable(); kf= kalman_init(q_0, r_0); 进入子函数kalman_init之后: |
|
相关推荐
3个回答
|
|
解决了吗???????
|
|
|
|
|
|
|
|
已解决! 主要原因是我这个 : Kalman kalman_init(q_0, r_0)子函数的返回值是一个结构体,该结构定义了好几个非常大的矩阵(15x15维的),所以占用的内存挺大的,当把该结构体定义为全局变量并且作为输入参数同时返回值为void类型时,问题得到的解决! 解决的方法是我把这个代码现在Visual studio2013上测试,发现进入这个子函数时,实参可以传递给形参,但是单步执行时,就跳出以下错误 百度查找原因可能是:在分配较大空间的临时变量的时候系统会插入chkstk函数来检测是否超过堆栈上已经分配的空间IDA pro反汇编识图 所以怀疑可能是返回值的原因,也可能是在子函数内部建立的Kalman类型的局部变量占用的内存太大,于是两种都测试了一下,发现是返回值的问题,问题解决!! 综上:子函数的返回值为较大的结构体时,可能会涉及到占用内存空间太大导致堆栈不足的问题! 以上个人见解,希望看到的大侠指正!! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
2293 浏览 0 评论
677 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
2730 浏览 0 评论
3495 浏览 1 评论
1190 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 20:27 , Processed in 0.437968 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号