参考http://blog.csdn.net/zhzht19861011/article/details/5964827或附近文档
补充:勾选Utilities选项卡中的Updata taget before debugging,可以避免在debug前忘记download最新生成的axf文件
有趣的Keil MDK细节
http://www.cnblogs.com/heiyue/p/3373178.html
Keil代码窗口中的黄色箭头表示program counter所在的位置,蓝绿色箭头表示鼠标所指向的位置,参考http://www.arm.com/files/pdf/mcbstm32c_lab.pdf
Keil官方文档http://www.keil.com/support/man/docs/uv4,其中包含文件后缀说明和Error信息说明等
编译器默认为keil自带的armcc,armcc默认支持C90,如需使用C99特性(如结构体元素的单独赋值,位于执行语句后的变量声明),需在Option for target-->C/C++-->Misc Controls栏填入--c99
如需使用gcc(直接支持c99),参考:
http://www.nuvoton-m0.com/forum.php?mod=viewthread&tid=4289
http://www.keil.com/appnotes/docs/apnt_199.asp
http://blog.csdn.net/zhaozzy/article/details/8774723
lesson learn:
1.调试时无法在源代码窗口设置断点
cause:option for target -- output 勾选 debug information和browse information
2.error 122: AGDI: memory read failed
cause:执行了芯片擦除,需重新download一个程序
3.缩减代码体积的方法:
a) option for target -- C/C++ 勾选 one elf section per function
b) option for target -- target 勾选 use microlib
MicroLib 专为嵌入式设计,可获得更小的代码尺寸http://www.arm.com/zh/products/tools/software-tools/mdk-arm/compilation-tools/index.php
c) option for target -- C/C++ 提高optimization级别
参考http://www.keil.com/appnotes/files/apnt202.pdf
4.查看局部变量:
a)可通过symbol window从所在文件的所在函数内添加,由于局部变量的作用域只在函数内,因此只有运行到其所在函数处才可查看,否则会显示"out of scope"
b)执行到其所在函数时,可通过call stack window查看
c)若想在watch窗口查看,可将局部变量定义为static类型