[{"categories":null,"collections":null,"content":"一个嵌入式 / 机器人方向的学习者，在这记录折腾过程中的笔记与复盘。 在折腾的东西： 轮腿机器人（ESP32 + Simple FOC） 分电板 PCB 设计 桌面小工具 联系方式占位：邮箱 / GitHub 链接写在这里。 ","date":"2026-09-06","objectID":"/about/:0:0","tags":null,"title":"关于","uri":"/about/#"},{"categories":null,"collections":null,"content":"博客搭好了，用这篇文章来验证一切正常，顺便当一篇 Markdown 速查。 ","date":"2026-09-06","objectID":"/posts/hello-world/:0:0","tags":["随笔"],"title":"你好，世界：博客的第一篇文章","uri":"/posts/hello-world/#"},{"categories":null,"collections":null,"content":"常用写法 加粗、斜体、行内代码，还有 链接。 引用长这样： 学技术最好的方式就是把学的东西写出来。 ","date":"2026-09-06","objectID":"/posts/hello-world/:1:0","tags":["随笔"],"title":"你好，世界：博客的第一篇文章","uri":"/posts/hello-world/#常用写法"},{"categories":null,"collections":null,"content":"列表 写文章 = 在 content/posts/ 新建一个 .md 文件 本地预览：hugo server -D 发布：git push，Cloudflare 一分钟后自动上线 ","date":"2026-09-06","objectID":"/posts/hello-world/:1:1","tags":["随笔"],"title":"你好，世界：博客的第一篇文章","uri":"/posts/hello-world/#列表"},{"categories":null,"collections":null,"content":"代码块 写技术笔记最常用的就是代码块，带高亮和复制按钮： /* 老朋友：STM32 点灯 */ while (1) { HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); HAL_Delay(500); } ","date":"2026-09-06","objectID":"/posts/hello-world/:1:2","tags":["随笔"],"title":"你好，世界：博客的第一篇文章","uri":"/posts/hello-world/#代码块"},{"categories":null,"collections":null,"content":"表格 快捷操作 命令 新建文章 hugo new content posts/xxx.md 本地预览 hugo server -D 正式发布 git push ","date":"2026-09-06","objectID":"/posts/hello-world/:1:3","tags":["随笔"],"title":"你好，世界：博客的第一篇文章","uri":"/posts/hello-world/#表格"},{"categories":null,"collections":null,"content":"插图片怎么放 把图片丢进 static/images/ 目录，然后这样引用： ![描述文字](/images/xxx.png) 写完记得把开头 draft: true 改成 false（或删掉），否则正式构建时不会发布这篇。 ","date":"2026-09-06","objectID":"/posts/hello-world/:2:0","tags":["随笔"],"title":"你好，世界：博客的第一篇文章","uri":"/posts/hello-world/#插图片怎么放"},{"categories":null,"collections":null,"content":"Markdown 与 Obsidian 语法速查 Markdown 是一种轻量级标记语言。它通过少量符号表达标题、列表、链接、代码和表格等结构，让笔记既容易阅读，也能以纯文本形式长期保存。 技巧 本文同时介绍标准 Markdown 和 Obsidian 扩展语法。标有“Obsidian”的功能，在其他 Markdown 编辑器中不一定有效。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:0:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#markdown-与-obsidian-语法速查"},{"categories":null,"collections":null,"content":"一、标题 在文字前输入 # 和一个空格。# 越多，标题层级越低。 # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 一篇笔记通常只使用一个一级标题，再通过二级、三级标题组织内容。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:1:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#一标题"},{"categories":null,"collections":null,"content":"二、段落与换行 段落之间空一行： 这是第一段。 这是第二段。 如果只按一次回车，Markdown 通常仍会把文字视为同一段。需要强制换行时，可以在上一行末尾输入两个空格，或者使用 HTML 标签 \u0026lt;br\u0026gt;。 第一行末尾有两个空格 这里会另起一行。 也可以这样换行：\u0026lt;br\u0026gt; 新的一行。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:2:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二段落与换行"},{"categories":null,"collections":null,"content":"三、文字样式 用途 输入语法 显示效果 粗体 **粗体** 粗体 斜体 *斜体* 斜体 粗斜体 ***粗斜体*** 粗斜体 删除线 ~~删除线~~ 删除线 高亮（Obsidian） \u0026lt;mark\u0026gt;高亮\u0026lt;/mark\u0026gt; 高亮 行内代码 `printf()` printf() 这些样式可以组合使用： 这是一段 **重要内容**，其中 ==这一部分需要高亮==。 显示效果： 这是一段 重要内容，其中 这一部分需要高亮。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:3:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#三文字样式"},{"categories":null,"collections":null,"content":"四、无序列表 使用 -、* 或 + 加一个空格： - 苹果 - 香蕉 - 橙子 显示效果： 苹果 香蕉 橙子 缩进两个或四个空格，可以创建子列表： - 嵌入式开发 - C 语言 - 单片机 - 实时操作系统 - 个人成长 - 时间管理 - 定期复盘 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:4:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#四无序列表"},{"categories":null,"collections":null,"content":"五、有序列表 使用数字、英文句点和空格： 1. 明确目标 2. 拆分任务 3. 开始行动 4. 总结复盘 实际输入时全部写成 1. 也可以，Markdown 会自动编号： 1. 第一步 1. 第二步 1. 第三步 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:5:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#五有序列表"},{"categories":null,"collections":null,"content":"六、任务清单 使用 - [ ] 创建未完成任务，使用 - [x] 表示已完成： - [x] 创建学习计划 - [ ] 阅读第一章 - [ ] 完成练习 - [ ] 总结知识点 显示效果： 创建学习计划 阅读第一章 完成练习 总结知识点 在 Obsidian 阅读视图中，可以直接单击复选框修改任务状态。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:6:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#六任务清单"},{"categories":null,"collections":null,"content":"七、引用 在段落前输入 \u0026gt;： \u0026gt; 知识只有经过整理和使用，才能逐渐转化为能力。 显示效果： 知识只有经过整理和使用，才能逐渐转化为能力。 引用可以嵌套： \u0026gt; 第一层引用 \u0026gt; \u0026gt;\u0026gt; 第二层引用 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:7:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#七引用"},{"categories":null,"collections":null,"content":"八、行内代码 用一对反引号包裹短代码、命令、变量名或文件名： 使用 `git status` 查看仓库状态。 变量 `counter` 用于记录循环次数。 显示效果： 使用 git status 查看仓库状态。变量 counter 用于记录循环次数。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:8:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#八行内代码"},{"categories":null,"collections":null,"content":"九、代码块 使用三反引号包裹多行代码。开头的反引号后可以填写语言名称，以启用语法高亮。 ```c #include \u0026lt;stdio.h\u0026gt; int main(void) { printf(\u0026#34;Hello, Markdown!\\n\u0026#34;); return 0; } ``` 显示效果： #include \u0026lt;stdio.h\u0026gt; int main(void) { printf(\u0026#34;Hello, Markdown!\\n\u0026#34;); return 0; } 常见语言标识包括： 语言或内容 标识 C c C++ cpp Python python JavaScript javascript 或 js JSON json Shell bash 或 shell PowerShell powershell Markdown markdown 纯文本 text ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:9:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#九代码块"},{"categories":null,"collections":null,"content":"十、表格 使用竖线 | 分隔列，使用连字符 - 分隔表头和内容： | 名称 | 用途 | 状态 | | --- | --- | --- | | GPIO | 数字输入输出 | 已掌握 | | UART | 串口通信 | 学习中 | | SPI | 高速同步通信 | 待学习 | 显示效果： 名称 用途 状态 GPIO 数字输入输出 已掌握 UART 串口通信 学习中 SPI 高速同步通信 待学习 通过冒号可以设置对齐方式： | 左对齐 | 居中 | 右对齐 | | :--- | :---: | ---: | | 内容 | 内容 | 100 | 左对齐 居中 右对齐 内容 内容 100 说明 表格中的竖线如果不是列分隔符，需要写成 \\|。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:10:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十表格"},{"categories":null,"collections":null,"content":"十一、分隔线 单独一行输入三个或更多的连字符、星号或下划线： --- 显示效果： 分隔线适合区分主题，但不宜使用过多，标题通常是更清晰的结构工具。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:11:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十一分隔线"},{"categories":null,"collections":null,"content":"十二、普通链接 链接文字放在方括号中，网址放在圆括号中： [Obsidian 官网](https://obsidian.md) 显示效果： Obsidian 官网 直接粘贴网址也可以形成链接： \u0026lt;https://obsidian.md\u0026gt; ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:12:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十二普通链接"},{"categories":null,"collections":null,"content":"十三、图片 Markdown 图片语法比普通链接多一个感叹号： ![图片说明](图片地址) 网络图片示例： ![示例图片](https://example.com/image.png) 也可以使用 Obsidian 的嵌入语法显示仓库附件： ![[示例图片.png]] 指定图片宽度： ![[示例图片.png|400]] ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:13:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十三图片"},{"categories":null,"collections":null,"content":"十四、Obsidian 双向链接 使用双方括号链接仓库内的其他笔记： [[个人成长：建立可持续的进步系统]] 可以为链接设置显示名称： [[个人成长：建立可持续的进步系统|个人成长系统]] 链接到某个标题： [[嵌入式系统学习路线#二、推荐的实践方式]] 链接到当前笔记中的标题： [[#九、代码块]] ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:14:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十四obsidian-双向链接"},{"categories":null,"collections":null,"content":"十五、块链接 Obsidian 可以链接到一段特定内容。在目标段落末尾添加块标识： 这是一段值得反复引用的重要内容。 ^important 在其他位置引用： [[笔记名称#^important]] 块标识应当简短且唯一，通常使用英文、数字和连字符。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:15:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十五块链接"},{"categories":null,"collections":null,"content":"十六、嵌入其他内容 在双向链接前添加 !，可以把目标内容直接嵌入当前笔记： ![[另一篇笔记]] ![[另一篇笔记#某个标题]] ![[另一篇笔记#^important]] Obsidian 还可以嵌入图片、音频和 PDF： ![[图片.png]] ![[录音.mp3]] ![[文档.pdf]] ![[文档.pdf#page=3]] ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:16:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十六嵌入其他内容"},{"categories":null,"collections":null,"content":"十七、提示框 Callout Callout 是 Obsidian 提供的醒目提示框： \u0026gt; [!note] \u0026gt; 这是一条普通说明。 \u0026gt; [!tip] 自定义标题 \u0026gt; 这是一条实用建议。 \u0026gt; [!warning] \u0026gt; 这里需要特别注意。 常用类型： \u0026gt; [!note] 说明 \u0026gt; 补充信息。 \u0026gt; [!abstract] 摘要 \u0026gt; 内容摘要。 \u0026gt; [!info] 信息 \u0026gt; 背景信息。 \u0026gt; [!tip] 技巧 \u0026gt; 实用建议。 \u0026gt; [!success] 成功 \u0026gt; 已经完成。 \u0026gt; [!question] 问题 \u0026gt; 需要进一步思考。 \u0026gt; [!warning] 警告 \u0026gt; 可能存在风险。 \u0026gt; [!danger] 危险 \u0026gt; 必须立即处理。 \u0026gt; [!example] 示例 \u0026gt; 一个具体例子。 \u0026gt; [!quote] 引用 \u0026gt; 引用内容。 可折叠提示框使用 + 或 -： \u0026gt; [!faq]- 默认折叠 \u0026gt; 单击标题后展开内容。 \u0026gt; [!note]+ 默认展开 \u0026gt; 这部分内容可以折叠。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:17:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十七提示框-callout"},{"categories":null,"collections":null,"content":"十八、脚注 脚注适合补充来源或不便放在正文中的说明： Markdown 由 John Gruber 创建。[^1] [^1]: Markdown 最初发布于 2004 年。 也可以使用行内脚注： 这句话包含一条补充说明。^[这就是行内脚注。] ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:18:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十八脚注"},{"categories":null,"collections":null,"content":"十九、标签 使用 # 创建标签： #嵌入式 #个人成长 #学习/编程 标签中不能包含空格。层级标签使用 / 分隔，例如 #学习/编程。 为了避免标签被识别成标题，正文标签通常放在行内，或者统一写在 YAML 属性中。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:19:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#十九标签"},{"categories":null,"collections":null,"content":"二十、YAML 属性 笔记开头的一对 --- 之间可以保存结构化属性： --- title: Markdown 语法速查 date: 2026-06-15 tags: - Markdown - Obsidian aliases: - Markdown 用法 status: 学习中 --- 常见属性包括： 属性 用途 title 笔记标题 date 创建或记录日期 tags 分类标签 aliases 笔记别名 status 当前状态 source 内容来源 YAML 必须位于文件最开头，冒号后要保留一个空格。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:20:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十yaml-属性"},{"categories":null,"collections":null,"content":"二十一、数学公式 Obsidian 使用 LaTeX 语法显示公式。 行内公式使用一对 $： 勾股定理可以写成 $a^2+b^2=c^2$。 独立公式使用两对 $$： $$ E = mc^2 $$ 常见写法： \\frac{a}{b} % 分数 x^2 % 上标 x_i % 下标 \\sqrt{x} % 根号 \\sum_{i=1}^{n} x_i % 求和 \\alpha + \\beta % 希腊字母 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:21:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十一数学公式"},{"categories":null,"collections":null,"content":"二十二、Mermaid 图表 Obsidian 可以通过 Mermaid 代码块绘制流程图： ```mermaid flowchart LR A[明确目标] --\u0026gt; B[拆分任务] B --\u0026gt; C[开始行动] C --\u0026gt; D[获取反馈] D --\u0026gt; E[复盘改进] E --\u0026gt; B ``` 显示效果： flowchart LR A[明确目标] --\u003e B[拆分任务] B --\u003e C[开始行动] C --\u003e D[获取反馈] D --\u003e E[复盘改进] E --\u003e B flowchart LR A[明确目标] --\u003e B[拆分任务] B --\u003e C[开始行动] C --\u003e D[获取反馈] D --\u003e E[复盘改进] E --\u003e B flowchart LR A[明确目标] --\u003e B[拆分任务] B --\u003e C[开始行动] C --\u003e D[获取反馈] D --\u003e E[复盘改进] E --\u003e B flowchart LR A[明确目标] --\u003e B[拆分任务] B --\u003e C[开始行动] C --\u003e D[获取反馈] D --\u003e E[复盘改进] E --\u003e B ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:22:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十二mermaid-图表"},{"categories":null,"collections":null,"content":"二十三、注释 Obsidian 使用两对百分号隐藏注释。注释在编辑模式中可见，在阅读视图中不会显示： 这段内容会正常显示。 %% 这是一条不会在阅读视图中显示的备注。 %% %% 这里也可以写 多行注释。 %% ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:23:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十三注释"},{"categories":null,"collections":null,"content":"二十四、转义特殊字符 如果希望显示 Markdown 符号本身，可以在符号前添加反斜杠 \\： \\*这段文字不会变成斜体\\* \\# 这不会变成标题 \\- 这不会变成列表 常见需要转义的字符包括： \\ ` * _ { } [ ] \u0026lt; \u0026gt; ( ) # + - . ! | ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:24:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十四转义特殊字符"},{"categories":null,"collections":null,"content":"二十五、HTML 多数 Markdown 编辑器允许使用少量 HTML： \u0026lt;u\u0026gt;下划线文字\u0026lt;/u\u0026gt; H\u0026lt;sub\u0026gt;2\u0026lt;/sub\u0026gt;O x\u0026lt;sup\u0026gt;2\u0026lt;/sup\u0026gt; \u0026lt;kbd\u0026gt;Ctrl\u0026lt;/kbd\u0026gt; + \u0026lt;kbd\u0026gt;P\u0026lt;/kbd\u0026gt; 显示效果： 下划线文字 H2O x2 Ctrl + P HTML 的兼容性不如标准 Markdown，只有在 Markdown 本身无法表达时再使用。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:25:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十五html"},{"categories":null,"collections":null,"content":"二十六、一个完整笔记示例 --- title: UART 学习记录 date: 2026-06-15 tags: - 嵌入式 - UART status: 学习中 --- # UART 学习记录 ## 今日目标 - [x] 理解基本通信原理 - [ ] 完成串口收发实验 ## 核心概念 UART 是一种 **异步串行通信** 方式，常见参数包括： | 参数 | 示例 | | --- | --- | | 波特率 | 115200 | | 数据位 | 8 | | 停止位 | 1 | | 校验位 | 无 | \u0026gt; [!warning] \u0026gt; 通信双方的参数必须保持一致。 ## 示例代码 ```c printf(\u0026#34;Hello UART!\\r\\n\u0026#34;); ``` ## 总结 今天掌握了 ==UART 的基本帧结构==，下一步学习中断接收。 相关笔记：[[嵌入式系统学习路线]] ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:26:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十六一个完整笔记示例"},{"categories":null,"collections":null,"content":"二十七、使用建议 使用标题表达内容结构，不要只依赖粗体。 一段只讨论一个主要观点。 用任务清单记录行动，用普通列表记录知识。 用双向链接连接相关主题，不必为每个词都创建链接。 代码块注明语言，以获得更清晰的语法高亮。 表格适合结构化对比，不适合容纳大段文字。 标签用于分类，链接用于表达笔记之间的关系。 优先使用通用 Markdown，需要时再使用 Obsidian 扩展。 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:27:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#二十七使用建议"},{"categories":null,"collections":null,"content":"快速索引 粗体、斜体、删除线与高亮 任务清单 代码块 表格 双向链接 提示框 YAML 属性 数学公式 Mermaid 图表 ","date":"2026-06-15","objectID":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/:28:0","tags":["Markdown","Obsidian","笔记方法"],"title":"Markdown 与 Obsidian 语法速查","uri":"/posts/markdown-%E4%B8%8E-obsidian-%E8%AF%AD%E6%B3%95%E9%80%9F%E6%9F%A5/#快速索引"},{"categories":null,"collections":null,"content":"嵌入式系统学习路线 嵌入式系统是为特定任务设计的计算机系统。它通常由处理器、存储器、外设接口和软件共同组成，广泛存在于家电、汽车、工业控制、医疗设备和物联网终端中。 学习嵌入式不能只停留在“会调用库函数”。真正重要的是理解：一段代码如何通过寄存器控制硬件，又如何在有限资源和实时要求下可靠运行。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:0:0","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#嵌入式系统学习路线"},{"categories":null,"collections":null,"content":"一、需要建立的知识体系 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:1:0","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#一需要建立的知识体系"},{"categories":null,"collections":null,"content":"1. C 语言基础 C 语言是嵌入式开发最常见的语言，需要重点掌握： 指针、数组、结构体和函数指针 位运算与掩码 const、static、volatile 等关键字 栈、堆、全局区和静态存储区 编译、链接和可执行文件的生成过程 其中，volatile 常用于硬件寄存器和中断共享变量。它告诉编译器：变量可能在程序控制范围之外发生变化，不能随意省略对它的访问。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:1:1","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#1-c-语言基础"},{"categories":null,"collections":null,"content":"2. 数字电路与硬件基础 软件最终需要运行在真实电路上，因此至少要能够： 阅读原理图和芯片数据手册 理解电压、电流、上拉、下拉和高低电平 认识 GPIO、时钟、复位和中断 使用万用表、示波器或逻辑分析仪定位问题 了解 UART、I²C、SPI、CAN 等常见总线 遇到故障时，可以按照“电源 → 时钟 → 复位 → 引脚 → 通信 → 软件逻辑”的顺序检查。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:1:2","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#2-数字电路与硬件基础"},{"categories":null,"collections":null,"content":"3. 微控制器与外设 初学阶段可以选择 STM32、ESP32 等资料丰富的平台，依次练习： GPIO 点灯与按键输入 UART 串口收发 定时器与 PWM 外部中断 ADC 和 DMA I²C、SPI 传感器 看门狗与低功耗 每完成一个外设实验，都应该回答三个问题： 它依赖哪些时钟和引脚？ 核心寄存器或配置项是什么？ 出现异常时，怎样观察它的状态？ ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:1:3","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#3-微控制器与外设"},{"categories":null,"collections":null,"content":"4. 实时操作系统 当任务增多后，可以学习 FreeRTOS 等实时操作系统。重点不是记住 API，而是理解： 任务和调度 优先级与实时性 队列、信号量和事件 临界区与互斥 死锁、优先级反转和栈溢出 裸机程序有助于理解硬件，RTOS 则帮助我们管理复杂性。两者并非互相替代，而是面向不同规模的问题。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:1:4","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#4-实时操作系统"},{"categories":null,"collections":null,"content":"二、推荐的实践方式 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:2:0","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#二推荐的实践方式"},{"categories":null,"collections":null,"content":"项目驱动 比起零散地学习外设，完成一个小项目更容易形成完整认识。例如： 温湿度采集与屏幕显示 串口命令控制器 简易数字示波器 电机速度闭环控制 基于传感器的低功耗节点 一个完整项目至少应包含需求、模块划分、接口定义、调试记录和结果复盘。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:2:1","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#项目驱动"},{"categories":null,"collections":null,"content":"阅读数据手册 阅读数据手册时，不必从第一页逐字读到最后。可以先寻找： 芯片框图与存储器映射 引脚定义 时钟树 外设功能说明 寄存器描述 电气特性和时序图 先带着具体问题查阅，再逐渐建立对芯片的整体认识。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:2:2","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#阅读数据手册"},{"categories":null,"collections":null,"content":"记录调试过程 调试记录建议采用以下格式： 现象： 预期： 已经确认： 可能原因： 验证方法： 最终原因： 修复方式： 这能避免反复尝试同一方案，也能逐渐形成个人故障库。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:2:3","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#记录调试过程"},{"categories":null,"collections":null,"content":"三、容易踩的坑 在中断服务函数中执行耗时操作 忘记处理共享变量的并发访问 只依赖延时函数，不考虑状态机和定时器 忽略栈空间、数组边界和内存对齐 只看示例代码，不阅读手册和时序图 修改多个模块后才测试，导致问题难以定位 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:3:0","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#三容易踩的坑"},{"categories":null,"collections":null,"content":"四、阶段性学习目标 能独立阅读简单原理图 能用 C 语言实现常见数据结构和状态机 能脱离教程驱动常用 MCU 外设 能使用调试器观察寄存器、内存和调用栈 能定位一次硬件或通信故障 能编写一个包含多个任务的 RTOS 项目 能说明项目中的资源、实时性和可靠性设计 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:4:0","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#四阶段性学习目标"},{"categories":null,"collections":null,"content":"五、核心认识 嵌入式能力来自三个层面的结合： 看得懂硬件，写得出软件，定位得了系统问题。 学习过程不必追求一次掌握所有知识。更有效的方法是完成小项目、暴露真实问题、记录解决过程，再回到原理中补齐认知。这种积累方式也适用于 个人成长：建立可持续的进步系统。 ","date":"2026-06-15","objectID":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/:5:0","tags":["嵌入式","学习路线","计算机基础"],"title":"嵌入式系统学习路线","uri":"/posts/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/#五核心认识"}]