今天我想跟大家谈谈如何开始嵌入式系统开发。
首先,什么是嵌入式系统?它以应用为中心,以计算机技术为基础,软件和硬件可定制,适用于对功能、可靠性、成本、尺寸、功耗有严格要求的专用计算机系统。最常见的嵌入式系统是单片机(MCU)系统,包括我们熟知的51单片机、STM32单片机等。
其次,学了嵌入式系统能干什么?嵌入式系统开发不仅是课程设计、毕业设计、学科竞赛的重要技能嵌入式系统软件教程,更是创新创业、项目开发、学术研究的坚实基础。
如何开始使用嵌入式系统?
嵌入式系统开发我个人推荐的学习路线是:基础知识学习->51单片机开发->STM32单片机开发->RTOS系统开发->嵌入式Linux开发。
下面主要为零基础的初学者介绍如何入门单片机软件开发。
基础知识学习
老子说:“九层之木,始于足下;九层之台,始于足下;千里之行,始于足下。”理论基础的重要性不言而喻,嵌入式系统开发大致分为硬件和软件两个部分。
飞凌开发板
五金零件
硬件是指嵌入式设备的物理组件,包括处理器、内存、外设接口、传感器、执行器等。硬件设计涉及选择合适的组件和接口、电路设计、布局和制造。通常以 PCB 电路板的形式呈现,初学者可以使用面包板或购买现成的电路板。
软件
软件是指在嵌入式系统中运行的用于控制和管理硬件的程序代码。软件开发包括为嵌入式系统编写应用程序、驱动程序和操作系统(如实时操作系统),以实现所需的功能和任务。初学者可以在裸机例程上学习使用基本功能。
STM32Cube 生态系统
硬件基础主要涉及电路分析基础、模拟电路基础、数字电路基础以及常用元器件和仿真工具的使用;软件基础主要涉及C语言基础、数据结构、通信技术基础;最后还有涉及硬件和软件的计算机组成原理。
嵌入式开发不一定要把基础知识学好,基础知识的学习是一个循序渐进的过程,冰冻三尺,非一日之寒,初学者只要掌握大概的思路嵌入式系统软件教程,在日后的实践中不断检验巩固,就会有“初狭渐明,数十步之遥,豁然开朗”的感觉。
我推荐一个重要的学习方法:实践导向法。很多情况下,我们的时间和精力是有限的,没必要把原理全部搞懂,有了粗浅的了解后,就可以直接动手实践,通过实践巩固知识。
51单片机开发
在对基础有了基本了解之后,我推荐“过时”的51单片机,它的学习资源非常丰富完善,其基于寄存器的开发方式可以让初学者更系统地了解单片机,相比STM32等主流单片机,其内部结构相对简单,使用更方便,开发板价格也更低。
51单片机芯片
推荐资料有普中51单片机、郭天祥51单片机教程等。学习路线大致是:软件方面主要学习单片机,熟悉编程和数据操作,点亮一个LED,按键检测,串口通信,定时器,中断,ADC等。硬件方面主要了解基本模块电路,时钟电路,能看懂原理图,尝试画出最小系统原理图和PCB。
“水不深,则载不住大船”,学习51单片机,打下扎实的嵌入式系统基础至关重要。
STM32 MCU 开发
STM32是架构更复杂的32位微控制器,运算能力更强,外设和接口更多,可以处理更复杂的任务和应用。
STM32 MCU芯片
常见的开发方式有寄存器开发、标准库开发、HAL库开发。鉴于寄存器开发效率低、标准库开发过时,建议学习HAL库开发,但最根本的寄存器开发还是要懂的。“有方法没技巧,还能找到技巧;有技巧没方法,只能找到技巧”,底层原理一定要懂。
STM32开发方法比较
推荐的资料是正点原子和野火的STM32F103或者STM32F407开发板,配有完整详细的学习文档和视频教程,非常适合初学者。学习内容大致为:复杂架构下的GPIO输入输出操作、中断管理、UART通信、IIC通信、SPI通信、DMA传输、总线架构、时钟架构、复杂外设的使用(LCD屏、IMU、舵机、电机、WIFI模块等)。
学完这些之后,再辅以具体的知识,可以设计出平衡车,智能家居之类的小作品。
综上所述,建议以实践为主,边做边学的方法。首先,学习基础知识,但不要试图一下子掌握所有知识。其次,通过视频教程和阅读资料学习51单片机,了解单片机的基本功能和原理。然后,通过视频教程和阅读大量资料,学习STM32复杂的架构和外部设备的使用。最后,基于单片机设计一个作品,以测试和巩固单片机知识。
结束