diff --git a/docs/notes/01_c-basic/00_xdx/index.md b/docs/notes/01_c-basic/00_xdx/index.md index 8b39e52..0990338 100644 --- a/docs/notes/01_c-basic/00_xdx/index.md +++ b/docs/notes/01_c-basic/00_xdx/index.md @@ -550,3 +550,57 @@ int main() { // 定义主函数 ### 4.2.3 注意事项 * 对于 `Java` 项目中的 `Maven` 或 `Gradle` 而言,其不仅是`项目构建工具`也是`包管理工具`。 + + + +# 第五章:附录 + +## 5.1 嵌入式领域中的 C 语言 + +### 5.1.1 概述 + +* C 语言在 C51、STM32 和 ARM 平台上的应用场景非常广泛,涵盖了各种嵌入式系统的开发需求。 + +### 5.1.2 C51(8051 系列微控制器) + +* `背景`:8051 是由 Intel 于 1980 年设计的一种 8 位微控制器架构。它具有指令集简单、结构紧凑的特点,广泛应用于低端嵌入式系统中。 +* `开发工具`:C51 是指针对 8051 系列微控制器的 C 语言编译器,如:Keil C51。这种编译器将 C 语言代码编译为适合 8051 架构的汇编代码。 +* `C 语言的作用`:C 语言在 8051 微控制器上的应用使得开发更加高效和可维护。尽管 8051 的硬件资源有限,但 C 语言仍然能够在不损失性能的前提下提供高级编程的便利。 +* `应用场景`: + * **简单的控制系统**:家用电器(微波炉、洗衣机、空调)的控制板等。这些设备通常不需要复杂的运算能力,但要求可靠和稳定的控制。 + * **低功耗传感器接口**:C51 微控制器常用于低功耗传感器的数据采集和传输,如:温度、湿度、压力传感器。 + * **工业自动化设备**:用于简单的工业自动化控制,如:小型电机驱动、工业传感器数据处理和传输。 + * **电子玩具**:许多简单的电子玩具使用 8051 系列微控制器来控制声音、LED 灯光、显示屏等。 + +### 5.1.3 STM32(STM32 系列微控制器) + +* `背景`:STM32 是意法半导体(STMicroelectronics)推出的一系列基于 ARM Cortex-M 内核的 32 位微控制器。它们广泛用于需要高性能和低功耗的嵌入式应用中,如:工业控制、消费电子和物联网设备。 +* `开发工具`:开发 STM32 微控制器通常使用 Keil、IAR Embedded Workbench 或 STM32CubeIDE 等开发环境。这些环境中使用的编程语言主要是 C(有时也包括 C++)。 +* `C 语言的作用`:C 语言在 STM32 上的应用非常广泛,开发者可以利用它直接控制硬件寄存器,同时也能方便地使用 STM32 提供的 HAL(硬件抽象层)库或 LL(低层)库进行开发。C 语言在这个平台上不仅能实现底层控制,还能编写复杂的应用逻辑。 +* `应用场景`: + * **物联网(IoT)设备**:STM32 微控制器常用于各种物联网设备,如:智能家居控制系统、环境监测设备、可穿戴设备等。这些设备通常需要低功耗和强大的处理能力,并且需要支持多种通信协议,如:Wi-Fi、Bluetooth、LoRa。 + * **消费电子**:智能手表、健身追踪器、电子书阅读器、无人机等,这些设备需要具备实时处理能力、低功耗和良好的外设支持。 + * **医疗设备**:STM32 微控制器被广泛应用于便携式医疗设备中,如:血糖监测仪、心率监测器、便携式超声设备等,这些设备需要精确的传感器数据采集和处理。 + * **工业自动化控制**:PLC(可编程逻辑控制器)、工业机器人、伺服电机控制等,STM32 能够处理复杂的控制算法和实时任务。 + * **汽车电子**:用于汽车中的传感器管理、车载信息娱乐系统、车身控制系统(车窗、电动座椅调节等)。 + +### 5.1.3 ARM 架构(特别是 ARM Cortex 系列) + +* `背景`:ARM 是一种广泛使用的处理器架构,特别是在嵌入式系统中,ARM Cortex 系列处理器(如 Cortex-M、Cortex-R 和 Cortex-A)非常流行。Cortex-M 系列主要用于微控制器,Cortex-R 用于实时系统,Cortex-A 则用于高性能嵌入式系统。 +* `开发工具`:针对 ARM 架构的开发,常用工具包括 ARM Keil MDK、IAR、GCC for ARM 和 ARM Development Studio。这些工具均支持使用 C 语言进行开发。 +* `C 语言的作用`:C 语言在 ARM 架构上的应用广泛。它被用于操作系统内核(如 FreeRTOS、Zephyr)、设备驱动、应用层逻辑等。在 ARM Cortex-M 和 Cortex-R 系列中,C 语言的高效性和低级别硬件访问能力是开发实时、低延迟系统的关键。 +* `应用场景`: + * **高级嵌入式操作系统**:ARM Cortex-A 系列处理器广泛用于运行 Linux、Android 等操作系统的嵌入式设备,如:智能手机、平板电脑、智能电视和车载娱乐系统。 + * **实时系统**:ARM Cortex-R 系列处理器用于实时系统,如:汽车的 ABS(防抱死制动系统)、ESC(电子稳定控制系统),以及航空电子设备,这些系统要求极低的延迟和高可靠性。 + * **高性能物联网网关**:Cortex-A 系列处理器可以用来开发支持多协议、多设备管理的物联网网关,这些网关通常需要强大的计算能力和多线程处理能力。 + * **边缘计算设备**:在边缘计算场景中,ARM Cortex-A 处理器用于执行本地数据处理和决策,如:视频分析、图像处理、语音识别等。 + * **智能家居设备**:ARM Cortex-M 系列微控制器广泛应用于智能家居产品,如:智能灯泡、智能音箱、家庭安全系统,这些设备需要高效的处理能力和低功耗。 + * **机器人控制系统**:ARM Cortex-M 和 Cortex-A 系列处理器用于机器人系统的控制和通信,如:无人机、工业机器人、服务机器人等,处理复杂的运动控制、路径规划和传感器数据融合。 + +### 5.1.4 总结 + +* C 语言在嵌入式系统开发中的应用场景非常多样化,如下所示: + * C51 微控制器适用于资源受限、需要低成本的简单控制系统。 + * STM32 微控制器在物联网、消费电子、医疗设备和工业控制等领域表现出色。 + * ARM Cortex 系列则适用于从实时系统到高级嵌入式操作系统的各类应用,支持从低功耗控制到高性能计算的多种需求。 +* 这些应用场景展示了 C 语言在嵌入式系统中的关键角色,以及各类嵌入式平台在不同应用中的优势。 diff --git a/docs/notes/01_c-basic/05_xdx/index.md b/docs/notes/01_c-basic/05_xdx/index.md index 95ae82a..4ee0be9 100644 --- a/docs/notes/01_c-basic/05_xdx/index.md +++ b/docs/notes/01_c-basic/05_xdx/index.md @@ -1467,7 +1467,7 @@ int main() { * 之所以,加了内存地址,就能加快数据的存取速度,可以类比生活中的`字典`: - * 如果没有使用`拼音查找法`或`部首查找法`,我们需要一页一页,一行一行的,在整个字典中去搜索我们想要了解的汉字。 + * 如果没有使用`拼音查找法`或`部首查找法`,我们需要一页一页,一行一行的,在整个字典中去搜索我们想要了解的汉字,效率非常低(如果要搜索的汉字在最后一页,可能需要将整个字典从头到尾翻一遍)。 ![](./assets/32.gif) @@ -1560,6 +1560,10 @@ int main() { } ``` +> [!NOTE] +> +> 变量是对程序中数据在内存中存储空间的抽象。 + ## 5.3 内存中的数组 * 如果我们在代码中这么定义数组,如下所示: diff --git a/docs/notes/01_c-basic/06_xdx/index.md b/docs/notes/01_c-basic/06_xdx/index.md index cbf93e6..b37aa41 100644 --- a/docs/notes/01_c-basic/06_xdx/index.md +++ b/docs/notes/01_c-basic/06_xdx/index.md @@ -283,7 +283,7 @@ int main() { > * ① `变量`:命名的内存空间,用于存放各种类型的数据。 > * ② `变量名`:变量名是给内存空间取一个容易记忆的名字,方便我们编写程序。 > * ③ `变量值`:变量所对应的内存中的存储单元中存放的数据值。 -> * ④ `变量的地址`:变量所对应的内存中的存储单元的内存地址,也可以称为`指针`。 +> * ④ `变量的地址`:变量所对应的内存中的存储单元的内存地址(首地址),也可以称为`指针`。 > > 总结:内存地址 = 指针。