keil MDK使用过程中遇到的问题及解决办法(更新)

keil MDK使用过程中遇到的问题及解决办法

1. 程序卡死在 BX R0(汇编卡死在 BEAB BKPT 0xAB)处

  • 原因:程序中可能使用了printf()函数而没有勾选使用微库(或未定义printf函数就直接使用了)
  • 解决方法:如果需要微库的方式实现的printf()函数,把微库勾选上
    若不需要printf()函数,将程序中的printf()函数清除。

2. 程序卡死在B.处

  • 原因:程序中有中断没有处理,或者在C/C++混合编程时,中断函数写在.cpp文件中了
  • 解决方法:查找是否有中断函数没有处理,将其中断服务函数加上
    若中断函数写在.cpp文件中,中断函数两端加extern“C”的声明,如下:
#ifdef __cplusplus
extern "C" {
#endif
/* 此处写中断服务函数*/
#ifdef __cplusplus
}
#endif

3.keil屏蔽某一特定的警告

  • 在工程选项中C/C++模块的 Misc Controls 中增加: --diag_suppress=num(num为警告部分#号后面的数字)

4.在调试过程中变量不时时更新

勾选上view菜单栏下的最后一项:periodic window update

5.处理单精度转双精度的警告

使用STM32F4时编译器提示

..\..\Code\App\main.c(803): warning:  #1035-D: single-precision operand implicitly converted to double-precision

解决方法:

  • 在变量后面添加f,如:float delta_s = lsdb_robot_speed[0] * 0.1f;
  • 或者把Target->Floating point Hardware 关掉(未测试)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值