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