Keil软件全面掌握(持续补充)

Options for Target 工程目标选项

在这里插入图片描述

  • Devie设备

Target目标

在这里插入图片描述

1 晶振频率:用于仿真调试用,硬件调试不用管这个。

2 操作系统: 是否选择Keil自带的 RTX 操作系统

3 系统预览文件: 一般是默认使用系统自带,不选择自己定义的。

4 ROM存储地址: ROM存储指的是程序储存的地址,片外、片内两种。程序存储在片内好理解(一般下载程序都是下载到片内FLASH),片外存储程序一般都是项目做大了,或有特殊要求时,片内不够使用了才将程序存储在片外。

5 RAM存储地址:RAM存储地址和ROM道理一样,可以分片内和片外。

6 浮点单元(FPU):STM32F4 系列微控制器具有浮点单元(FPU),但默认情况下可能未启用浮点运算支持。 应用程序中使用了浮点数,确保在 Keil 中启用了浮点单元支持。

7 使用交叉模块优化、使用微库

8 生成代码所选择的编译器

Output输出

在这里插入图片描述

1 输出路径:输出路径就是在工程编译的过程中,输出这些文件保存的文件夹。(Keil V5一般默认是保存在Objects文件夹下面)

2 输出可执行文件名 :输出的可执行文件和库的名称就是在这里定义名称

3 输出可执行文件:和输出库是二选一
Debug Infomation:输出调试信息。勾选上这个选项,我们才可以进行调试。
Create HEX File:输出可执行Hex文件
Browse Information:输出浏览信息。勾选上这个我们才能使用go to definition of这个功能

4 输出库:和输出可执行文件是二选一 , 提示:这里输出(生成)的是静态库,并非动态库

  • Listing列表

在这里插入图片描述

1 输出路径、宽高 :选择列表文件输出的文件夹。可设置文件页面的宽度,长宽。

2 输出汇编列表: 勾选上会输出汇编列表信息(产生后缀为 .lst的文件)。如果工程中没汇编文件,则不会输出信息。

3 C编译列表 :C编译程序列表选项,勾选上可生成.txt, .i文件。

4 链接列表 :可选择生成或禁止生成.map文件。可设置生成代码的详细信息。可选择性的选取输出MAP文件。

  • User用户

分析map

在这里插入图片描述

2 Section Cross References 指各源文件生成的模块间的相互引用关系。

例如下
main.c文件编译生成的模块main.o中调用了adc.c文件编译生成的模块adc.o z中的ADC1_Handler句柄。

main.o(i.main) refers to adc.o(.bss) for ADC1_Handler

其他的也差不多都是这个意思。

3. Removing Unused input sections from the image 将未使用的函数之类的删除,以减少image映像的大小。

4. Image Symbol Table 映像中涉及的符号表,包括局部符号(Local Symbols)和全局符号(Global Symbols)

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
C316235unterminated 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函数加个voidDeprecated 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单步目标芯片
ggo运行
mem32读取32位数据mem32 0x08000000 1
r重启

J-Flash 读Flash数据

1、使用J-Flash读单片机的Flash数据

请添加图片描述
2、使用J-Flash下载程序到单片机

请添加图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值