关于keil MDK调整优先级程序出错的解决思路

  1. 先说一下标准:一个好的工程,基本可以做到IDE所有优化等级通吃。

  1. 关于优化和调试的问题:只要开启优化哪怕O1也不具备调试的意义了(因为变量可能在寄存器中而不是在RAM中),只能通过串口打印的方式查看变量了,所以只有在O0状态下,代码才能生成配合仿真器读取变量的代码,另外代码的不规范导致优化过程中出现异常现象,如共享变量的访问、变量未彻底初始化访问等等,都会体现出来

  1. 很多时候我们都希望将程序开到最高优化等级,如果开启后能够正常运行,则万事大吉。如果不能正常运行或者程序异常就比较闹心。排查起来也挺闹心的,这里分享一些实战的方式。

总体解决思路是:项目开始时就开启最高优先级,调试某个文件时,单独设置最低优先级,有利于在线仿真跟踪,调试完成后都开启最高优先级。

对于之前的遗留项目可采用以下方法

分两个方向:

1、开启优化话后,部分功能不正常

这种的解决思路是把这部分的文件继续设置为低优化等级,整体工程设置为高优化等级。

2、开启优化后,直接整体卡死

这种的解决思路是整体工程设置为低优化等级,逐步开启工程文件的优化等级。

3、具体到某些函数的优化也是可以单独开启测试的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值