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

STM32卡死问题

[复制链接]
embededtony 提问时间:2018-4-25 13:49 /
大家好。我使用stm32f103工作中发现卡死问题。temp = -1800 * a /b;
然后out(temp);
执行这种代码,发现运行一定次数之后就卡死了,该段代码放在中断中就无法返回。如果放在主循环中,主循环卡死。如果我把temp换成一个常数或者简单的单次运算,就不会死机。请问这是为什么?
收藏 评论39 发布时间:2018-4-25 13:49

举报

39个回答
embededtony 回答时间:2018-4-25 15:59:11
bargagebaobei 发表于 2018-4-25 15:55
您延时给的多少?在哪里加的延时代码 贴过来瞅瞅

                action_available = true;
  // read position from sensor
                update_current_position(getMicroSteps());
                update();
                HAL_Delay(100000);
我把程序拿到主循环中跑了,刚才延时10ms不行,现在延时100ms还在跑,挺慢的
embededtony 回答时间:2018-4-25 14:06:16
bargagebaobei 发表于 2018-4-25 14:00
楼主 需要发一下整个temp如何处理的代码 有可能是溢出

theta_temp = -1800 * (stepper.current_step_number)/(stepper.micro_steps)
这个micro_steps目前是个定值8,然后current_step_number是从0开始累加的数,有的时候到了590就卡死了。
embededtony 回答时间:2018-4-25 14:08:40
bargagebaobei 发表于 2018-4-25 14:00
楼主 需要发一下整个temp如何处理的代码 有可能是溢出

另外我发现一个问题,如果我把我的模拟sci读取传感器的函数注释掉不调用,就没有问题。我怀疑是不是堆栈大小不合理。但是我调整堆栈也没什么效果。
springvirus 回答时间:2018-4-25 13:53:29
能否发下更全的代码,比如temp,a,b的类型,以及死机时各个变量的值

仿真下吧,应该不难定位

评分

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

查看全部评分

CC4 回答时间:2018-4-25 13:58:54
本帖最后由 select326 于 2018-4-25 15:51 编辑

占坑,不想说啥
琦子 回答时间:2018-4-25 14:00:34
楼主 需要发一下整个temp如何处理的代码 有可能是溢出

评分

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

查看全部评分

embededtony 回答时间:2018-4-25 14:01:17
springvirus 发表于 2018-4-25 13:53
能否发下更全的代码,比如temp,a,b的类型,以及死机时各个变量的值

仿真下吧,应该不难定位 ...

都是long类型的运算,只剩下systick中断在运行,因为这个级别最高了。
embededtony 回答时间:2018-4-25 14:03:35
springvirus 发表于 2018-4-25 13:53
能否发下更全的代码,比如temp,a,b的类型,以及死机时各个变量的值

仿真下吧,应该不难定位 ...

仿真只能看到,停留在函数的第一条语句了,执行不下去了。
jjbboox 回答时间:2018-4-25 14:04:09
除0了吧?
b会不会出现0?

评分

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

查看全部评分

embededtony 回答时间:2018-4-25 14:06:40
jjbboox 发表于 2018-4-25 14:04
除0了吧?
b会不会出现0?

没有,目前是个常数8
wudianjun2001 回答时间:2018-4-25 14:08:59
运算导致异常了吧

评分

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

查看全部评分

embededtony 回答时间:2018-4-25 14:11:30

还请赐教,会是何种类型的异常?
琦子 回答时间:2018-4-25 14:14:46
楼主  请问 每次基本都是到590吗
embededtony 回答时间:2018-4-25 14:18:55
bargagebaobei 发表于 2018-4-25 14:14
楼主  请问 每次基本都是到590吗

基本都是,但是我如果改目标数就不一定。比如我给10000的目标数,可能到590,如果我改成100000,可能就变成每次都到4771,很奇怪。
琦子 回答时间:2018-4-25 14:21:13
那很好 建议你加代码 加589的时候断点 然后单步执行 看到底哪里的问题
123下一页

所属标签

相似问题

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