调试相关知识
KEIL
快捷键
默认快捷键 | 快捷键 |
---|---|
剪切整行 | Ctrl + L |
大小写变换 | Ctrl / Ctrl+Shirt + U |
自由选择范围 | Alt+Shirt+鼠标光标 |
跳转书签 | F12 |
缩进 | Tab |
取消缩进 | Shirt+Tab |
设置 | 自定义快捷键 | 快捷键 |
---|---|---|
Edit:Insert/Remove Bookmark | 书签 | Ctrl + Shift + E |
Edit:Go to Next Bookmark | 跳转书签 | Ctrl + E |
Edit:Clear ALL Bookmark | 清理所有书签 | Ctrl + Shift +Alt + E |
Edit:Advanced:Comment Selection | 多行注释 | Ctrl + Q |
Edit:Advanced:UnComment Selection | 取消多行注释 | Ctrl + W |
Edit:Outing:Collapse ALL Definitions | 全部折叠 | Ctrl +Shift+ Q |
Edit:Outing:Expand ALL Definitions | 全部展开 | Ctrl +Shift+ W |
实用小技巧
- 关闭编译声音
project > options for target>user选项卡最下面有个beep when compelet去掉钩就行了
- 除去L16警告
黑色背景
复制进 global.prop 里
# properties for all file types
indent.automatic=1
virtual.space=0
view.whitespace=0
view.endofline=0
code.page=936
caretline.visible=1
highlight.matchingbraces=1
print.syntax.coloring=1
use.tab.color=1
create.backup.files=0
auto.load.ext.modfiles=0
save.prj.before.dbg=0
save.files.before.dbg=0
function.scanner.project=1
function.scanner.files=1
function.scanner.modules=1
# properties for c/cpp files
syntax.colouring.cpp=1
use.tab.cpp=0
tabsize.cpp=3
line.margin.visible.cpp=1
fold.cpp=1
monospaced.font.cpp=1
# properties for asm files
syntax.colouring.asm=1
use.tab.asm=0
tabsize.asm=4
line.margin.visible.asm=1
monospaced.font.asm=1
# properties for other files
use.tabs=0
tabsize=4
line.margin.visible.txt=0
monospaced.font.txt=1
# setting for code completion and syntax check
cc.autolist=1
cc.highlightsyntax=1
cc.showparameters=1
cc.triggerlist=1
cc.triggernumchars=3
cc.enter.as.fillup=0
cc.usealpha4inactcode=1
cc.alphavalue=50
# autosave for editor files
autosave=0
autosave.interval=5
# vertical edge at right margin
edge.mode=0
edge.column=80
# Specification for text selection and caret line
selection.fore=#000000
selection.back=#86C7F7
caret.fore=#FFFFFF
caret.back=#400000
# Color for vertical edge
edge.colour=#00FF00
# C/C++ Editor files
template.cpp="#define","#define |";"#if","#if |\r\n\r\n#endif";\\
"#include","#include ";"Header","// Header:\r\n// File Name: |\r\n// Author:\r\n// Date:\r\n";\\
"continue","continue;";"do","do\r\n{\r\n\t// TODO: enter the block content here\r\n\t\r\n\t|\r\n} while ();\r\n";\\
"enum","enum |\r\n{\r\n\t\r\n};\r\n";"for","for(|;;)\r\n{\r\n}";\\
"fpointer_type","typedef int (* |F)();\r\n";"function","void function(|)\r\n{\r\n\r\n}\r\n";\\
"if","if (|)";"ifelse","if (|)\r\n{\r\n}\r\nelse\r\n{\r\n}";\\
"struct","struct | \r\n{\r\n\r\n};\r\n";"switch","switch (|)\r\n{\r\n\tcase:\r\n\t\tbreak;\r\n\tcase:\r\n\t\tbreak;\r\n\tdefault:\r\n\t\tbreak;\r\n}";\\
"void","void | ();\r\n";"while","while (|)\r\n{\r\n}";\\
font.monospace.cpp=Courier New
style.cpp.32=font:Courier New,size:12,fore:#F8F8F8,back:#0B161D
style.cpp.4=font:Courier New,size:12,fore:#FF3A83,back:#0B161D
style.cpp.10=font:Courier New,size:12,fore:#FFAA00,back:#0B161D
style.cpp.1=font:Courier New,size:12,fore:#00FF00,back:#0B161D
style.cpp.2=font:Courier New,size:12,fore:#1E9AE0,back:#0B161D
style.cpp.5=font:Courier New,size:12,fore:#FFAA00,back:#0B161D,bold
style.cpp.6=font:Courier New,size:12,fore:#55E439,back:#0B161D
style.cpp.11=font:Courier New,size:12,fore:#F8F8F8,back:#0B161D
style.cpp.9=font:Courier New,size:12,fore:#FFAA00,back:#0B161D
style.cpp.7=font:Courier New,size:12,fore:#55E439,back:#0B161D
style.cpp.34=font:Courier New,size:12,fore:#500000,back:#20FFFF
style.cpp.35=font:Courier New,size:12,fore:#FF0000,back:#FFFFFF
style.cpp.16=font:Courier New,size:12,fore:#B00040,back:#0B161D
style.cpp.12=font:Courier New,size:12,fore:#000000,back:#E0C0E0
style.cpp.86=font:Courier New,size:12,fore:#696969,back:#FFFFFF
# Asm Editor files
font.monospace.asm=Courier New
style.asm.32=font:Courier New,size:16,fore:#F8F8F8,back:#0B161D
style.asm.1=font:Courier New,size:16,fore:#1E9AE0,back:#0B161D
style.asm.2=font:Courier New,size:16,fore:#FF3A83,back:#0B161D
style.asm.3=font:Courier New,size:16,fore:#FFAA00,back:#0B161D
style.asm.4=font:Courier New,size:16,fore:#FFAA00,back:#0B161D
style.asm.5=font:Courier New,size:16,fore:#F8F8F8,back:#0B161D
style.asm.6=font:Courier New,size:16,fore:#FFAA00,back:#0B161D
style.asm.7=font:Courier New,size:16,fore:#0000FF,back:#0B161D
style.asm.9=font:Courier New,size:16,fore:#FFAA00,back:#0B161D
style.asm.10=font:Courier New,size:16,fore:#FFAA00,back:#0B161D
style.asm.11=font:Courier New,size:16,fore:#007F00,back:#0B161D
style.asm.12=font:Courier New,size:16,fore:#55E439,back:#0B161D
style.asm.8=font:Courier New,size:16,fore:#FFAA00,back:#0B161D
# Editor Text files
font.monospace.txt=Courier New
style.txt.32=font:Courier New,size:14,fore:#FFFFFF,back:#000000
编译提示
KEIL 编译警告
警告编号 | 含义 | 英文提示 |
---|---|---|
C202 | 未定义标识符 | undefined identifier |
C206 | 没有包含引用函数的头文件 | missing function-prototype |
C129 | ||
C235 | 条件编译#ifndef忘记写#endif | |
C316 | 235 | unterminated conditionals |
C249 | 数据段过长 | SEGMENT TOO LARGE |
C280 | 定义变量,后面没有赋值 | ‘check_value’: unreferenced local |
C318 | 打不开 | can’t open file |
C290 | 函数有返回值的类型,但你却没有返回一个值 | |
C173 | 函数定义了返回值,但在实现时没有返回实际值 | missing return-expression |
L16 | 某些被定义的函数,没有被使用 | uncalled segment |
L1 | 未解决的外部文件 | UNRESOLVED EXTERNAL SYMBOL |
L2 | 提到L1问题,没有添加头文件 | REFERENCE MADE TO UNRESOLVED EXTERNAL |
L25 | 数据类型不同 | DATA TYPES DIFFERENT |
L104: | 重复定义 | MULTIPLE PUBLIC DEFINITIONS |
MDK 编译警告
警告编号 | 含义 | 英文提示 |
---|---|---|
#1295D | 函数加个void | Deprecated declaration |
#550-D | 没有使用 | |
#177-D | 声明但从未提及 | |
#47-D | 重复定义 | |
#1-D | 需要换新行,c语言新行结束 | last line of file ends without a newline |
解决 编译警告
--diag_suppress=177,1295,550
J-Link
J-Link是SEGGER公司为支持仿真ARM内核芯片推出的JTAG仿真器。配合IAR EWAR,ADS,KEIL,WINARM,RealView等集成开发环境支持所有ARM7/ARM9/ARM11,Cortex M0/M1/M3/M4, Cortex A5/A8/A9等内核芯片的仿真,与IAR,Keil等编译环境无缝连接
J-link调试软件命令
工具 | 功能 |
---|---|
J-link JTAGLoad | |
J-Mem | |
J-link STR9 Commander | |
J-link STM32 Unlock | |
J-link RTT Viewer | |
J-link RTT Logger | |
J-link RTT Client | |
J-link Registration | |
J-link RDI Config | |
J-link License Manager | |
J-link GDB Server | |
J-link DLL Updater | |
J-link Configurator | |
J-Flash SPI |
J-link Commander 调试工具
命令 | 功能 | 备注 |
---|---|---|
h | 停止运行 | |
s | 单步目标芯片 | |
g | go运行 | |
mem32 | 读取32位数据 | mem32 0x08000000 1 |
r | 重启 |
J-Flash 读Flash数据
1、使用J-Flash读单片机的Flash数据
2、使用J-Flash下载程序到单片机