KEIL代码执行异常

   使用keil过程中,发现有些代码执行不到,或者参数异常。想到各种问题都解决不了,很郁闷。就比如我的两次经历

1.静态参数赋值不成功,在一个函数里设置一个静态参数,并赋值为0,程序运行以后发现这个参数使用时值变了不是0,找了好久都没找到问题,最后不得已换成了全局变量。

2.参数判断不对,下图是我的代码,BootRam_Flash_Str.state 这个参数在串口中断中赋值成0,并且我再窗口中断中打印数据参数已经为0了,但是程序还是一直死在这个while中,不往下运行。但是我在while中加个打印这个参数,程序就正常。最终我在while中加一条BootRam_Flash_Str.state = BootRam_Flash_Str.state;  然后发现这个地方不能打断点,突然想到keil具有代码优化的功能,我就怀疑代码优化导致的。

3.问题解决

(1)当前优化等级默认是1

(2)修改成

最终发现这个问题的确解决了。

大家如果对优化等级有疑问的话可以去网上看看其他网友写的资料,我这就不多描述了。如果为了代码执行正常,建议大家不要代码优化了,但是这样会耗费一些ram

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
keil sqrtf() 异常中断可能意味着在使用keil开发环境中的sqrtf()函数时出现了异常或错误的情况,导致程序中断执行。 sqrtf()函数是用于计算浮点数的平方根的函数。当我们在使用这个函数时,可能会遇到以下一些异常情况: 1. 被计算的数值为负数:sqrtf()函数只能计算非负数的平方根,如果传入的数值为负数,就会引发异常中断。 解决方法:在使用sqrtf()函数之前,需要进行输入数值的合法性验证,确保输入的数值为非负数。 2. 数值溢出:当输入的数值过大时,sqrtf()函数可能会计算超出其能表示的范围,从而引发异常中断。 解决方法:要确保输入的数值不会导致超出sqrtf()函数的范围,可以适当限制输入的数值范围或使用其他更适合处理大数值的函数。 3. 引用错误的库函数:当调用sqrtf()函数时,可能会因为引用了错误的库函数而导致异常中断,例如函数名拼写错误或者使用了不匹配的库函数版本等。 解决方法:要检查所使用的keil开发环境的库函数版本是否正确,并确保包含了正确的头文件,在调用sqrtf()函数之前进行相关的设置和声明。 无论是哪种情况引发了异常中断,我们都需要分析异常中断的原因,并对代码进行修正。可以通过编写异常处理机制、使用调试工具输出程序状态或者打印相关变量的值等方法来辅助排错和修复代码

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值