@@ -0,0 +1,217 @@ | |||||
# IAR相关知识点 | |||||
## 工程操作 | |||||
- **各类型文件含义** | |||||
| 文件后缀 | 其意义 | | |||||
| :-------: | :----------------------------------------------------------: | | |||||
| `.eww` | 工作空间文件,包含多个项目的索引信息 | | |||||
| `.ewp` | 项目文件,包含项目的设置和配置 | | |||||
| `.ewd` | 调试配置文件,用于调试设置 | | |||||
| `.ewt` | (嵌入式工作台模板文件) 用于存储工程或文件的模板配置,方便快速创建具有相同设置的新项目。 | | |||||
| `.c` | 源代码文件,包含C语言代码 | | |||||
| `.h` | 头文件,包含函数声明和宏定义 | | |||||
| `.s/.asm` | 汇编文件 | | |||||
| `.map` | 单片机地址映射文件 | | |||||
| `.hex` | 烧录到芯片的十六进制文件 | | |||||
- **新建/打开工作区** | |||||
- 新建工作区 | |||||
 | |||||
- **打开工作区** | |||||
 | |||||
- **新建/打开工程** | |||||
- 新建工程 | |||||
 | |||||
- **打开工程** | |||||
 | |||||
- **工作区导入/添加工程** | |||||
 | |||||
- **新建分组** | |||||
 | |||||
- **新建/打开文件** | |||||
- 新建文件 | |||||
 | |||||
- 打开文件 | |||||
 | |||||
- **工程目录与文件目录的关系** | |||||
- 工程目录主要负责项目配置和构建控制,而文件目录则是源代码的物理存储位置。两者通过工程文件中的引用关系连接起来,形成完整的开发环境结构。 | |||||
## 工程配置 | |||||
- **设备配置** | |||||
- 选择芯片型号 | |||||
 | |||||
 | |||||
- **编译配置** | |||||
- 优化等级 | |||||
 | |||||
- 硬件浮点 | |||||
 | |||||
- 预处理 | |||||
 | |||||
- 链接文件(.icf链接脚本控制内存分配(Flash/ROM、RAM 布局)关键硬件相关文件) | |||||
 | |||||
- 文件路径配置 | |||||
 | |||||
- 输出文件路径 | |||||
 | |||||
- 输出文件配置 | |||||
 | |||||
- 调试器配置 | |||||
 | |||||
- 库相关配置 | |||||
 | |||||
- 静态库的封装 | |||||
1.  | |||||
2.  | |||||
3.  | |||||
4. 屏蔽不用编译的文件 | |||||
 | |||||
 | |||||
5. 编译 | |||||
- 静态库的调用 | |||||
1.  | |||||
2.  | |||||
3. 将之前的.c文件删除 | |||||
4. 编译执行 | |||||
## 工程调试 | |||||
- 断点 | |||||
- 设置断点 | |||||
设置断点(点击代码行左侧,出现红色圆圈) | |||||
- 禁用断点 | |||||
禁用断点(右键红色圆圈,Enable/disable) | |||||
- 启用断点 | |||||
启用断点(右键红色圆圈,Enable/disable) | |||||
- 删除断点 | |||||
删除断点(再次点击代码行左侧,红色圆圈消失) | |||||
- 条件断点 | |||||
条件断点(可以设置一个条件,当条件满足时,断点生效) | |||||
 | |||||
- 监控信息 | |||||
 | |||||
- 寄存器信息 | |||||
 | |||||
- 内存信息 | |||||
 | |||||
- 栈信息 | |||||
 | |||||
- 汇编信息 | |||||
 | |||||
- 调用堆栈信息 | |||||
调用堆栈窗口通常在IDE(如Visual Studio)中提供,它展示了函数调用的顺序列表。 | |||||
 | |||||
- 单步调试 | |||||
- 逐过程 | |||||
 | |||||
- 逐语句 | |||||
 | |||||
- 复位 | |||||
 | |||||
- 跳出 | |||||
 | |||||
## IAR 调试常用操作对照表(含英文缩写、快捷键和含义) | |||||
| 中文名称 | 英文名称 | 缩写/简称 | 快捷键 | 含义说明 | | |||||
| -------- | --------- | ------------------ | -------------- | ------------------------------------------------------------ | | |||||
| 逐语句 | Step Into | `StepIn` 或 `SI` | `F11` | 执行当前语句,若为函数调用,则进入函数内部逐句调试。 | | |||||
| 逐过程 | Step Over | `StepOver` 或 `SO` | `F10` | 执行当前语句,若为函数调用,则跳过函数体,直接执行下一行。 | | |||||
| 跳出 | Step Out | `StepOut` 或 `SR` | `Shift + F11` | 执行当前函数剩余代码并跳出,返回到调用该函数的位置。 | | |||||
| 复位 | Reset | `Reset` | *无默认快捷键* | 让 MCU 从复位向量重新启动程序执行(从 `main()` 或初始化开始)。 | | |||||
[**参考文献**](https://blog.csdn.net/ideal121/article/details/118675124?fromshare=blogdetail&sharetype=blogdetail&sharerId=118675124&sharerefer=PC&sharesource=2301_81415726&sharefrom=from_link) |
@@ -0,0 +1,91 @@ | |||||
# 库相关知识点 | |||||
## 静态库 | |||||
- 静态库的基本概念 | |||||
静态库是指在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得 | |||||
所需的代码 ,复制到生成的可执行文件中的这种库。 | |||||
- 静态库的生成 | |||||
 | |||||
 | |||||
- 静态库的调用 | |||||
- 在工程配置中调用 | |||||
- 1.头文件的引用 | |||||
方案一:设置头文件目录 | |||||
将头文件复制到我们的工程文件中。 | |||||
方案二: | |||||
 | |||||
2. 库文件的引用 | |||||
方案一:连接器设置库文件目录 | |||||
方案二: | |||||
 | |||||
将lib添加到资源文件中 | |||||
- 在代码中语句加载lib调用 | |||||
使用`#pragma comment(lib, "creat_static_lib.lib")`指令 | |||||
## 动态库 | |||||
- 动态库的基本概念 | |||||
动态库是一种在程序运行时才被加载的库文件,它包含了函数和数据,可以被多个程序共享。 | |||||
- 动态库的生成 | |||||
- 通过导出语句生成 | |||||
1. 先宏定义MATHLIBRARY_EXPORTS | |||||
2. 写导出语句 | |||||
 | |||||
3. .C文件正常编写需要封装函数的逻辑 | |||||
- 通过模块文件生成 | |||||
 | |||||
 | |||||
 | |||||
- 动态库的调用 | |||||
在工程配置中调用 | |||||
导入头文件,引用 | |||||
 | |||||
~~在代码中语句加载lib调用~~ | |||||
`#pragma comment(lib, "creat_static_lib.lib")` | |||||
在代码中语句加载`dll`调用 | |||||
将`dll`文件复制到`dbug`下面,使用以下程序指令动态加载 | |||||
HINSTANCE Dll = LoadLibrary(L"test.dll"); | |||||
if (Dll == NULL) { | |||||
std::cerr << "无法加载DLL! 错误码: " << GetLastError() << std::endl; | |||||
return 1; | |||||
} | |||||
typedef void (*Func)(); // 定义函数指针类型 | |||||
Func add = (Func)GetProcAddress(Dll, "fun1"); | |||||
add(); | |||||
FreeLibrary(Dll); | |||||
return 0; |
@@ -0,0 +1,186 @@ | |||||
# Markdown相关知识点 | |||||
## 常用语法 | |||||
- **标题相关** | |||||
要创建标题,就在单词或者短语前面加上**(#)**,**几个#号就表示几级标题**。 | |||||
- 一级标题 | |||||
**(# 一级标题)** | |||||
- 二级标题 | |||||
**(## 二级标题)** | |||||
- 三级标题 | |||||
**(### 三级标题)** | |||||
- 标号相关 | |||||
- 无序标号 | |||||
- 要创建无序列表标号,在每个列表项前面添加**破折号 (-)、星号 (*) 或加号 (+)** 。 | |||||
* 星号无序标号(*)。<br> | |||||
+ 加号无序标号(+)。<br> | |||||
- 破折号无序标号(-)。<br> | |||||
- 有序标号 | |||||
- 要创建有序列表,请在每个列表项前添加数字并紧跟一个英文句点。 | |||||
1. 有序标号1 | |||||
2. 有序标号2 | |||||
3. 有序标号3 | |||||
4. ............. | |||||
- 标号嵌套 | |||||
- **缩进一个或多个列表项**可创建嵌套列表标号。 | |||||
- 一级无序标号 | |||||
1. 二级有序标号 | |||||
- 三级无序标号 | |||||
- 文字相关 | |||||
- 加粗 | |||||
在单词或短语的前后各添加两个星号(asterisks)或下划线(underscores)。 | |||||
**这是(*)号加粗内容** | |||||
__这是(_)号加粗内容__ | |||||
- 倾斜 | |||||
在单词或短语前后添加一个星号(asterisk)或下划线(underscore)。要斜体突出单词的中间部分,请在字母前后各添加一个星号,中间不要带空格。 | |||||
*这是(\*)控制的斜体内容* | |||||
_这是(\_)控制的斜体内容_ | |||||
**Markdown 应用程序在如何处理单词或短语中间的下划线上并不一致。为兼容考虑,在单词或短语中间部分加粗的话,使用星号。** | |||||
- 倾斜加粗 | |||||
要同时用粗体和斜体突出显示文本,请在单词或短语的前后各添加三个星号或下划线。要加粗并用斜体显示单词或短语的中间部分,请在要突出显示的部分前后各添加三个星号,中间不要带空格。 | |||||
***(\*)倾斜加粗*** | |||||
___(\_)倾斜加粗___ | |||||
- 删除线 | |||||
在单词或短语前面添加两个波浪号(~~)可以实现删除线。 | |||||
~~这是一个删除线的测试~~ | |||||
- 代码块 | |||||
- 单行代码块 | |||||
要将单词或短语表示为代码,请将其包裹在反引号 (``) 中。 | |||||
`这是一个单行代码的测试行` | |||||
如果你要表示为代码的单词或短语中包含一个或多个反引号,则可以通过将单词或短语包裹在双反引号(````)中。 | |||||
- 多行代码块 | |||||
代码块之前和之后的行上使用三个反引号((`````)或三个波浪号(~~~)。 | |||||
```{this is for testing purposes``` | |||||
```123``` | |||||
```123``` | |||||
```}``` | |||||
- 超链接 | |||||
- 文字超链接 | |||||
使用\[文字描述](网页地址))。 | |||||
[这是一个文字超链接](https://www.baidu.com/ ) | |||||
- 图片超链接 | |||||
使用**\[\!\[图片](图片地址)](网页地址)** | |||||
[](https://www.baidu.com/) | |||||
- 页面内跳转 | |||||
使用\[文字描述](#跳转地方) | |||||
[一级标题](#Markdown相关知识点) | |||||
\[链接第一部分]\[链接第二部分] | |||||
\[链接第二部分]:地址 | |||||
[百度][百度地址] | |||||
[百度地址]:https://www.baidu.com/ | |||||
- 其他 | |||||
- 分割线 | |||||
要创建分隔线,在单独一行上使用三个或多个星号 (`***`)、破折号 (`---`) 或下划线 (`___`) ,并且不能包含其他内容。 | |||||
以下分别是***,---,___的演示 | |||||
*** | |||||
--- | |||||
- 图片 | |||||
使用语法\[图片文字描述](图片地址) | |||||
 | |||||
- 表格 | |||||
CTRL+T; | |||||
- 引用 | |||||
创建块引用,请在段落前添加一个 > 符号。 | |||||
+ 路径 | |||||
- 相对路径 | |||||
表示在和当前文件目录相比在哪儿。 | |||||
[这是相对路径](.\pictures\image-20250708133120141.png) | |||||
- 绝对路径 | |||||
表示文件相对于电脑的完整地址。 | |||||
[这是绝对路径](C:\Users\wsk\Desktop\TrainCamp_WangShunKui_BasicLearn\Markdown\pictures\image-20250708133120141.png) | |||||
- 快捷键 | |||||
 | |||||
 | |||||
@@ -0,0 +1,98 @@ | |||||
# SourceInSight相关知识点 | |||||
## 常规操作 | |||||
- 工程新建/添加 | |||||
1. 选择工程文件的位置 | |||||
 | |||||
2. 选择源码位置 | |||||
 | |||||
3. 将源码导入 | |||||
 | |||||
- 文件新建/添加 | |||||
 | |||||
- 符号表同步:就是让 Source Insight 保持项目符号(函数、类、变量等)信息与实际源代码一致。 | |||||
 | |||||
- **Force all files to be re-parsed** | |||||
强制重新解析所有文件。 | |||||
- 作用:无论文件有没有改动,**全部源文件都会重新解析一遍**,重新生成符号。 | |||||
- 使用场景: | |||||
- 大范围修改了宏定义、头文件或库文件; | |||||
- 项目结构变化较大; | |||||
- 符号跳转失效、显示不准确时使用; | |||||
- 会花比较长的时间。 | |||||
- **Synchronize the current source file only** | |||||
只同步当前打开的源文件。 | |||||
作用:只更新你当前正在查看的文件的符号信息。 | |||||
使用场景: | |||||
- 你刚刚改动了当前文件的一些函数或变量,希望立即生效; | |||||
- 快速同步,不影响其他文件。 | |||||
- ⚠ 其他文件不受影响,如果涉及头文件或其他依赖文件,可能会不完整。 | |||||
- **Add new files automatically** | |||||
自动添加新文件到项目中。 | |||||
- 作用:在同步过程中,如果发现了你源码目录下的**新文件**(比如新加的 `.c/.h` 文件),会**自动加入工程并解析符号**。 | |||||
- 使用场景: | |||||
- 经常手动往目录里加文件的人建议勾上; | |||||
- 适合多人协作开发时文件频繁变动。 | |||||
- **Remove missing files from project** | |||||
自动从工程中移除找不到的文件。 | |||||
- 作用:如果项目中之前包含的某些源文件**物理上已经被删除或移动**,则自动从工程移除它们。 | |||||
- 使用场景: | |||||
- 清理项目符号库; | |||||
- 文件重命名或移动后保持项目干净。 | |||||
- 小心使用,可能会误删临时缺失但之后会恢复的文件引用。 | |||||
- 视图切换 | |||||
 | |||||
 | |||||
- 常用窗口打开/关闭 | |||||
常见四大窗口: | |||||
1. project Window:查看我们的工程所在文件夹以及文件夹下的文件 | |||||
 | |||||
2. Symbol Window:用于查看我们开启的文件以及文件内所包含的函数 | |||||
 | |||||
3. Context Window串口:用于查看,函数中某个参数与函数的关系 | |||||
 | |||||
4. Relation Window窗口:用于查看函数以及参数所定义的位置 | |||||
 | |||||
- 搜索引用 | |||||
 |
@@ -0,0 +1,184 @@ | |||||
# 代码管理相关知识点 | |||||
## Git | |||||
- Git的概念 | |||||
Git是一个开源的分布式版本控制系统,它能够高效地处理从小到大的项目。 | |||||
- 三个区域的概念 | |||||
- 工作区 | |||||
平时存放项目的地方,可以在工作区直接修改。 | |||||
- 暂存区 | |||||
用于临时存放改动,保存即将提交的文件列表信息。 | |||||
- 仓库区(版本库) | |||||
就是安全存放数据的位置,这里面有提交到所有版本的数据(版本快照)。 | |||||
- 仓库的概念 | |||||
- Git仓库是存储文件和历史记录的地方。 | |||||
- 节点的概念 | |||||
是Git中的基本概念,它代表着代码库的一个特定状态。每当你在Git中提交代码时,都会创建一个新的节点来保存当前代码库的状态。每个节点都有一个唯一的标识符,即SHA-1哈希值,用来标识该节点的内容和父节点。 | |||||
- 分支的概念 | |||||
是基于节点的一个引用,它指向一个节点作为该分支的起点。通过创建分支,可以在代码库中开发新的功能、修复bug或实施其他更改,而不会影响原始分支。每个分支都有一个名称,通常用来描述该分支的目的或特点。分支之间可以相互合并,通过合并可以将不同分支上的更改合并到一起。 | |||||
- 文件的状态 | |||||
- 已修改:文件内容已经被修改。 | |||||
- 已删除:文件本身已经被删除(工作区删除,存储区还有)。 | |||||
- 变 更:文件本身没有修改,但是改变了存放位置。 | |||||
- 未管理:尚未添加到版本管理的文件,比如新添加的文件。 | |||||
- 忽 略:不需要添加到版本管理的文件。 | |||||
- 冲 突:合并的时候同时修改了同一块的内容,所有需要人为取解决冲突。 | |||||
## SourceTree | |||||
- SourceTree的概念 | |||||
- SourceTree 是 Windows 和Mac OS X 下免费的 **Git 客户端,**拥有可视化界面,容易上手操作。 | |||||
- 仓库相关操作 | |||||
- **创建本地仓库** | |||||
 | |||||
- **打开本地仓库** | |||||
 | |||||
- **克隆远程仓库** | |||||
 | |||||
- **获取** | |||||
获取是从远程仓库获取信息并同步至本地仓库(获取只会同步到本地仓库,不会更改工作文件) | |||||
 | |||||
- **关联远程仓库** | |||||
-  | |||||
- **节点相关操作** | |||||
- **提交** :将工作区的内容放到仓库的这个过程叫做提交。将写完后的文档先添加到暂存区,然后再写日志提交。每一次提交产生一个节点。 | |||||
- **重置**(将修改后在未暂存区的东西,恢复修改前的版本) | |||||
 | |||||
- **回滚提交**:是指将改动的代码提交到本地仓库,但未推送到远端仓库的时候 | |||||
- **重置当前分支到此次提交**:是指将改动的代码提交到本地仓库后,并已推送到远端仓库的时候 | |||||
- **分支相关操作** | |||||
- **新建分支**:创建的分支和主分支是完全一样的东西,新建分支旁边有圈代表分支激活,东西保存在该分支当中。 | |||||
 | |||||
- **合并分支** | |||||
激活master,选择要合并的支线,点击确定,将支线的所有变化的节点打包创建一个新节点合并过去。 | |||||
 | |||||
 | |||||
- 变基 | |||||
 | |||||
以分支为基合并到master里面 | |||||
 | |||||
将之前的提交合并后再并入master | |||||
 | |||||
- **删除分支** | |||||
第一步先激活主分支 | |||||
· | |||||
- **切换分支** | |||||
双击分支名字,出现小圆圈为激活状态。 | |||||
- **制造冲突** | |||||
 | |||||
- **解决冲突** | |||||
在需要提交的文件里面自己手动保留要更改的内容,然后鼠标右键选择已经解决冲突。还有一种方式是以我为准就是保存master的,以别人为准就是合并时候保存分支的。 | |||||
- **拉取** | |||||
选择从远端仓库中哪个分支获取。 | |||||
 | |||||
- **推送** | |||||
选择要发送到远端仓库的分支,点击推送。 | |||||
 | |||||
- 其他 | |||||
- 书写忽略文件 | |||||
或者在这个隐藏文件中添加忽略的东西,可以是精确文件名,也可以是某一类后缀如*.txt,或者某个文件夹下的文件如/abc | |||||
 | |||||
- 停止跟踪 | |||||
 | |||||
停止跟踪后就不在受到版本管控 | |||||
- 创建补丁 | |||||
 | |||||
- 应用补丁 | |||||
 | |||||
- 贮藏 | |||||
贮藏相当于保留这一次更改到贮藏区域,但是不提交,以后的更改还是争对上一次提交。 | |||||
- __丢弃__:放弃之前修改的文件,恢复上一次提交状态 | |||||
 | |||||
- **移除**:(直接删除文件) | |||||
 | |||||
- 创建标签:(方便快速找到) | |||||
 | |||||
- 删除标签 | |||||
 | |||||