大学如何自学嵌入式开发?

2023-05-16

我2011年就开始从事嵌入式软件开发。

很多人觉得学习嵌入式开发比高考还难,不知道怎么入门?要学哪些东西?

嵌入式开发涉及的知识,你确实一辈子都学不完。

但是,这不代表你需要花费很长的时间才能学会。

我相信大多数人学习的目的,都是先通过学习这个技能找份工作,然后慢慢深入。

如果只是要达到找工作这种程度,亲测只要学习方向正确+够努力,完全可以在3-4个月完成。

一上来就像吃透这个,吃透那个的专家思想,绝对还没入门就入土了。

在学习之前,最重要的不是找教程,方向和方法比教程更重要。

很多人以为嵌入式开发就是搞ARM,搞Linux。

实际上,嵌入式开发分很多方向。

主流的方向有:

1.单片机开发

2.Linx驱动/应用开发

3.FPGA,不了解不做讲解

这是两个是目前市场需求最大的,单片机开发和Linux驱动开发偏向硬件,Linux应用开发基本是软件。

前期一定要先根据个人情况确定好自己要从事的方向,不同的方向学习内容也不一样

很多人搞不清方向,以为嵌入式开发又要学单片机,又要学Linux,学了1年门都没入。

我做了单片机开发10年,对这个行业比较熟悉,就拿这个方向做详细讲解,技术不用学多,深耕一个就够了。

单片机开发应该是属于最好入门的,Linux驱动/应用开发相对难点,工资Linux也相对高点。

不过做得越久,我越发现单片机开发其实并不比Linux开发简单。

我反而觉得资源越丰富的,用起来反而更简单。

举个例子,很多做家用消费类产品的芯片都是选非常便宜的,内存也非常小,资源非常匮乏。

他们写程序都是用汇编,算着汇编指令去写的。

你可以用资源丰富的芯片做,然后用c把代码写的很健壮,但是成本绝对比别人高。

哪怕一颗芯片只贵1毛钱,如果一个月出货10万个,你就让企业少挣1万。

有些做嵌入式Linux开发的看不起做单片机开发的,觉得很简单,没什么技术难度。

等你做过研发负责人,你就明白任何一个产品,即便功能再简单,要做好都是没那么简单的。

下面,我来总结下,学习单片机开发正确的学习路径

整个学习路径我分为7步:

1.C语言基本语法

C语言基本语法学习大概需要1-2周时间,这种教程网上已经泛滥了,大多基于上位机的C语言,跟单片机C语言编程用起来还是有点差异。

我们这块也专门录制了一套教程,总结了我们这几年实际开发最常用到的一些语法,可以到小破站找无际单片机编程直接看。

2.基础电路

这一步走弯路的小伙伴最多,再重申一遍,不用死磕模电,甚至都不用去学。

学习电路最好的途径就2个,一是开发板,二是项目。

然后通过项目不断地积累电路,模电负反馈放大电路以后的知识点我在实际工作基本没用到过。

而且我们定位单片机软件开发的话,也不需要具备硬件设计能力,只需要看懂电路关键输入输出就行了。

简单来说就是单片机通过什么方式控制电路,通过什么接口去采集电路过来的数据就行了。

3.51单片机

我第一次接触到的单片机是STC89C52RC,也就是现在开发板最常用最经典的一款。

不管你通过哪一款去入手,51单片机我都建议必须学一下,如果你直接学STM32我也不拦你。

学习51单片机的目的是为了让更好容易地去理解单片机的资源到底是怎么用起来的,怎么通过程序去控制电路的。

相当于为你后续学习别的单片机铺路。

4.51单片机项目

学完前面3个基础知识以后,到这一步,先把你前面所学的知识变成实实在在的项目,可以是一些小项目,比如说寻迹小车之类的,可以到某宝找一些DIY套件自己写程序,也可以找无际单片机编程学习实际产品开发。

这一步非常重要,也容易被初学者忽略,这一步的目的是为了学习实现功能的思维,锻炼代码整合能力,这个能力比你会单片机更重要。

5.C语言高级用法

C语言基本语法学完了,也通过项目落到实处了,就需要学习一下C语言的高级用法了,比如说指针、结构体。

这块也是为下一步学习STM32单片机做铺垫,STM32的库是面向对象的思维,如果不懂结构体和指针基本看不懂。

这块我们无际单片机编程也有原创的、系统的开源教程在小破站。

这套教程是我2019年录这玩的,本来想靠它挣点钱,后来工作一忙没空搞,干脆开源出来。

不要以讲师的标准去要求我,毕竟当初没经验,而且是开源的。

但是课程内容个人认为还是非常有价值了,也是市面上学不到的,看过的评价也比较高。

6.STM32单片机

很多人学习STM32觉得很难,怎么跟51单片机的开发模式完全不一样,控制一个IO口都这么麻烦。

STM32的资源比51单片机多太多了,寄存器自然也多,为了缩短大家开发周期,所以早期ST推出了固件库。

直接调库就能很轻松把STM32的外设用起来,而不需要关心底层配置了什么寄存器。

STM32学习我认为是会调库把外设用起来就行了,不用研究这么深。

除非你以后的产品需要你用寄存器去开发,再针对性去研究。

也不用所有外设都学习,可以看我上面那个思维导图,我为大家总结了最常用的外设。

7.STM32项目

如果你坚持到这个环节,那恭喜你,你已经成功入门了。

接下来的时间,全部放在做项目上面,再去学别的单片机已经没太大意义了,使用起来都是大同小异。

你现在缺的是功能实现的思路,以及代码实现的能力

除了项目,没有更好的方法,到这一步如果有条件了,一定要舍得花钱投资自己。

找一个行业经验丰富的人带你,通过最短的时间去学习别人几年的精华是很划算的。

如果条件不允许或者不认可我说的,也可以去找一些开源的项目学习,只是自己摸索比较浪费时间。

还有就是到某宝找一些单片机的项目DIY套件,一般他们会有提供源码,可以跟着学习。

最后,祝大家学有所成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大学如何自学嵌入式开发? 的相关文章

  • Open vSwitch介绍

    Open vSwitch介绍 1 vSwitch功能2 OvS架构3 OvS报文处理3 1 传统OvS方式3 2 OvS 43 DPDK处理方式 4 OvS补充说明4 1 基本概念4 2 匹配项与规则4 2 1 匹配项4 2 2 动作 本节
  • Python写ROS话题

    Python写ROS话题 导入ROS模块发送话题接收话题第一种方式 xff1a rospy Subscriber第二种方式 xff1a rospy wait for message完整程序 多线程处理同时接受多个话题 导入ROS模块 用py
  • Python写ROS程序常用数据结构std_msgs、geometry_msgs、sensor_msgs

    Python写ROS程序常用数据结构 std msgsFloat64MultiArray geometry msgsVector3TwistWrenchPointQuaternionPosePose2D Stamped sensor msg
  • ROS中gazebo配置教程详解

    ROS中gazebo配置教程详解 机器人模型文件获取原始URDF模型文件采用xacro格式改写文件增加gazebo插件描述增加传动transmission最后将上面三个文件合成一个文件 环境XX world文件配置文件 yaml启动文件la
  • gazebo添加末端六维力传感器

    gazebo添加末端六维力传感器 建立六维力矩传感器模型将传感器拼接到机器人模型配置传感器gazebo参数 常用的机器人只支持位置控制 xff0c 但实际运用中 xff0c 却对末端力控制有迫切的需求 xff0c 其中一种常用的方法是基于位
  • gazebo .world文件中导入dae模型的问题

    gazebo world文件中导入dae模型的问题 gazebo环境提供了很多可以直接导入的模型 xff0c 如果想往环境中导入自己的静态模型 xff0c 需将自己的模型转化为dae格式 xff0c 并编写相应的 world文件 准备好da
  • OpenCV单目视觉定位实现方法

    OpenCV单目视觉定位 xff08 测量 xff09 系统 The System of Vision Location with Signal Camera Abstract This passage mainly describes h
  • CMakeLists.txt 语法介绍与实例演练

    一 Cmake 简介 cmake 是一个跨平台 开源的构建系统 它是一个集软件构建 测试 打包于一身的软件 它使用与平台和编译器独立的配置文件来对软件编译过程进行控制 二 常用命令 1 指定 cmake 的最小版本 span class t
  • 卡尔曼滤波原理介绍及算法实现

    卡尔曼滤波原理介绍及算法实现 基础概念及理论状态方程和观测方程建立卡尔曼滤波评估方程卡尔曼滤波分类 六维力传感器滤波案例建立状态方程和观测方程求激励和误差协方差计算卡尔曼增益卡尔曼滤波表达式 算法代码实现 本文将参照教科书的介绍 xff0c
  • Java:IDEA中的常用快捷键

    快捷键一 xff1a psvm 用来快速写一个main函数 例如 xff1a 输入psvm后按回车 xff0c 就会直接生成 public static void main String args 这样一个语句 快捷键二 xff1a sou
  • sudo rosdep init 找不到命令解决办法

    sudo rosdep init 找不到命令解决办法 先看看到底ros安装成功没有 span class token function whereis span rosdep 果不其然 解决办法也很简单 span class token f
  • ubuntu18 分辨率只有800*600/640x480,怎么转1920x1080

    问题描述 我已经抢救回来了 xff0c 然后800600的话会在resolution里面只显示800600 xff0c 完全修改不了的 无效尝试 个人尝试过重装英伟达驱动 xff0c 但都没有作用 还有一次 xff0c 按照百度经验的方法操
  • 为什么列式存储会被广泛用在 OLAP 中?

    大家好 xff0c 我是大D 不知是否有小伙伴们疑问 xff0c 为什么列式存储会广泛地应用在 OLAP 领域 xff0c 和行式存储相比 xff0c 它的优势在哪里 xff1f 今天我们一起来对比下这两种存储方式的差别 其实 xff0c
  • 如何在docker中运行ubuntukylin桌面系统

    背景 由于要和开源社合办一个活动 xff0c 要求线上线下同时进行 xff0c 需要使用对方的云平台 xff0c 本来以为只需要提供iso镜像就行了 xff0c 没想到对方只支持docker镜像 虽然之前用过docker xff0c 但是完
  • 《C++ Primer》和《C++ Primer Plus》有哪些区别?

    C 43 43 Primer 和 C 43 43 Primer Plus 有哪些区别 xff1f 有了一点C语言基础 xff0c 看哪一本比较好 xff1f
  • ubuntu 与 windows远程共享目录

    Ubuntu软件安装与配置 1 samba安装 span class token function sudo span span class token function apt get span span class token func
  • 清华校外访问北邮人方式

    windows环境 以管理员身份运行cmd命令 xff0c 进入命令行模式 xff0c 输入如下命令 xff1a 1 netsh int ipv6 isatap set router isatap tsinghua edu cn 2 net
  • 记录:解决Ubuntu20.04安装ros报错E: Unable to locate package ros-kinetic-desktop-full【亲测有效】

    nbsp 作者 bug菌 博客 CSDN 掘金等 公众号 猿圈奇妙屋 特别声明 原创不易 转载请附上原文出处链接和本文声明 谢谢配合 版权声明 文章里可能部分文字或者图片来源于互联网或者百度百科 如有侵权请联系bug菌处理 一 前言 环境
  • Maven报错:The packaging for this project did not assign a file to the build artifact 解决

    Maven报错 xff1a The packaging for this project did not assign a file to the build artifact 错误描述 xff1a IDEA的选择Plugins下的inst
  • Git命令行拉取、更新、切换、提交您的项目(文件)

    Git命令操作指南 Git全局设置 span class token comment 查看当前用户和邮箱 span span class token function git span config user name span class

随机推荐

  • Anaconda下安装tensorflow (windows系统)

    因为之前Anaconda python都已经装好了 xff08 可以看之前文章Anaconda超详细安装教程 xff08 Windows环境下 xff09 fan18317517352的博客 CSDN博客 xff08 本人技术小白一个 xf
  • Vue/cli加快打包速度

    Vue cli加快打包速度 参考地址 1 external 43 CDN的方式 Vue 中使用externals和CDN来优化项目的体积 可以参考老夫之前写的方式 2 thread loader 请仅在耗时的操作中使用此 loader xf
  • 带你深入学习k8s--(一)Kubernetes集群部署

    目录 前言 xff1a 一 Kubernetes简介与架构 1 Kubernetes简介 2 kubernetes设计架构 二 实验环境搭建 1 集群环境初始化 2 所有集群节点安装kubeadm 3 拉取集群所需镜像 3 集群初始化 4
  • Ubuntu18.04 apt-getupdate 遇到问题解决

    sudo apt get update 遇到错误 Err 1 http mirrors aliyun com ubuntu xenial InRelease Could not resolve mirrors aliyun com Err
  • git submodule详解

    子模块 有种情况我们经常会遇到 xff1a 某个工作中的项目需要包含并使用另一个项目 也许是第三方库 xff0c 或者你独立开发的 xff0c 用于多个父项目的库 现在问题来了 xff1a 你想要把它们当做两个独立的项目 xff0c 同时又
  • Sinkhorn算法,正矩阵与双随机矩阵之间的关系

    Sinkhorn算法 Sinkhorn 算法描述了任意一个正矩阵 元素均为正 与双随机矩阵之间的关系 简略描述 Relations between arbitrary positive matrices and Doubly stochas
  • nvidia-smi命令报错:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver.

    nvidia smi命令报错 xff1a NVIDIA SMI has failed because it couldn t communicate with the NVIDIA driver Make sure that the lat
  • UNIX环境高级编程-第一章

    1 UNIX体系结构 xff1a 严格意义上说 xff0c 可将操作系统定义为一种软件 xff0c 它控制计算机硬件资源 xff0c 提供程序运行环境 我们通常将这种软件称为内核 xff0c 因为它相对较小 xff0c 而且位于环境的核心
  • 单片机之认识元器件及焊接工作

    一 xff0c 认识元器件 二 xff0c 焊接前的准备工作 焊接的位置如图 xff1a 焊接的时候我们需要使用到电烙铁 xff0c 故我们需要知道其应该怎么用 电烙铁的使用 我们学校使用的焊台型号为ATTEN936 xff08 加热温度过
  • 单片机入门到高级开挂学习路径(附教程+工具)

    一 先帮大家解答几个问题 xff1a 温馨提醒 xff1a 文章所有资料在 无际单片机编程 公众号获取 1 单片机是什么 xff1f 答 xff1a 单片机就是一个微型CPU xff0c 把程序烧录芯片里面 xff0c 通过控制不同的外围电
  • 嵌入式开发真的不如程序员吗?

    本文很干很长 xff0c 有我从事技术多年的经验总结 xff0c 也有我艰辛创业的经历分享 xff0c 坚持看完 xff0c 我相信一定对你未来有所帮助 xff0c 看不完先收藏起来吃灰也不错哟 不知不觉 xff0c 我已经从事了嵌入式方向
  • 自学stm32,需要会到什么程度才能找到一份工作?

    说到自学 xff0c 小有体会 xff0c 自学的过程焦虑而痛苦 xff0c 这一切 xff0c 还是来源于对未来的不确定性 今天通过个人经历和经验 xff0c 希望能为你揭开迷雾 xff0c 找到前进的方向 回想我曾经自学单片机的时候 x
  • ASCII码对应表,ASCII码值的大小顺序

    刚开始基础计算机编程的时候 xff0c 学习的是二进制 十进制 十六进制 十进制是生活习惯中最常用的计数方法 xff0c 也是我们计数的思维逻辑 后来接触了计算机基础 xff0c 我们知道计算机都是用二进制表示的 xff0c 但是这种表示方
  • 学嵌入式好找工作吗?学了嵌入式4个月找不到工作怎么办?

    最近在某吧看到一个小伙伴提了一个让我有点感触的问题 他说学了嵌入式4个月出来都找不到工作 xff0c 该怎么办 xff1f 这个行业是不是不好找工作 xff1f 失业期间那种焦虑感 xff0c 我深有体会 xff0c 每天不断在支出 xff
  • stm32对c语言要求高吗?c语言什么水平可以学stm32?

    记得我刚出来工作的时候 xff0c 一直从事stc 51单片机产品的开发 xff0c 后来接触到了NXP的单片机 一下从51过渡到ARM xff0c 确实让我头疼了一段时间 xff0c 不过还好 xff0c 都是配置寄存器去开发 xff0c
  • 嵌入式工程师月薪有多少?零基础学嵌入式要多久?

    嵌入式开发在10年前 xff0c 对大多数人来说 xff0c 还是一个非常陌生的专业 xff0c 随着社会的发展 xff0c 技术的进步 xff0c 很多产品都在追求自动化 xff0c 智能化 xff0c 嵌入式也在不断地被大家所熟知 我刚
  • plc和单片机哪个更有前途?为什么本科生都不搞plc?

    相信很多学电气工程专业的都会学习PLC xff0c 我当初也是电气工程专业 xff0c 主要学的三菱PLC xff0c 后面也玩了下西门子的 当时觉得还挺神奇 xff0c 也对编程比较感兴趣 xff0c 不过学校学得太简单了 xff0c 基
  • 学stm32有机会进大公司吗?如何选择?

    进大公司似乎跟你会什么单片机并没有直接的关系 但凡做过几年研发的都知道 xff0c 虽然我们是从事嵌入式单片机开发 xff0c 但核心其实还是你的编程思维和水平 企业做产品不是固定用哪个单片机的 xff0c 而是根据市场的情况走 xff0c
  • 电气工程及其自动化就业方向及前景

    电气毕业 xff0c 工作10年 xff0c 聊聊这几年的感悟 全文约1800字 xff0c 认真看完 xff0c 相信还在迷茫的你一定茅塞顿开 首先声明一下 xff0c 我实习期间就自学转行进入嵌入式单片机开发了 自己并没有从事过电气工作
  • 大学如何自学嵌入式开发?

    我2011年就开始从事嵌入式软件开发 很多人觉得学习嵌入式开发比高考还难 xff0c 不知道怎么入门 xff1f 要学哪些东西 xff1f 嵌入式开发涉及的知识 xff0c 你确实一辈子都学不完 但是 xff0c 这不代表你需要花费很长的时