# 嵌入式系统实验

实验内容基本是读源码然后修改，挺简单的。

## 开发环境安装

<!-- prettier-ignore -->
1. [下载资料](https://cs.e.ecust.edu.cn/download/5a403808a967b666b1e9ce9ac88429b5)并解压。
   - 约 2GB，课前提前下载。
2. 前往 _软件资料 - 软件 - MDK5_，双击 `MDK521A.exe` 安装。注意安装路径不能有中文。
3. **双击** 同文件夹下的 `Keil.STM32F4xx_DFP.2.9.0.pack` 安装。
4. 返回 _软件_，选择 _ST LINK 驱动及教程 - ST-LINK 驱动 - dpinst\_amd64.exe_，双击安装。
5. 打开桌面上的 `Keil ...` 软件，选择左上角 `File - License Management`，复制右边的 CID。
6. 下载[破解软件](https://cs.e.ecust.edu.cn/download/3b4d80b99923984b0d52f1788b5359bc)，解压运行（可能报毒，需要关闭 Windows Defender）。
7. 粘贴刚才复制的 CID，右边 Target 选择 ARM，点击 Generate，复制生成的代码。
8. 在 `Keil` 的 `License Management` 中，`New License ID code` 处粘贴代码，选择 _Add LIC_。
9. 回到 `1.` 中的资料，进入 _程序源码_，解压`1，标准例程-寄存器版本`，在 _实验 1 跑马灯实验 - USER_ 中打开 `TEST.uvprojx`。
10. 连接开发板，按 `F7` 编译，再按 `F8` download。
11. 此时应能看到开发板的 LED 闪烁。若无反应，可以按一下板子的 RESET 再观察。

### 工具使用

- 串口调试工具：_外部中断实验_ 中需要调试串口。
  1. 烧录程序后，把 USB 线从 ST-LINK 上拔出，接到板子的 USB_232 上。
  2. 打开 _软件资料\1，软件\串口调试助手\XCOM（正点原子推荐）_
  3. 波特率选择 115200，_串口选择_ 中选中出现的串口，点击 _打开串口_ 即可看到消息。
- 引入外部库：_综合实验_ 中可能需要引入外部库。
  1. 将库所在的文件夹复制到项目中的相同结构下。（例如将 `24CXX` 放到 `HARDWARE`下）
  2. 在 Keil 中，右击放入的目录（`HARDWARE`），选择 _Add Existing Files to Group..._，选中库内的 `*.c` 文件。
  3. 点开工具栏 `Options for Target`，选择 `C/C++`，在 `Include Paths` 中仿照例子添加库的路径。

## 代码介绍

> 不指明版本时，默认为 HAL 库版本  
> Keil 使用的代码编码为 _GB2312_，而此处使用 _UTF-8_ 编码。

<!-- prettier-ignore -->
|代码名 | 代码介绍 |
|---|---|
|1.c|跑马灯实验（寄存器版本）|
|2.c|跑马灯实验 |
|3.c|按键输入实验 |
|4.c|外部中断实验 |
|5.c|电容触摸按键实验 |
|6.c|光照&接近传感器实验外部中断实验 |
|7.*.c|定时器中断实验 |
|8.c|PWM 输出实验 |
|9.c|IIC 实验 |
|10.c|SPI 实验 |
|11.*.c|网络通信实验 |
|12.*.c|综合实验 |

## 报告介绍

使用 [typst](https://github.com/typst/typst) v0.10.0 写成。只放源码，不放 pdf，请自行生成。

### 报告要求

每次实验做两个项目，写成一份报告，每两周交一次（两份）报告。（11，12 耗时更长一点）

修改后的代码需要注明“修改后”！修改前的代码可以放上去也可以不放。

理论上每份报告只需要一个心得体会，我从逻辑上考虑，将其分为两个，放到两个项目里。
