嵌入式推荐阅读 第一期

嵌入式推荐阅读

包含了个人平时所关注公众号、B站视频、博客收集而来。排名顺序不分先后,建议有时间就多可以看看。知识是靠日积月累、一点一滴攒起来的。
或者有些人想要问,这么多内容,怎么可能全部记在脑子里面。我个人认为有的知识,可以不深入理解,但是要知道有这个问题的存在,以后遇到能知道要找哪些资料研究,而不是无头苍蝇不知去向。

说起来已经好久没有更新博客了,主要原因还是太忙了,现在暑假终于有时间慢慢思考平时学到的内容。这个月应该会陆陆续续更新一些这个学期学到的内容。

内容很多,欢迎点赞(才有动力更新)、收藏(才不会迷路)、关注(才会有下一期)

C语言相关

C语言作为嵌入式开发的最常用的语言,还是很有必要学好,学深的

  • C语言、嵌入式中几个非常实用的宏技巧

    • 宏的使用技巧
  • 困惑多年,为什么 printf 可以重定向?

  • C语言之 static

  • C语言系列文章之volatile

  • C语言之类型定义(typedef)

  • C语言之const

    • 都是一些c语言常用到,却很少深入思考的知识点
  • C++的复杂,C是原罪:从值类别说开去

    • 高级文章,有点深奥,可以试着看看,从底层讲了c++中右值相关的内容
  • 结构体嵌入共联体在协议解析中的技术性操作~

    • 共连体的常用用途,估计很多人都可能不知道C语言有这个语法
  • C语言这个基础知识点,还有很多人不清楚

    • C语言的内存分区
  • 嵌入式代码安全检查:选择if还是assert?

    • 在编写bsp时基本上都要规范代码的安全性检查
  • C语言中的数据类型 常量和变量

    • 有兴趣的可以看看,看完能让你更加了解C语言在计算机上的是怎么运行的,相比其他c语言教程,讲得更加深入底层
  • Github上热门 C 语言项目汇总!

  • 嵌入式C中的 goto 语句,争议很大

嵌入式相关

嵌入式开发相关的文章,包括各种常见架构(开发思想)、常用代码片段

  • 嵌入式开发绝招:状态机+事件驱动框架~

    • 这篇文章很值得看,在裸机开发中的最常用的思想
  • 完全解耦的时间片轮询框架构~

    • 这篇文章后面的链表相关内容可以看看
  • 单片机模拟Linux自动初始化流程!

    • 解藕的常见思路,代码少的时候用不上,以后代码多了这个思路可以用用
  • STM32串口空闲中断接收不定长数据(DMA方式)

    • IDLE 中断是串口空闲中断,所为的空闲,是指串口数据超过了一个数据帧没有接受到数据
  • 图解|Linux内核低精度定时器原理

    • 硬件定时器不够就靠软件定时器凑,但如何设计一个好的软件定时器,可以参考linux的设计
  • 什么是中断处理函数(IRQHandler)的标准流程?

    • 虽然不是我们常用的stm32,但是具有参考价值
  • STM32的完整启动流程

    • 比较底层却很值得了解的内容
  • 嵌入式代码的一些常见操作

    • 常用写法
  • 一个嵌入式软件定时器的实现!

    • 一个比较基础的软件定时器
  • 软件开发中的抽象泄露法则

    • 很多时候,明明有别人封装好的库,但是为什么还是建议你们要明白这个库本质是帮你做了哪些事情,了解底层?读完这文章应该能引起一些思考
  • 嵌入式软件的设计模式(上)

  • 嵌入式软件的设计模式(下)

    • 在现在接触到的开发,功能都是比较少的,对设计模式是没有需求的。但是如果了解过了,在平时阅读大的开源项目的代码的时候,能够更得心应手
  • 高质量嵌入式软件的开发技巧

    • 重新梳理一下C语言开发中的技巧
  • 嵌入式开发GDB调试底层原理

    • gdb是最常用的c语言调试器
  • 代码对编译器优化敏感?试试MDK的缩圈定位法

    • 编译时实际上可以做到指定某些文件为某个优化级别
  • 嵌入式软件架构设计-建立抽象层

    • 这也是为什么现在hal库逐渐成为主流的原因
  • 分享一个嵌入式通用FIFO环形缓冲区实现库

  • STM32进阶之串口环形缓冲区实现

    • 环形缓冲区是非常常用的一种方案
  • 双极性步进电机的3种控制模式

    • 步进电机运动的原理
  • 一个严谨的STM32串口DMA发送&接收机制

    • 可以参考看看
  • 在KEIL中勾选微库后,延时函数为什么不准了?

    • 如果不是看了文章,会有多少人留意到这个细节

深入底层

了解底层在很多时候可能看起来没什么用,但是当你平时出现BUG的时候,它能让你有更多的排查方向。

  • 如何动手做出一个 CPU,很简单

    • 手搓cpu,可以了解一下
  • 用C代码实现一个虚拟机~

    • 如果能实现一个简单的虚拟机,将对理解计算机底层有很大作用
  • 为什么使用结构体效率会高?通过汇编代码给你讲透!

    • 反直觉的:使用结构体效率更高
  • " 堆栈溢出 "的来龙去脉,讲明白了~

    • rtos开发常见问题
  • 一文理解单片机BootLoader的前世今生(万字长文)

    • BootLoader作为应用更新,在大部分的消费电子领域都是不可或缺的
  • Cortex-M中断在RTOS中的应用及注意事项

  • 动态库和静态库有什么区别?

扩展视野

深度重要,但是广度也是不可或缺的

  • 如果让你来设计网络

    • 这文章很好,讲了网络相关的知识,让你明白ip地址,mac地址,子网掩码相关的用途,还有网络数据包在底层的传输过程
  • 入坑机器人的一些参考

    • 了解机器人的大环境
  • Keil实用小技巧 | Keil利用AStyle插件格式化代码

    • 工具推荐
  • 离散傅利叶变换,强大的人工智能算法,DFT由来之路

    • 傅里叶变换,这视频讲了从理论学习到实际应用的过程之一,即从理想情况的连续变为现实情况的离散。
    • 傅里叶变换和其逆变换是一个重要的知识,不过现在我们大多数情况下用不上的。但是想要和你们说的是,学习信号与系统也是能很有意思的,学校老师教的纯粹理论确实很难听明白,但是可以去b站找些科普视频看看,可以帮你们梳理一下脉络,提升你们的兴趣。包括线性代数,可以去看看3b1b的科普视频。了解一下线性代数矩阵运算对应的几何变换,你会发现它是非常的妙,并且在以后你们学习运动学的时候,看一些算法就是基于线性代数上面的。虽然吧,简单的运动利用高中的数学知识都能搞定,但是就像我之前和你们说的,数学对于我们是一个工具,工具越高级,可能使用门槛会增加,但是能将问题更容易的解决。
  • 你管这破玩意叫动态规划

    • "动态规划是一个很经典的算法题目类型,这文章讲得很好。大部分人一开始遇到动态规划的题目,都会想着用穷举来解决,这种就是写业务代码写太多之后,下意识选择一个最简单的方向去做,但是那样做出来的结果无论是从实用性还是实现难度来说都不是好方案.关于算法,很多时候会感觉学到算法根本用不上,是一个没有实际意义的智力游戏。但其实就如同数学一样,上街买菜用不上微积分,只是因为我们现在写的代码,都是没有水平的业务代码(实现特定业务逻辑或功能的代码),看看我们学过的pid,假如没有学过微积分,能创造出来吗?并且我们很多时候说的编程思维在算法就体现得很明显,将问题抽象出来,确定已知量,使用算法求未知,并且将这个过程使用计算机代码实现。
    • 所以学算法是有价值的,能拓展你们解决问题的可选项,是跳出写业务代码能力圈子的一个学习方向。
    • 因此,现在很多互联网公司招程序员,算法题目在面试是必考项。(不过我们这边涉及硬件的不是,所以学多少就看你们的时间尽力而为)
  • 轻松理解bin、hex、axf和elf文件格式

  • 什么是编码器?有哪些类型?这篇你不能错过。

  • 嵌入式RTOS资料在百度查找靠谱吗?

  • 10款轻量型的嵌入式GUI库

硬件知识

即便是专注嵌入式软件开发,但基础的硬件也是很重要的一环。毕竟谁没有一个全栈的梦?: )

  • 四层PCB 最简单终教学 高校培训课程 深入浅出 不会电路也能学会 设计PCB设计

    • 四层板相比二层板,不单只是多了两层可以走线,感兴趣的可以了解一下
  • 单片机IO端口进化史

    • 了解历史可以了解IO设计是如何迭代的,每次迭代解决了什么问题
  • 白话说电路,LDO和DC-DC看这篇就够了!

    • 电源必读系列
  • IC之美:常见的芯片封装技术

    • 常见的电子元件封装,了解一下就行
  • 0Ω电阻到底能过多大电流?

    • 包含了0欧电阻常见的用法
  • 为什么说 PCB 清洁相当重要?

  • 常见 LDO 线性稳压芯片的对比选型

  • 学习PCB设计前的知识扫盲,新手向,越新手越好!

  • [B站视频]电烙铁焊接教程(包含热风枪)

你可能感兴趣的:(嵌入式,嵌入式硬件,c语言,学习,单片机,stm32)