OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 533|回复: 4

keil中找程序跑飞原因,请大神指点

[复制链接]

7

主题

61

帖子

0

精华

高级会员

Rank: 4

积分
577
金钱
577
注册时间
2016-3-1
在线时间
76 小时
发表于 2024-5-20 22:07:07 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 feiyinglala 于 2024-5-20 22:50 编辑

https://www.cnblogs.com/xubaixiang/p/16159782.html
参考上述教程找程序跑飞的原因,先查找中断时候的内存,获得LR和PC的值,到Memory中对应寻找汇编指令,如图上半部分所示
无标题.png

跑飞的语句是 control_angle.roll  = angle->roll  - rc->ROLL  / RC_to_Angle;
断点1.JPG
断点2.JPG
断点2后.JPG


RC_to_Angle 宏定义为10.0f

struct _out_angle{
float roll;
float pitch;
float yaw;
}angle,control_angle;


struct _Rc{
        short YAW;                        //ͨµÀ1:Æ«º½µÄ¾»¿ØÖÆÁ¿
        short THROTTLE;                //ͨµÀ2:ÓÍÃŵľ»¿ØÖÆÁ¿
        short PITCH;                //ͨµÀ3:¸©ÑöµÄ¾»¿ØÖÆÁ¿
        short ROLL;                        //ͨµÀ4:¹öתµÄ¾»¿ØÖÆÁ¿
}RC;



最佳答案

查看完整内容[请看2#楼]

意思是可排除除数为0的情况?那就检查一下堆栈是否溢出,指针是否越界或未初始化。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3280

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8183
金钱
8183
注册时间
2020-5-11
在线时间
3697 小时
发表于 2024-5-20 22:07:08 | 显示全部楼层
意思是可排除除数为0的情况?那就检查一下堆栈是否溢出,指针是否越界或未初始化。
专治疑难杂症
回复

使用道具 举报

0

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
344
金钱
344
注册时间
2020-5-26
在线时间
83 小时
发表于 2024-5-21 09:55:26 | 显示全部楼层
引用的贴子是教你查找在哪里跑飞的,实际跑飞的原因还是要自己去找
回复

使用道具 举报

7

主题

61

帖子

0

精华

高级会员

Rank: 4

积分
577
金钱
577
注册时间
2016-3-1
在线时间
76 小时
 楼主| 发表于 2024-5-24 14:35:01 | 显示全部楼层
LcwSwust 发表于 2024-5-21 09:47
意思是可排除除数为0的情况?那就检查一下堆栈是否溢出,指针是否越界或未初始化。

我用全局变量解决问题了,问题出在angle->roll这一句
执行完这句就跑飞。
我换成了measure_angle.roll,measure_angle是全局结构体
回复

使用道具 举报

7

主题

61

帖子

0

精华

高级会员

Rank: 4

积分
577
金钱
577
注册时间
2016-3-1
在线时间
76 小时
 楼主| 发表于 2024-5-24 14:37:26 | 显示全部楼层
liujc 发表于 2024-5-21 09:55
引用的贴子是教你查找在哪里跑飞的,实际跑飞的原因还是要自己去找

那确实,只是一个思路
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 08:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表