完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
大家好。我使用STM32f103工作中发现卡死问题。temp = -1800 * a /b;
然后out(temp); 执行这种代码,发现运行一定次数之后就卡死了,该段代码放在中断中就无法返回。如果放在主循环中,主循环卡死。如果我把temp换成一个常数或者简单的单次运算,就不会死机。请问这是为什么? |
|
相关推荐
39个回答
|
|
|
兄弟,你是让我传工程吗?不大方便啊。
|
|
|
|
|
|
我这里不是浮点运算,另外,这个跟math库应该没关系。
|
|
|
|
|
|
变量已经是全局了,所有办法都试过了,我一点辙都没有了。
|
|
|
|
|
|
那你知道跑飞到哪里去了吗
|
|
|
|
|
|
估计是b==0了
|
|
|
|
|
|
程序并没有跑飞,只是卡死,原因不明,单步运行可以继续的,全速运行就没反应了。systick中断还在运行的,这个中断级别最高。
|
|
|
|
|
|
没有b是常量,等于8
|
|
|
|
|
|
那你试试给一个小小的等待语句 全速跑试试
|
|
|
|
|
|
加个死循环一直跑吗?
|
|
|
|
|
|
不是死循环 就是一个小延时 比如 delay_ms(1)或者诸如此类的 因为你说如果单步没问题 全速有问题 所以我考虑让你加时延 一开始加大点 如果发现有改善 就慢慢把时延改短
|
|
|
|
|
|
本帖最后由 toofree 于 2018-4-25 15:43 编辑
对于没工程的,真没法试。 就一条 temp = -1800 * a /b,没有任何问题。对于这样的,temp、a、b 需要都是浮点或双精度数,且b不为零。 把程序的优化等级调到最低 |
|
|
|
|
跨界F16 发表于 2019-1-15 02:32 很遗憾,并没有什么作用。 |
|
|
|
|
Purchase88 发表于 2019-1-14 21:59 那就重点检查读取传感器函数里面吧 |
|
|
|
|
|
您延时给的多少?在哪里加的延时代码 贴过来瞅瞅
|
|
|
|
|
|
action_available = true;
// read position from sensor update_current_position(getMicroSteps()); update(); HAL_Delay(100000); 我把程序拿到主循环中跑了,刚才延时10ms不行,现在延时100ms还在跑,挺慢的 |
|
|
|
|
|
我检查过了,没有任何的死等函数,SCI是IO模拟的,这个不是问题所在。
|
|
|
|
|
|
工程暂时真的不大方便,我如果把其他的都搞掉,估计我自己都试不出来东西了,公司的代码不能乱发啊 |
|
|
|
|
|
|
|
|
|
|
|
我这个工程hal库的,优化最低连时钟初始化代码都过不了,我也不知道原因。另外temp,a,b都是long型,没有浮点运算。 |
|
|
|
|
|
想解决问题,还没法发代码,只能自己排查了
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
636 浏览 1 评论
976 浏览 0 评论
858 浏览 0 评论
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
4810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
3612 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 01:25 , Processed in 1.579713 second(s), Total 110, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2245