Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/Mdr-C-Tutorial/C
Browse files Browse the repository at this point in the history
  • Loading branch information
Minsecrus committed Oct 3, 2024
2 parents 37439d6 + 65caaf0 commit c86d940
Show file tree
Hide file tree
Showing 57 changed files with 4,858 additions and 2,836 deletions.
7 changes: 3 additions & 4 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

title: ""
labels: ""
assignees: ""
---

**Is something missing from our tutorials?**
Expand Down
65 changes: 65 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# 构建 VitePress 站点并将其部署到 GitHub Pages 的示例工作流程
#
name: Deploy VitePress site to Pages

on:
# 在针对 `main` 分支的推送上运行。如果你
# 使用 `master` 分支作为默认分支,请将其更改为 `master`
push:
branches: [ main ]

# 允许你从 Actions 选项卡手动运行此工作流程
workflow_dispatch:

# 设置 GITHUB_TOKEN 的权限,以允许部署到 GitHub Pages
permissions:
contents: read
pages: write
id-token: write

# 只允许同时进行一次部署,跳过正在运行和最新队列之间的运行队列
# 但是,不要取消正在进行的运行,因为我们希望允许这些生产部署完成
concurrency:
group: pages
cancel-in-progress: false

jobs:
# 构建工作
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # 如果未启用 lastUpdated,则不需要
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: latest
- name: Setup yarn
run: |
corepack enable
yarn set version stable
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Install dependencies
run: yarn install
- name: Build with VitePress
run: yarn docs:build
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist

# 部署工作
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
name: Deploy
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
20 changes: 20 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,23 @@ build
temp
cache
deps/*

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
.yarn-integrity

# vitepress
/coverage
/src/client/shared.ts
/src/node/shared.ts
*.tgz
.DS_Store
.temp
.vite_opt_cache
dist
examples-temp
*.timestamp-*.mjs
1 change: 1 addition & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{}
1 change: 1 addition & 0 deletions .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
nodeLinker: node-modules
22 changes: 11 additions & 11 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,23 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
- Focusing on what is best not just for us as individuals, but for the
overall community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or
- The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
- Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities
Expand Down Expand Up @@ -106,7 +106,7 @@ Violating these terms may lead to a permanent ban.
### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within
Expand Down
100 changes: 51 additions & 49 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,33 +26,34 @@ int main(int argc, char* argv[]){
4. 此教程并非一时兴起而作,实则怀“为往圣继绝学,为万世开太平”之愿,深思熟虑打造而成
5. 得天独厚者,替天行善!
+ 点此进入 [**总纲**](/教程/总纲.md);
+ 点此进入 [**关于本教程**](/About.md);
+ **文档规范** 中列举了本仓库 markdown 文档的规范;
+ **代码规范** 中列举了本仓库 C 语言代码的规范;
+ **对预期读者的要求** 中列举了读者需要具备的一些前置知识;
+ **鸣谢名单** 展示本仓库文档或代码的贡献者以及本教程的赞助者。
- 点此进入 [**总纲**](/docs/教程/正文/总纲.md);
- 点此进入 [**关于本教程**](/About.md);
- **文档规范** 中列举了本仓库 markdown 文档的规范;
- **代码规范** 中列举了本仓库 C 语言代码的规范;
- **对预期读者的要求** 中列举了读者需要具备的一些前置知识;
- **鸣谢名单** 展示本仓库文档或代码的贡献者以及本教程的赞助者。
## 文档规范
1. 标题由 **一级标题** 开始,依次递减;
2. 标题层级不应过多,如果出现该情况,可以拆分成多篇文章;
一般地,标题层级不应超过 **四** 级;
3. `/教程` 和 `/杂项/工具和环境` 文件夹里的文档,除一级标题之外的标题应有 **编号**:
1. 二级标题前应有 `1.` `2.` 等编号,数字后加小数点;
2. 三级标题前应有 `1.1` `1.2` 等编号,末尾不要加小数点;
3. 四级标题前应有 `1.1.1` `1.1.2` 等编号,末尾不要加小数点;
1. 二级标题前应有 `1.` `2.` 等编号,数字后加小数点;
2. 三级标题前应有 `1.1` `1.2` 等编号,末尾不要加小数点;
3. 四级标题前应有 `1.1.1` `1.1.2` 等编号,末尾不要加小数点;
4. **代码块** 和 **列表** 前后各有一个空行;文件结尾要有一个空行;文件任何位置不得存在连续两个空行;
5. 段落和段落之间有一个空行;只换行不换段落,无空行,在前一行结尾加两个空格;
6. **强调** 用 `** **` 标识,*次强调* 用 `* *` 标识,`代码块` 用 `` ` ` `` 标识;
7. 引文和注释用 `>` 标识;书名和文章名用 `*** ***` 标识;
8. `*** ***` `** **` `* *` `` ` ` `` `$ $` 前后 **各空一个空格**,但中文标点前后无需加空格;
6. **强调** 用 `** **` 标识,_次强调_ 用 `_ _` 标识,`代码块` 用 `` ` ` `` 标识;
7. 引文和注释用 `>` 标识;书名和文章名用 `**_ _**` 标识;
8. `**_ _**` `** **` `* *` `` ` ` `` `$ $` 前后 **各空一个空格**,但中文标点前后无需加空格;
9. 中西文字符,或者中文和数字之间加一个空格;
10. 在中文上下文中用全角标点,比如全角小括号,全角冒号等;
11. 要正确使用标点符号,分清 **顿号**、**逗号**、**分号** 和 **句号**,尤其避免一逗到底;
12. 分清 **的地得** 和 **他她它~~祂怹~~**
13. 仅在必要时使用 **数量词**(尤其警惕 **一个** 的不恰当使用)~~你是一个一个一个~~
14. 在 **术语** (Terminology) 首次出现的时候在 **半角小括号** 内给出 **对应的外来语**,同时给出 **首字母缩略语** (Acronym)。这些外来语通常对应 **概念** (Concept) 的原文 ,希望有助于读者明确分辨词语的含义:
14. 在 **术语** (Terminology) 首次出现的时候在 **半角小括号** 内给出 **对应的外来语**,同时给出 **首字母缩略语** (
Acronym)。这些外来语通常对应 **概念** (Concept) 的原文 ,希望有助于读者明确分辨词语的含义:
1. 为减少读者的记忆负担,下文分情况使用 **术语的汉语表述** 和 **首字母缩略语**:初始章节以前者为主,进阶章节以后者为主
2. 外来语和缩略语可能视情况在不同章节多次出现
3. 括号外左侧右侧各空一个空格,括号内无空格
Expand All @@ -66,7 +67,7 @@ int main(int argc, char* argv[]){
18. 语言风格:
1. 使用 **正式** 的中文白话,**不用** 口头语;
2. **杜绝语病**;
3. *尽量不用* 反问,设问和借喻;
3. _尽量不用_ 反问,设问和借喻;
4. 用清晰的修饰限定成分,避免含混不清;不用过于夸张的修饰限定成分;有数据支持时要列举数据;
5. 避免带有主观性的措辞;避免连续的词表示相同意思;
6. 保证仓库中所有文档 **语言风格一致**。
Expand All @@ -80,66 +81,67 @@ int main(int argc, char* argv[]){
```json
{
"BasedOnStyle": "LLVM",
"IndentWidth": 4
"BasedOnStyle": "LLVM",
"IndentWidth": 4
}
```

5. 标识符的命名:
1. 使用惯例,尤其禁止使用拼音;
2. 宏名所有字母均大写,单词之间以下划线分割;
3. 其余标识符所有字母均小写,单词之间以下划线分割;
1. 使用惯例,尤其禁止使用拼音;
2. 宏名所有字母均大写,单词之间以下划线分割;
3. 其余标识符所有字母均小写,单词之间以下划线分割;
6. `if` `else` `for` `while` 必须跟随 **复合语句**

## 对预期读者的要求

1. 独立思考;
2. 勤于搜索(尤其是出现较多关联概念时);
3. 理解中文白话,最好有一定的英语水平(建议达到 CEFR B2)但不强制,最好有一定的数学水平(高中数学 + 数理逻辑基础 + 微积分 + 基础的概率论 + 基础的数论 + 基础的图论)但不强制;
3. 理解中文白话,最好有一定的英语水平(建议达到 CEFR B2)但不强制,最好有一定的数学水平(高中数学 + 数理逻辑基础 + 微积分 +
基础的概率论 + 基础的数论 + 基础的图论)但不强制;

## 鸣谢名单(按时间顺序)

### 个人(贡献者)

+ **Mdr**[GitHub - Minsecrus](https://github.com/Minsecrus)
+ **@幻**[GitHub - huan201](https://github.com/huan201)
+ **JuaJuanchi**[GitHub - JuaJuanchi](https://github.com/Jua-Juanchi)
+ **Enoch.驊**[GitHub - gngtwhh](https://github.com/gngtwhh)
+ **No**[CNBlogs - Kroner](https://www.cnblogs.com/Kroner))([GitHub - Kroner](https://github.com/Kroner)
+ **Xly**[GitHub - LY-Xiang](https://github.com/LY-Xiang))([GitHub - hfsz2313](https://github.com/hfsz2313)
+ **革匊习习中**[GitHub - Juvwxyz](https://github.com/Juvwxyz)
+ **0x7E7**
+ **FHU-yezi**[GitHub - FHU-yezi](https://github.com/FHU-yezi)
+ **菲露露**[GitHub - LovelyLavender4](https://github.com/lovelylavender4)
+ **XIAOYI12**[GitHub - xiaoyi1212](https://github.com/xiaoyi1212)
+ **WHITE TREE**[GitHub - VinbeWan](https://github.com/VinbeWan)
+ **Min0911Y**[GitHub - min0911Y](https://github.com/min0911Y)
+ **A4-Tacks**[GitHub - A4-Tacks](https://github.com/A4-Tacks)
+ **Telecomadm**[GitHub - telecomadm1145](https://github.com/telecomadm1145)
+ **ChatRBQ**[GitHub - fawdlstty](https://github.com/fawdlstty)
+ **Kill**[GitHub - Killcerr](https://github.com/Killcerr)
- **Mdr**[GitHub - Minsecrus](https://github.com/Minsecrus)
- **@幻**[GitHub - huan201](https://github.com/huan201)
- **JuaJuanchi**[GitHub - JuaJuanchi](https://github.com/Jua-Juanchi)
- **Enoch.驊**[GitHub - gngtwhh](https://github.com/gngtwhh)
- **No**[CNBlogs - Kroner](https://www.cnblogs.com/Kroner))([GitHub - Kroner](https://github.com/Kroner)
- **Xly**[GitHub - LY-Xiang](https://github.com/LY-Xiang))([GitHub - hfsz2313](https://github.com/hfsz2313)
- **革匊习习中**[GitHub - Juvwxyz](https://github.com/Juvwxyz)
- **0x7E7**
- **FHU-yezi**[GitHub - FHU-yezi](https://github.com/FHU-yezi)
- **菲露露**[GitHub - LovelyLavender4](https://github.com/lovelylavender4)
- **XIAOYI12**[GitHub - xiaoyi1212](https://github.com/xiaoyi1212)
- **WHITE TREE**[GitHub - VinbeWan](https://github.com/VinbeWan)
- **Min0911Y**[GitHub - min0911Y](https://github.com/min0911Y)
- **A4-Tacks**[GitHub - A4-Tacks](https://github.com/A4-Tacks)
- **Telecomadm**[GitHub - telecomadm1145](https://github.com/telecomadm1145)
- **ChatRBQ**[GitHub - fawdlstty](https://github.com/fawdlstty)
- **Kill**[GitHub - Killcerr](https://github.com/Killcerr)

### 组织

+ **艾猫工作室**[aymao.com](https://www.aymao.com/)
- **艾猫工作室**[aymao.com](https://www.aymao.com/)

### 特别鸣谢

+ **FrankHB**[GitHub - FrankHB](https://github.com/FrankHB)
+ **Jajuju**[GitHub - frederick-vs-ja](https://github.com/frederick-vs-ja)
+ **Fresky**[GitHub - FreskyZ](https://github.com/FreskyZ)
+ **兔兔**
- **FrankHB**[GitHub - FrankHB](https://github.com/FrankHB)
- **Jajuju**[GitHub - frederick-vs-ja](https://github.com/frederick-vs-ja)
- **Fresky**[GitHub - FreskyZ](https://github.com/FreskyZ)
- **兔兔**

## 许可证

[**CC-BY-SA 4.0**](/LICENSE)

## 参考资料

+ [***ISO C standard***](https://open-std.org/JTC1/SC22/WG14/)
+ [***C++ 参考手册***](https://zh.cppreference.com/w/c/language)
+ ***C Primer Plus*** (ISBN 978-0-321-92842-9)
+ ***算法导论*** (ISBN 978-7-111-40701-0)
+ [***Let's Build a Simple Database***](https://cstack.github.io/db_tutorial/)
+ [***pldocs***](https://github.com/FrankHB/pl-docs/blob/master/zh-CN)
+ ***陶哲轩实分析*** (ISBN 978-7-115-48025-5)
- [**_ISO C standard_**](https://open-std.org/JTC1/SC22/WG14/)
- [**_C++ 参考手册_**](https://zh.cppreference.com/w/c/language)
- **_C Primer Plus_** (ISBN 978-0-321-92842-9)
- **_算法导论_** (ISBN 978-7-111-40701-0)
- [**_Let's Build a Simple Database_**](https://cstack.github.io/db_tutorial/)
- [**_pldocs_**](https://github.com/FrankHB/pl-docs/blob/master/zh-CN)
- **_陶哲轩实分析_** (ISBN 978-7-115-48025-5)
3 changes: 3 additions & 0 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { defineConfig } from "vitepress";
import mathjax3 from "markdown-it-mathjax3";

const customElements = [
"math",
"maction",
Expand Down Expand Up @@ -93,6 +94,8 @@ const customElements = [
export default defineConfig({
title: "Mdr-C-Tutorial",
description: "Mdr C Tutorial Repository",
lang: "zh-CN",
base: "/C/",
themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
Expand Down
1 change: 0 additions & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,3 @@ features:
- title: Feature C
details: Lorem ipsum dolor sit amet, consectetur adipiscing elit
---

3 changes: 2 additions & 1 deletion docs/教程/正文/嵌入式/初识HAL库.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ HAL库的设计目的正是为此,从而使开发者更容易地移植和维

## CMSIS(Cortex Microcontroller Software Interface Standard)介绍

一个为ARM Cortex-M微控制器系列设计的标准化软件接口。它旨在为开发者提供一个统一的接口,使得在不同ARM Cortex-M微控制器之间移植和复用软件变得更加容易。CMSIS的目的是减少为不同微控制器编写软件的复杂性,并允许开发者更容易地从一个微控制器迁移到另一个微控制器。
一个为ARM Cortex-M微控制器系列设计的标准化软件接口。它旨在为开发者提供一个统一的接口,使得在不同ARM
Cortex-M微控制器之间移植和复用软件变得更加容易。CMSIS的目的是减少为不同微控制器编写软件的复杂性,并允许开发者更容易地从一个微控制器迁移到另一个微控制器。

![CMSIS结构图](/images/嵌入式/CMSIS架构图.png)

Expand Down
10 changes: 5 additions & 5 deletions docs/教程/正文/嵌入式/初识STM32.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
STM32系列微控制器具有以下特点:

1. **高性能**:STM32微控制器采用高性能的ARM Cortex-M内核,提供高处理速度和低功耗。
2. **丰富的外设**:STM32系列微控制器集成了多种外设,如ADC(模数转换器)、DAC(数模转换器)、PWM(脉宽调制)、SPI(串行外设接口)、I2C(集成电路间总线)、UART(通用异步收发传输器)、USB(通用串行总线)、CAN(控制器局域网)、GPIO(通用输入输出)等,满足各种应用需求。
2. **丰富的外设**
:STM32系列微控制器集成了多种外设,如ADC(模数转换器)、DAC(数模转换器)、PWM(脉宽调制)、SPI(串行外设接口)、I2C(集成电路间总线)、UART(通用异步收发传输器)、USB(通用串行总线)、CAN(控制器局域网)、GPIO(通用输入输出)等,满足各种应用需求。
3. **低功耗**:STM32系列微控制器具有多种低功耗模式,适用于电池供电的便携式设备。
4. **可扩展性**:STM32系列微控制器支持多种存储器选项,包括闪存、SRAM、EEPROM等,并且可以通过外部存储器扩展存储容量。
5. **开发工具**:意法半导体提供了丰富的开发工具,包括STM32CubeMX(用于配置和初始化微控制器)、STM32CubeIDE(集成开发环境)、STM32 HAL库(硬件抽象层库)等,方便开发者进行软件开发。
5. **开发工具**:意法半导体提供了丰富的开发工具,包括STM32CubeMX(用于配置和初始化微控制器)、STM32CubeIDE(集成开发环境)、STM32
HAL库(硬件抽象层库)等,方便开发者进行软件开发。
6. **生态系统**:STM32微控制器拥有庞大的生态系统,包括丰富的开发板、教程、示例代码、社区支持等,便于开发者进行学习和开发。

总之,STM32微控制器凭借其高性能、丰富的外设、低功耗、可扩展性、开发工具和生态系统,成为嵌入式系统开发的热门选择。
Expand Down Expand Up @@ -115,11 +117,10 @@ STM32系列微控制器具有以下特点:

### 3.2 关于引脚

> 注:有关这一部分可以在 *Pinouts and pin descriptions* 小节中找到
> 注:有关这一部分可以在 _Pinouts and pin descriptions_ 小节中找到
![STM32引脚定义图](/images/嵌入式/STM32引脚定义图.png)


对引脚的解读如下:

| 名称 | 说明 |
Expand All @@ -131,4 +132,3 @@ STM32系列微控制器具有以下特点:
| 主功能(Main function) | 引脚复位后的功能 |
| 复用功能(Alternate function) | I/O默认的复用功能 |
| 重映射(Remap) | I/O除了默认的复用功能外,还能够通过重映射的方式映射到其他I/O,增加了I/O口功能的灵活性和多样性 |

Loading

0 comments on commit c86d940

Please sign in to comment.