1. keil中注释汉字出现乱码:
edit->configuration->editor->汉字简化版
2. 变量跳转:
右击->go to defitination到函数定义处
右击->go to reference到函数声明
3. Xtal无法定义
Xtal (MHz) 指定用于配置调试器和闪存编程器的设备的 XTAL 频率。XTAL反映了外部连接到器件的主振荡器。Keil5.35版本及以后不能定义此频率。此设置在 .uvprojx 项目中处于禁用状态(灰显为<未定义>),并且只能在使用 .uvproj 文件的项目中设置。
注:在仿真时,设置一次就可以,此处不设值无碍。
4. keil4和keil5的不同
keil4为uvproj,keil5为uvprojx,keil5可打开前者文件,反之则不能。
keil5打开前者时会将其转换为uvprojx文件,而原文件会变成uvproj.saved_uv4。用keil4打开时需要修改文件名。
5. 黄色和蓝色三角形
黄色三角形:代表将要执行的程序,也就是执行到此处,下一步就要执行这行代码了
蓝色三角形:代表光标所在的行
6. 断点
断点的作用是可以让程序运行到设置的断点处,然后查看各种变量和寄存器中的数值。
7. Translate,Build,Rebuild All和load
Translate是编译当前改动的源文件,在这个过程中检查语法错误。但并不生成可执行文件。
Build是只编译工程中上次修改的文件及其它依赖于这些修改过的文件的模块,同时重新链接生成可执行文件。如果工程之前没编译链接过,它会直接调用Rebuild All。
Rebuild是不管工程的文件有没有编译过,会对工程中所有文件重新进行编译生成可执行文件,因此时间较长。
load是加载hex文件。
因此当平时对工程源文件里面main.c之类的进行修改时,选择用build编译链接生成可执行文件就行了
8. 仿真配置
左边是软件仿真,右边是硬件仿真,点下拉框选“J-LINK/J-TRACE”;“Debug”下,选“JTAG”或“SW”,MAX为下载速率。
Trace”标签下:
若选择“SW”,则勾选“Enable”选项,在“Core”框中输入MCU实际工作时钟频率(就是单片机以什么频率来执行指令的,MDK会用它来计算时间),再勾选“Autodetect max SW0 Clock”。
若选择的“JTAG”,先勾选“Enable”,在“Core”中设好时钟频率,之后去掉勾选的“Enable”,因为“JTAG”模式不支持“Trace”功能。
9. 右下角的t0,t1,t2
“t0”表示程序开始运行到现在的时间,是不能复位的,t1,t2可以随便复位,就可以用来测具体某一个函数或某一行程序的运行时间。
具体操作为:在要测试的代码前加一个断点,当程序运行到目标行时会停下,然后复位“t1”或“t2”,并在下一行代码前加断点,然后继续运行程序,程序会停在下一行代码前,这个时候“t1”的值就是目标行程序的运行时间。
10. debug状态的几个step按钮含义
第1个图标是复位调试。
第2个图标是全速运行。
第3个图标是进入全速运行状态后,通过这个图标可以停止全速运行。
第4个图标是Step(Step one line)单步调试,每次点击运行一行代码,所以只要有子函数就会进入。
第5个图标是Step Over(Step over the current line)每次点击以函数为单位运行,不会进入函数内部。
第6个图标是Step out(Step out of the current line)点击后退出当前运行的函数,执行下一个函数。
第7个图标是Run to Cursor Line(Run to the current cursor line)直接运行到用户设置的行,设置方法比较简单,用户仅需在那行使用鼠标左键点击一下,可以看到前面有个箭头
以下10条为本人学习记录,供大家参考:
-
translate图标变成灰色,无法点击原因:
(1)如果是新建工程,可能是头文件的路径不对;
(2)如果是原来的工程,则是代码中有错误
(3)界面处于.h文件时,依旧无法translate,需要将将界面置于.c文件(在.h页面,不能进行translate,只有.c文件界面可以) -
debug全速运行后watch中变量无法删除:
在debug后,未全速运行时可以删除watch窗口中的变量,全速运行后不可以删除。并且只有全局变量可以在watch窗口中查看内部值。 -
“no jlink found ”报错,无法识别JLINK原因:
(1)目标CPU型号选择错误,可以通过JFlash软件来配置,F0系列选择Cortex-M0即可。(也可以删除JLinkSettings配置设置文件,然后点击keil中魔法棒,debug中的setting部分,重新选择芯片型号)
(2)接线出错(硬件连接出错) -
keil编译提示Note: object file renamed from “xxx.o“ to “xxx_1.o“
原因是有.c文件被重复定义,需要打开项目管理,把Drivers/CMSIS文件夹下的重复文件删掉即可解决。 -
xxxx.axf: Error: L6218E: Undefined symbol Data (referred from jwq3399.o).
(1)未添加头文件。若添加头文件后仍无法打开有报错,可能头文件所放的位置不正确,编译器无法找到。
(2)在.h头文件中声明变量为全局变量后,没有在.c源文件中声明(常见原因);
(3)函数名和声明的函数名不一致(常见原因)
(4)所有在main.c文件中使用的自定义函数部分需要在main.c文件中进行声明 -
消除工程中的黑色星号:
(1)鼠标右键点击文件,点击Options for file
(2)如图所示,点击Default
(3)如图所示,点击OK -
串口无法发送数据:
(1)串口配置好后,无法发送数据:按下复位键即可解决
(2)串口重定向后printf仍无法打印:如:printf(“xxx\n”);后面一定要跟\n串口才能打印出信息,一般加“\r\n” -
为keil5中的工程改名:
(1)先将工程中后缀为”.uvoptx”和”.uvprojx”的文件改名
(2)打开工程,在Manage Project Items中将project target改名
(3)点击魔术棒,在output中,将Name of Execuable改名,然后关闭
(4)编译,保存 -
MDK调试崩溃:Encountered an improper argument原因及解决办法:
(1)路径深或者有中文,将工程放在桌面路径下,工程名不要有中文。
(2)退出调试时未清除所有断点,建议清除。 -
自定义结构体无法识别,总报错:
keil5 平台下,自定义一个枚举结构体,在声明变量时,需要将声明放在结构体后面。否则无法识别,会报错