#杂谈 个人嵌入式开发的学习

news2024/11/22 3:06:54

本人目前从事的是嵌入式软件开发的相关工作。这是一个关于个人做项目时用过的开发工具的杂谈,仅是为了记录学习经历,同时也为和我有同样瞎搞东西的爱好者提供一个学习思路。


前言

我的技术栈:
下面介绍一下我用过在或者还在用的开发工具,实际上有的因为平常搞东西很少用到,有的都不太上手了,也请各位看官酌情参考。

单片机:arduino、AVR、C51、STM32、ESP8266、ESP32、MSP430/432、中微Bat32

编程开发:C、C++、Python

电路设计: AD(altium designer)、立创EDA

机械结构设计: AutoCAD、Solidworks、CREO\PROE、Fusion360。

不务正业的: APPinventor(图形化编程)、PS修图、PR视频剪辑、AI排版


一、单片机学习

arduino
Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。arduino本质就是一个8为寄存器的avr单片机,只是一些热爱折腾的人为它做了很多封装好的函数库,而且把这个单片机最小系统集成到一个板子上,并用“arduino”来称呼,使得它能让初学者不需要了解单片机底层就能迅速上手。个人而已,它更适合做一些对性能要求不高,类似玩具之类的东西。

在这里插入图片描述

arduino是我刚上大学就接触的,我还记得在小黄鱼上花了一百多块钱买了一套人家做小车剩下的套件,利用军训的空余时间在宿舍里捣鼓。以至于半夜熄灯的时候,室友都睡着了,我还在搞流水灯的程序,宿舍还一闪一闪的。后来又接触了L298N电机驱动、循迹传感器、蓝牙模块这类电子模块,一个月后搞了一辆蓝牙小车,体验到了用手机APP控制小车的乐趣,也因为这个小车我有幸进入了院系的实验室,后来又用arduino uno做循迹小车参加学校的机器人比赛。
arduino中文社区:https://www.arduino.cn/


51单片机
是对兼容英特尔8051指令系统的单片机的统称,atmel的at89c51和国产宏晶的stc89、stc15w都属于51单片机。因为51单片机的指令系统、内部结构相对简单,所以国内许多高校用其进行单片机入门教学。
在这里插入图片描述
我是大一时开始学51单片机,当时在小黄鱼上买了一套二手的普中科技开发板,别人做毕设用剩的,用的就是比较典型的STC89C51这款芯片,当时一下课就回到宿舍便看视频,边照着敲代码。从点亮一颗LED开始,到后来的定时器中断、串口中断,渐渐对单片机的系统有了一定了解, 比如大部分单片机共有的时钟电路、复位电路还有下载电路这些都有了初步认识,以后学习的各类单片机其实都是基于这个框架进行延申拓展。大三的时候,《单片机原理与接口技术》教的就是51单片机,有意思的是,这门课竟是个理论课,课堂上老师都是照着书本念到下课。一周一次的实验课,连个开发板都没有,都是用Protues在一台旧电脑上进行仿真,然后写实验报告完事。学习还得靠自己。


stm32
STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势。STM32凭借其产品线的多样化、极高的性价比、简单易用的库开发方式,迅速在众多32位单片机中脱颖而出,也是目前很多公司还在用的。
在这里插入图片描述

这也是我目前工作最常用的了。这是我在大二时候才真正开始学习的,那年寒假从学校实验室带回了一个正点原子的stm32f407的开发板,刚开始也是照着视频敲代码,看视频真的一脸懵,要弄那么多.c和.h文件,感觉这玩意比51单片机复杂多了,曾有一段劝退期,但是为了比赛需要,不能不硬着头皮往下学。后来参考网上相关资料,用stm32做了平衡小车、擂台机器人还有舞蹈机器人等等。


ESP8266
ESP8266 是一款超低功耗的UART-WiFi 透传模块,具备 GPIO、I2C、ADC、SPI、PWM 等功能。总的来说,ESP8266 是一个高性能的无线SOC,它的内部集成有超低功耗的32位微型MCU(单片机),主频支持80MHZ和160MHz,甚至能够跑 RTOS。
在这里插入图片描述


ESP32
ESP32系列采用Tensilica Xtensa LX6微处理器,包括双核心和单核版本,内置天线开关,RF射频模块,功率放大器,低噪声接收放大器,滤波器和电源管理模块。
在这里插入图片描述


MSP430/432
MSP430和MSP432都是大三时候应付电赛被迫学习的,这是TI(德州仪器)推出的两款单片机,其中MSP430是个类似51单片机的8位单片机,MSP432则是个类似stm32的32位单片机。电赛的时候就是用MSP432这款单片机做了一个信号失真度测量仪,说白了就是做一个示波器,用于测量任意信号的波形。
在这里插入图片描述


中微bat32
BAT32G系列是中微半导推出的高性能超低功耗MCU,其提供高速高精度的模拟外设,丰富的通讯接口,强大的DMA数据搬运功能,数字功能均可自由映射到任意端口等,最大限度地简化硬件设计,优化BOM成本。
它和stm32g0的类似,都是基于CM0+架构的32位单片机。出来工作后在公司做项目使用到的,但是这款芯片网上资料特别少,开发的时候主要都是对着官方的技术手册配置寄存器,而且手册和参考例程还有错的,程序出现问题了,但找不出问题所在,叫天天不应,叫地地不灵,一度搞心态。目前用这个单片机发展还不成熟,用的公司应该不多。
在这里插入图片描述

我发现用了那么多单片机,其实各类单片机很多东西都是通用的,像GPIO、外部中断、定时器、串口这些外设在配置的时候,都是大同小异的。学习路线建议先学51单片机,特别是把中断、定时器、串口这个部分都理解透彻,再学stm32或者其他单片机会轻松很多。

除了单片机,也可以玩玩树莓派,或者其他基于Linux平台的东西,学习ROS机器人操作系统。当然了,还得要在资金允许的情况下。


二、编程开发

C语言
俗话说的好“汇编生C,C生万物”,C语言无疑是编程界的老大哥了。其实我在2018年高考结束之后的那个暑假就在家学C语言了,当时买了厚厚的一本《C语言从入门到精通》的书籍在家偶尔啃一啃,主要还是看网上小甲鱼的零基础入门视频学的。指针还没搞懂,就会些if、for、while语句,模棱两可的学了一个多月,就上大学了。这也为我进入大学后玩arduino、C51单片机打下了一定的C语言基础。然后再经过课堂上的系统学习,再加上竞赛积累,对C语言的应用算是由浅入深了。目前在公司搞单片机开发用的也是C语言。

C++
学习总是一个循环渐进的过程,学了C,最好是往C++方向再学习。我学习C++是因为要用QT平台搞个上位机才学的,当时想弄个自己的串口调试助手,就学了几天QT,然后在B站跟着一个大佬手把手弄一个。在学QT过程中,涉及到C++的“类”这玩意,还有C语言常用的打印函数printf(),在C++中用的是cout<<。于是我果断从同学那花20块钱买了一本二手的书《C++从入门到精通》,厚厚的一本,正好可以当枕头用。更多的是在网上看视频学的,也是从那时起,我开始用上被广泛使用的代码编辑器VScode,看着纯黑的界面,比在学校教的VC++6.0炫酷多了。
python
Python解释器易于扩展,可以使用C语言或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。python语法简单,我学习python主要原因是在学校搞摄像头识别物体的时候涉及到了openMV这玩意。openMV的主控是stm32f4,基于microPython开发的。microPython也可以移植到esp8266、esp32上,让开发更加简单。python还可以做一些小游戏之类的。


三、电路设计

Altium Designer
简称AD,是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件使电路设计的质量和效率大大提高。
在这里插入图片描述

立创EDA
立创EDA是一款基于浏览器的,专为中国人设计的,友好易用的EDA设计工具。服务于广大电子工程师、教育者、学生、电子制造商和爱好者。致力于中小原理图、电路图绘制,仿真,PCB设计与提供制造便利性。而且立创EDA拥有超过100多万在线免费元件库,并在实时更新。可在设计过程中检查元器件库存、价格和立即下单购买,缩短设计周期。
立创EDA目前有两个版本,立创EDA专业版和立创EDA标准版。标准版面向学生,教育,功能和使用上更简单;专业版面向企业,团队,功能更加强大,约束性也更高。

在这里插入图片描述

咱们玩单片机的,能用AD或者立创EDA画个简单的最小系统板,实现驱动相关模块,满足日常搞搞东西的就行。在工作中大部分情况下,能看懂原理图配置引脚就行,咱们又不是干PCBlayout的,也不涉及高速PCB,因此没必要把那些电路绘图工具玩得那么深。


四、机械结构设计

出身于机械电子工程专业,怎能不懂机械原理和机械设计呢。
AutoCAD:是Autodesk公司首次于1982年开发的自动计算机辅助设计软件,用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。AutoCAD具有良好的用户界面,通过交互菜单或命令行方式便可以进行各种操作。它的多文档设计环境,让非计算机专业人员也能很快地学会使用。
这款强大的二维绘图开发工具无论是机械的,还是电气、土木、美术的都会用到,
Solidworks
SolidWorks软件是世界上第一个基于Windows开发的三维CAD系统,由于技术创新符合CAD技术的发展潮流和趋势,SolidWorks公司于两年间成为CAD/CAM产业中获利最高的公司。
在这里插入图片描述

CREO\PROE:CREO和PROE其实是同一个软件的在历代版本的不同叫法,PROE是先前版本名称,CREO是目前主流版本名称。它是美国PTC公司于2010年10月推出CAD设计软件包。Creo是整合了PTC公司的三个软件Pro/Engineer的参数化技术、CoCreate的直接建模技术和ProductView的三维可视化技术的新型CAD设计软件包,是PTC公司闪电计划所推出的第一个产品。

Fusion360: Fusion 360 是一款基于远程服务的三维建模、CAD、CAM、CAE 和 PCB 软件平台,主要用于产品设计和制造。


五、业余瞎搞的

APPinventor: App Inventor是一个完全在线开发的Android编程环境,抛弃复杂的程式代码而使用积木式的堆叠法来完成您的Android程式。对于Android初学者或是机器人开发者来说是一大福音。因为对于想要用手机控制机器人的使用者而言,他们不大需要太华丽的界面,只要使用基本元件例如按钮、文字输入输出即可。

Ps和Pr: Adobe 的Photoshop和 Premiere ,一个是做图片处理的,另一个是做视频剪辑的。Ps是我在校期间因为需要到电子版证件照,懒得去照相馆,就在宿舍自学Ps抠图,换头像背景,然后又用来帮同学修图。Pr是因为在校期间参加机器人比赛要提供PPT和作品展示的视频,被迫学的,在B站或者其他平台上发的视频都是用Pr进行剪辑的。这两个学起来入门都不难,能满足自己瞎搞项目的设计需求就行,没必要学的太深,咱又不是干音乐艺术的。
Ai: Adobe Illustrator,Ai和前面的Ps、Pr算是Adobe三件套了,Ai通常是用来做说明书、排版的。


总结

以上就是关于个人嵌入式开发学习的杂谈,分别从单片机、编程语言、电路设计、结构设计还有业余爱好等方面介绍了所使用的开发工具和学习经历。希望能给爱折腾的人提供一个学习思路。学习永无止境,我只是个正在学习中的小菜鸟。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/494954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb综合案例-Servlet优化

将WebServlet的访问路径不要写死&#xff0c;写成通配符的形式 1. 反射笔记&#xff08;后续代码会用到该机制&#xff09; 1.1 基础概念 JAVA反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&am…

【Nodejs】Express实现接口

介绍 Express 是一个第三方模块&#xff0c;用于快速搭建服务器 类似于jquery与DOMExpress 是一个基于 Node.js 平台&#xff0c;快速、开放、极简的 web 开发框架。express保留了http模块的基本API&#xff0c;使用express的时候&#xff0c;也能使用http的APIexpress还额外封…

【花雕学AI】我们如何才能避免被ChatGPT替代?——一个跨学科的视角

ChatGPT是一个由OpenAI开发的AI文本工具&#xff0c;它可以理解和生成自然语言&#xff0c;从而与用户进行对话。ChatGPT是基于GPT-3或者GPT-4模型的&#xff0c;这是目前最大和最先进的语言模型之一。ChatGPT通过在大量的互联网文本数据上进行预训练和强化学习&#xff0c;学习…

linux修改程序的配置文件

修改指定文件中的数&#xff0c;例如创建一个文件如图 把6修改成7 修改完成 代码如下&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <unistd.h> #include <string.h> #incl…

【英语】大学英语CET考试,阅读部分1(阅读概述,SectionC仔细阅读140)

文章目录 1、阅读概述1.1 考试概况&#xff1a;大纲解读备考策略1.2 做题原则&#xff1a;定位1.3 标点符号和句子逻辑1.4 一级词汇 2、细节题&#xff08;10题占9题&#xff09;2.1 逻辑关系&#xff08;并列和递进&#xff0c;同一方向&#xff09;2.2 逻辑关系&#xff08;转…

Flutter学习之旅 -AspectRatio Card CircleAvatar组件

文章目录 AspectRatioCardCircleAvatar定义方法封装 AspectRatio AspectRatio的作用是根据设置调整子元素child的宽高比。 class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(BuildContext context) {//获取设…

解决文件夹显示“文件夹变文件”的方法

在文件夹属性设置中&#xff0c;找到“文件名”&#xff0c;双击一下&#xff0c;选中的项目就会显示为“文件夹”&#xff0c;如果没有选中&#xff0c;点击“打开文件夹”就可以了。这是因为系统在默认情况下&#xff0c;所有的文件夹都是以系统默认的路径来命名的。当然也有…

构建 Kubernetes Operator 的原则是什么?

Kubernetes&#xff08;简称K8s&#xff09;上数据服务的自动化越来越受欢迎。在K8s上运行有状态的工作负载意味着使用Operator。然而&#xff0c;它发展演化到今天已经变得非常复杂&#xff0c;像Operator这样的应用模式和扩展方式对于开发者与运维者而言愈发受到欢迎。 但工…

【勝讯云 Finops Crane 集训营】基于 FinOps 的云资源分析与成本优化平台实操及说明

介绍 Crane 是由腾讯云主导开源的国内第一个基于云原生技术的成本优化项目&#xff0c;遵循 FinOps 标准&#xff0c;已经获得FinOps基金会授予的全球首个认证降本增效开源方案。它为使用 Kubernetes 集群的企业提供了一种简单、可靠且强大的自动化部署工具。 Crane 的设计初衷…

来这公司一年碰到的问题比我过去10年都多

无意间发现我们 Kafka 管理平台的服务的 open files 和 CPU 监控异常&#xff0c;如下图&#xff0c;有一台机器 CPU 和 opfen files 指标持续在高位&#xff0c;尤其是 open files 达到了4w。 原因分析 第一反应是这个服务请求很高&#xff1f;但是这个服务是一个管理服务不应…

云安全的挑战与发展:云原生安全将是未来趋势吗?

引言 随着企业数字化转型的推进和云计算的普及&#xff0c;云安全已经成为了当下IT行业的热点话题之一。尽管云计算已经被广泛应用&#xff0c;但在云安全方面仍存在一些挑战和问题。本文将探讨当前云安全面临的挑战&#xff0c;并分析云原生安全在未来的发展趋势。 第一章 云…

Opera One将取代 Opera 浏览器

导读Opera 日前推出了一款名为 Opera One 的新浏览器&#xff0c;该浏览器正处于开发者预览阶段&#xff0c;用户可以访问官网下载试用&#xff08;链接&#xff09;。这个浏览器的终极目标是在今年晚些时候取代其当家的 Opera 浏览器。 Opera One 遵循 "模块化设计理念&q…

Netty(2)

Netty 文章目录 Netty4 Netty 模型4.1 Netty 模型介绍4.2 Netty demo4.3 Netty 异步模型4.3.1 基本介绍4.3.2 异步模型4.3.3 Future-Listener 机制4.4 Netty 任务队列 task 4 Netty 模型 4.1 Netty 模型介绍 Netty 线程模式&#xff1a;Netty 主要基于主从 Reactor 多线程模型…

2023年开源社项目委员会介绍

2023 项目委员会成员 项目委员会主席&#xff1a;石垚 &#xff08;tech-querykaiyuanshe.org&#xff09; 项目委员会秘书 &#xff1a;丁文昊 &#xff08;dingwenhaokaiyuanshe.org&#xff09; 开源社官网项目组&#xff1a; 组长&#xff1a;石垚 &#xff08;tech-queryk…

2023 ATTCK v13版本更新指南

一、什么是ATT&CK ATT&CK&#xff08;Adversarial Tactics, Techniques, and Common Knowledge &#xff09;是一个攻击行为知识库和模型&#xff0c;主要应用于评估攻防能力覆盖、APT情报分析、威胁狩猎及攻击模拟等领域。 二、ATT&CK 发展历史 1996年&#xff1…

【UE】高级载具插件-04-坦克瞄准开火

在上一篇文章中&#xff08;【UE】高级载具插件-03-子弹击中目标时使目标破碎&#xff09;&#xff0c;我们实现了坦克开火的功能。本篇博客介绍的是实现坦克瞄准开火的功能。 效果 步骤 1. 首先将学习FPS游戏时用到的动态准心控件蓝图资源导入 2. 在项目设置中增加两个操作…

穿越有序链表的迷宫:探索力扣“合并两个有序链表”的解题思路

本篇博客计划讲解力扣“21. 合并两个有序链表”这道题&#xff0c;这是题目链接。 老规矩&#xff0c;先来审下题干。 输出示例如下&#xff1a; 提示&#xff1a; 这道题目相当经典&#xff0c;同时是校招的常客。大家先思考一下&#xff0c;再来听我讲解。 思路&…

7.1 幂法和反幂法

学习目标&#xff1a; 如果我要学习幂法及反幂法&#xff0c;我会遵循以下步骤&#xff1a; 1. 学习理论知识&#xff1a;首先我会找到可靠的教材或者网上资源&#xff0c;学习幂法及反幂法的理论知识&#xff0c;包括其原理、公式、算法流程、收敛性等方面的内容。这些知识可…

Cadence Allegro BGA类器件扇孔操作教程

对于BGA扇孔&#xff0c;同样过孔不宜打孔在焊盘上&#xff0c;推荐打孔在两个焊盘的中间位置。很多工程师为了出线方便&#xff0c;随意挪动BGA里面过孔的位置&#xff0c;甚至打在焊盘上面&#xff0c;如图1所示&#xff0c;从而造成BGA区域过孔不规则&#xff0c;易造成后期…

3.shell脚本例子

文章目录 1.计算从1到100所有整数的和2.提示用户输入一个小于100的整数&#xff0c;并计算从1到该数之间所有整数的和3.求从1到100所有整数的偶数和、奇数和4.用户名存放在users.txt文件中&#xff0c;每行一个&#xff0c;判断文件里的用户是否存在&#xff0c;若该用户存在&a…