最近有不少刚毕业的同学问我:"我是应届生,学了stm32和一些Linux基本指令,能找到嵌入式工作吗?"
说实话,学得有点杂,一看就是什么都不深入,光凭这些可能有点悬,不过也别太灰心,好消息是至少基础还可以。
很多新手因为没行业经验,没搞清楚一件事,嵌入式开发涉及太广了。
它包括好几个方向,比如单片机开发、Linux驱动开发、Linux应用开发等等。所以找工作时,得先想清楚自己想往哪个方向走。
这篇文章直接把饭喂到你嘴里,如果学的stm32,其实是偏单片机开发的,如果想走这条路,建议重点关注这几个方面:
- C语言得扎实,这是基本功
1.基础语法熟练
①.能够熟练使用各种数据类型、运算符、控制结构(if-else, switch, for, while等)。
②.理解并正确使用数组、指针、结构体、联合体
③.熟悉函数的定义、声明和调用
可以按照我下面这套教程来学习,是针对单片机的C语言。
2.指针应用
①. 熟练使用指针操作数组
②. 理解函数指针的概念和应用
③. 能够使用指针实现一些常用的算法和数据结构(如排序、队列、链表)
这些,我有套教程,基本都能覆盖到。
3.预处理和宏
①. 理解并能够使用条件编译
②. 熟悉常用的预处理指令(#include, #define等)
③. 能够编写简单的宏函数
4.位操作
①. 能够使用位运算符进行低级操作
②. 理解位域的概念和应用
5.标准库函数
①. 熟悉常用的标准库函数(如字符串操作、数学函数等)
②. 能够查阅并正确使用C语言标准库
6.代码风格
①. 编写清晰、可读性强的代码
7.调试能力
①. 能够使用调试工具(如ST-Link)定位和解决问题
②. 理解常见的C语言相关错误和警告
8. 嵌入式相关
①. 理解volatile关键字的作用
②. 熟悉嵌入式系统中的中断处理
③. 了解嵌入式系统中的存储器类型和特点
9. 多文件编程
①. 理解头文件的作用和正确使用方法
- . 熟悉模块化编程的概念
二、单片机原理要搞懂,不能光会用
要掌握的单片机原理包括以下几个方面:
1. 单片机的基本架构
①. 理解单片机的内部结构(CPU、存储器、I/O接口等)
②. 了解不同类型单片机的特点(如8051、STM32、AVR等)
③. 掌握单片机的工作原理和时序
2. 存储器系统
①. 理解程序存储器(ROM、Flash)和数据存储器(RAM)的作用
②. 了解不同类型存储器的特点和应用场景
③. 掌握存储器的寻址方式和访问方法
3. 中断系统
①. 理解中断的概念和作用
②. 掌握中断的处理流程和优先级管理
③. 了解不同类型的中断(外部中断、定时器中断等)
4. I/O接口
①. 理解GPIO(通用输入输出)的工作原理
②. 掌握I/O口的配置和使用方法
③. 了解上拉、下拉电阻的作用和使用场景
5. 定时器/计数器
①. 理解定时器的工作原理和应用
②. 掌握定时器的配置和使用方法
③. 了解PWM(脉冲宽度调制)的原理和应用
6. 通信接口
①. 理解常用通信协议(UART、SPI、I2C等)的原理
②. 掌握各种通信接口的配置和使用方法
③. 了解通信接口在实际应用中的选择依据
7. A/D和D/A转换
①. 理解模数转换和数模转换的原理
②. 掌握ADC和DAC的使用方法
③. 了解采样率、分辨率等关键参数的含义
8. 低功耗模式
①. 理解单片机的不同工作模式(正常模式、睡眠模式等)
②. 掌握低功耗设计的基本方法
③. 了解唤醒机制和电源管理技术
9. 单片机的启动和复位
①. 理解单片机的启动过程和复位机制
10. 调试和仿真技术
①. 至少会一种在线调试(如STLink、JTAG、SWD)
②. 掌握常用调试工具的使用方法
③.了解仿真器的作用和选择依据
三、基本的通信协议要熟悉
比如UART、SPI、I2C之类的
四、得有实际项目经验
项目经验最重要,以上所有知识,你不一定全会,但是项目涉及的,至少要掌握。
最后总结下,想在嵌入式领域发展,我的建议是:
1. 先定一个主攻方向,是单片机还是Linux,别两个都学得不深。
2. 选好方向后就得深入学,别浅尝辄止。
3. 一定要多做项目,找些开源项目练手,或者自己设计点小东西。
最后提醒一下,找工作不光看技术,你的学历、表达能力、团队精神、找工作的城市、年龄,这些都会有影响。如果是本科,年龄不大,在大城市找,只要技术还行,机会还是不少的。
最近有些老铁找我咨询学单片机,聊完发现99%的人都走了弯路,特意写了一篇单片机学习路径:
单片机不踩坑的学习路线https://blog.csdn.net/2301_78464137/article/details/141396541