产品选型

爱上单片机 而立之年还有人去学嵌入式?一个十年老鸟的心得体会

小编 2024-11-24 产品选型 23 0

而立之年还有人去学嵌入式?一个十年老鸟的心得体会

而立之年还有人去学嵌入式?一个十年老鸟的心得体会

我没上大学,直接进厂,从小热爱电子技术,从2011年自学嵌入式到现在差不多有8年,工作期间在图书馆看了不少书,音乐的、艺术的、心理学的、维修的、单片机的都有,看到硅谷那些大佬的传奇书时,产生跟罗永浩一样内心久久不能平静的心情,做嵌入式项目期间做过不少失败的项目,也做过一些成功的项目,踩过不少坑,总的来说失败项目多于成功项目。期间带过十来个新手入门,有电子专业的,也有非电子专业的,希望通过这篇文章能给正在入门这个行业的你起到些许参考作用。

各行各业都存在入门难的问题

每个行业怎么入门其实都存在这方面的问题,其实在各行各业都困扰着很多人,我们经常会有一些感叹,这个东西原来就是这么回事;由于在我们没入门之前我们碰到的类似这方面的问题多多少少带有一些神秘感,这种神秘感在我们积攒这方面一定量的根底知识之前,我们一下是很难弄清楚的;另外嵌入式是一个勤动手的行业,你不去动手,你很难了解不了其中的奥秘,你不去动手,你永远停留在猜想中,总之就是一句话,就是干!

我们也通常会想去找一些捷径,窍门,我曾经也在这方面花费了非常多的时长,一年半时长内,把图书馆的书都翻了个遍,直到在我们图书馆的杂志上看到一本杜洋教师写的《爱上单片机》,我马上从当当网上买回来,花了一个星期的时长从头至尾看完了,最后又花了几百块依照书上的要求从网上把零配件买了回来;这样做完还不够,又在外面租了个房子,花了四五千买了打印机,电路板、蚀刻药水、烙铁,各种零配件等,网上10点钟初始学,早上四点钟睡觉,自己每个阶段设立一个小宗旨,画电路板,制作电路板,焊接,调试,反反复复持续了半年多的时长。

坚持,坚持,再坚持;有个时候想不到好办法,纸币我们就用最笨的办法来学习

比如说:郭老师的十天学会单片机,我用最笨的办法一个一个对着敲代码,然后动手去修改里面的东西,看现象;杜洋老师的面包板学单片机,我一个一个对照着用面包板搭建电路,烧代码。

举几个例子:

示例一:PWM原理

LED呼吸灯、蜡烛灯的原理,我们以为的是通过控制电压或电流来实现灯的明暗,实际上它是通过固定频率的PWM波通过调整PWM波的占空币来实现的,利用人眼的视觉停留效应来实现。

示例二:

我之前做过一个真人CS装备的项目,真人CS枪对着敌方射击时,到底是怎么击中对方的。经过一番拆解,钻研后;其实里面的原理很简略,就是一个红外激光+一个没线RF装置配合单片机组成,红外激光发射的的编码信号,敌方衣服上有接管红外信号的接管器,背上还背有一个RF装置(用来识别队友和组队,编队用),然后我们用这个原理用一个8脚的单片机做了一个全方向的红外发射手雷。

示例三:

无刷电机原理:我们在初中高中都学过旋转磁场能够让导体产生运动,典型的就是三相无刷电机,市面上没论是直流无刷电机还是交流无刷电机,其实原理都是利用了旋转磁场产生的,没论你是用固定电路产生的旋转磁场还是用单片机模拟产生的旋转磁场都能够到达相同的效果,只是效率更高、力度上能够更精准的控制,至于直流和交流它只是我们实际外部供电的名词罢了,假如是用交流直接驱动电机就是交流无刷电机,假如是通过将直流转变模拟旋转磁场信号的就叫直流没刷电机

直流无刷控制器和电机(步进电机)

普通工频三相电机

总结:

硬件上:我们不太了解根本原理,电容,二极管,三极管灯原理,进一步的开关电源、放大电路,珍爱电路等原理。我们平时所看到的电路都是比较复杂的,没从下手;但是假如拆解来看的话,我们发现里面都是一些根本的电路模块组成的,只是我们想不到或者没有充足的知识来有效分析。

PCB电路板设计:

原理图封装->原理图->PCB封装->PCB机械结构->PCB封装->PCB布局->PCB布线规则->PCB电路板

其实这个理解起来就围绕着两个东西 原理图 + PCB ,其他什么软件,封装,布线,规则等等都是服务于这两个主体的,另外我觉得要了解的是PCB是怎么制作?,不然你是不会明白PCB为什么要这样画,简单一点说就是这个行业知识。

原理图:将原理图符号按照一定的规则组合起来,使这个行业的人都能快速了解。

软件上:

一讲到单片机,我们在进修的时候听到最多的就是寄存器,汇编,算法、编译器,下载工具、C语言,搞了半天我们都不晓得到这些东西到底什么时候用的上,结果很多人在学校学了好几年,都不知道一个详细的项目或者实现一个根本的功能从哪方面入手。

以下是我给内部培训讲的内容摘抄:

基于pretous的一个完整单片机例子

我们大致可以得到如下信息:

1、这个系统看起来也没有想象中那么复杂

2、整个电路就一个单片机,供电,晶振,然后加个LED灯和电阻就可以工作

3、程序代码总共加起来不到20行,其实还可以更少

单片机实物组成

我们总结几个关键字:

单片机最小系统:供电,复位,时钟

程序:程序结构 + 算法

编写程序的工具:集成编译环境

简短的话概括下:往单片机最小系统里面加载写好的程序固件,它就能按照 我们的要求去做事情(洗衣服,煮饭,扫地..)

我们平常见到的单片机

关于编译工具我简单的给大家解释一下:

它的主要作用是将我们编写的高级程序语言翻译归纳整理成单片机(MCU)能够执行的程序

类似于我们跟歪果仁交流,我们不懂外语,须要一个翻译帮忙翻译成特定的语言

单片机也一样,不同的单片机它的交叉编译工具不尽相同

整个内容写的有点乱,但都是真实的感触,希望能帮到大家!!

想要学习单片机的朋友 ,关注我们,回复一哥,与导师一起学习成长,共同进步,还有更多资料领取。

说了这么多,大家记得留意下方评论第一条(或者私信我)有干货~

国内外主流嵌入式GUI汇总

早些年的单片机开发中,因为单片机的资源和性能的限制,很多都是使用文字菜单界面,这种界面让人感觉非常的朴实无华,内容言简意赅,如果使用图形库进行开发,产品一下子就让别人觉得有点高级感。现在来说,单片机资源和性能更为丰富,很多的嵌入式图形库都可以做出绚丽的界面。

下面仅介绍几款常用的图形库。

一、 LVGL

LVGL免费开源的嵌入式图形库,可为任何 MCU、MPU 和显示器创建漂亮的UI界面,现在它可以使用UI 编辑器SquareLine Studio来简化开发。

代码可以直接到LVGL官方GitHub中提取,同时也提供了在线文档、Demo示例程序等,目前版本已经更新到了V8.3.4了。

1.1 特性

强大的构建块,例如按钮、图表、列表、滑块、图像等。具有动画、抗锯齿、不透明度、平滑滚动的高级图形各种输入设备,如触摸板、鼠标、键盘、编码器等。使用 UTF-8 编码的多语言支持多显示器支持,即同时使用多个TFT、单色显示器具有类 CSS 样式的完全可定制的图形元素独立于硬件:与任何微控制器或显示器一起使用支持操作系统、外部存储器和 GPU,但不是必需的单帧缓冲操作,即使具有高级图形效果用 C 编写以获得最大兼容性(C++ 兼容)

1.2 硬件要求

绝大多数MCU都能满足要求。16、32 或 64 位微控制器或处理器推荐 大于16 MHz 时钟速度闪存/ROM:> 64 kB 用于非常重要的组件(建议 > 180 kB)内存:静态 RAM 使用:~2 kB,具体取决于使用的功能和对象类型堆栈:> 2kB(建议> 8 kB)动态数据(堆):> 4 KB(如果使用多个对象,建议> 48 kB)。由lv_conf.h中的LV_MEM_SIZE设置。显示缓冲区:> “水平分辨率”像素(推荐>10× “水平分辨率”)

1.3 移植

lvgl移植到嵌入式项目中也比较简单,首先下载好源码、调好LCD的显示驱动程序(画点函数那些),画图函数与lvgl显示接口衔接上即可,stm32中有提供DMA2D优化显示驱动,lvgl也支持触摸屏触摸,有相应的接口,另外还需要提供时钟给lvgl(提供心跳,使其保持响应)。

1.4 模拟器

LVGL可以使用模拟器在Windows/Linux/MacOS下运行,这可以大大加快你的开发进程,调试也很方便,Sim源码(它有别于嵌入式源码)可以到GitHub中下载,需要用到SDL库。

1.5 配套工具

LVGL还提供了图形、文字转换工具等.......

二、emwin

emWin是Segger公司针对嵌入式平台开发的稳定、高效的图形软件库,适合用于任何图形LCD的操作应用,并可输出高质量的无锯齿的文字和图形。它是不开源的,只提供调用库。

SEGGER 公司授权给 ST、NXP,Energy Micro 等,凡是使用这些芯片厂商生产的处理器的都可以免费使用 emWin。ST芯片的emwin叫STemWin,STemWin 针对 ST 的芯片做了优化。

emwin官方下载链接,有各种工具下载,也提供了各种Demo示例程序。

2.1 可视化工具AppWizard

可视化工具可以大大加快开发,可以实时的查看制造的UI界面,便于细微的调整。

英文版使用教程,中文版的教程有很多,例如安富莱的emwin教程、正点原子的emwin视频教程,入门相对简单,熟悉了控件功能、函数接口后就能得心应手设计界面了。

2.2 模拟器的使用

目前官网提供的最新sim版本是V6.30,下载之后使用VS打开,直接在PC上运行模拟器示例(有些VS的版本过高,编译例程会报错,配置下链接器即可)。

三、 AWTK

AWTK意为Toolkit AnyWhere,顾名思义就是一个可以在任何地方开发的工具集,是一个开源 GUI 引擎,旨在为嵌入式系统、WEB、各种小程序、手机和 PC 打造的通用 GUI 引擎,为用户提供一个功能强大、高效可靠、简单易用、可轻松做出炫酷效果的 GUI 引擎。

AWTK本身是用 C 语言开发的,上层界面开发目前支持C/JS;它性能高、内存开销小,无需学习 AWTK 控件本身的 API,而且有很多的示例代码直接用。

3.1 AWTK Designer可视化软件

需要注册后才能下载使用,流程参考链接。

不再需要手写 XML,拖拽方式设计界面,所见即所得,快速预览,一键打包资源。

3.2 例程展示

在AWStudio中,有几个例程可供下载编译,以下展示手表UI;

四 、MiniGUI

MiniGUI是一款国产GUI,一款面向嵌入式系统的高级窗口系统和图形用户界面(GUI)支持系统,由魏永明先生于1998年底开始开发。2002 年,魏永明先生创建北京飞漫软件技术有限公司,为MiniGUI 提供商业技术支持,同时也继续提供开源版本,飞漫软件是中国地区为开源社区贡献代码最多的软件企业。

MiniGUI 是免费软件,但不是免费用于商业用途

4.1 特点

五、uC/GUI

uC/GUI是Micrium公司开发的通用的嵌入式用户图形界面软件。它给任何使用图形LCD的应用程序提供独立于处理器和LCD控制器之外的有效的图形用户接口。可以应用于单一任务环境,也可以应用于多任务环境中。uC/GUI能够应用于任何LCD控制器和CPU的任何尺寸的物理显示或者模拟显示中。

uC/GUI的特点如下:

◆ 适用于任何8位/16位/32位CPU,可允许于支持ANSI C的任何编译器

◆ 适用于任何控制器驱动任何LCD(单色,灰度,或者彩色)

◆ 通过配置宏,可支持任何接口

◆ 可配置显示尺寸

◆ 可在LCD的任何一点上显示字符和画位图

◆ 对于显示尺寸和速度提供优化进程,编译时间依赖于采用的优化进程

◆ 支持虚拟显示,虚拟显示的尺寸比实际显示大。

2000年出非常火爆的一个GUI,轻量级,易于移植,免费的,只是现在没有人维护了,使用的人也越来越少。

六、 柿饼UI

柿饼UI(Persimmon UI)是RT-Thread一款专注于嵌入式领域,由C/C++语言构建,为用户提供类安卓效果的GUI解决方案。为用户提供了设计器+JavaScript语言的开发模式,用户只需拖拽UI控件,写一些简单的JS控制逻辑,就可以实现绚丽、复杂的UI效果。相对于传统纯C语言开发模式的GUI,柿饼UI可以极大的提高开发效率,降低代码调试难度,加快产品迭代速度。

七、 其它GUI

为什么叫其它GUI呢?因为我对此没有过多的了解过,只是对其进行归纳总结,用的时候方便查询。

4.1 QT for MCU

QT我们都知道,使用C++开发,重在理解信号与槽,可以发出出一款在PC上运行的软件,例如串口调试软件等。QT for MCU,是一个可以在嵌入式MCU上跑的QT UI。

QT for MCU开发指导链接

4.2 GUIX

Azure RTOS GUIX (GUIX) 是图形界面框架的一种高性能实时实现,专用于基于 ThreadX 的嵌入式应用程序,可立即移植到几乎任何具有 ANSI C 编译器和 ThreadX 支持的处理器体系结构。入门指导链接

介绍的几个GUI里面,最为推荐的是LVGL,即Little VGL,开源免费又好用。

相关问答

单片机 考研参考书?

学单片机一下书必看,选择自己最感兴趣的,这样学起来比较快,或者加入正规的系统学习班:《51单片机工程师是怎样炼成的:基于C语言+Proteus仿真》《单片机C语...

学习 单片机 需要什么知识基础?

朋友们好,我是电子及工控技术,我来回答这个问题。单片机作为一种实践性非常强的技术,要想入门单片机就要有做一些准备,有一句话叫“兵马未动,粮草先行”,我...软...

为了让孩子不沉迷手机,你们都做了哪些努力?效果怎么样?

你好,很高兴回答你的问题。孩子沉迷手机不是一朝一夕养成的,所以解决这个问题也需要耐心和时间。孩子之所以花大量的时间在手机上是由于多种原因:我觉得最...

小孩们学什么兴趣班好,暑假快来了,哪些最适合?集思广益?

少儿在暑期参加兴趣班的学习,益处很大,可以训练思维,获取知识,培养乐观向上的品质,能力也会加强,爱上学习的劲头加大。兴趣班有很多的。体育:羽毛球、台球...

大学选专业该如何选择?未来就业哪个方向比较好?

每年高考结束,考生和家长最头疼的是大学专业怎么选。今天,高考君整理三个合理选专业的方法:学业水平、兴趣特长、就业前景。尤其是2019年参加高考的同学,务...

大家编程都用什么编辑器?vim是程序员必学的吗?

摘要:在我认识的所有程序员里,每个人几乎都有专属于自己的常用工具和相关资源,今天给大家奉上数十个程序员硬核工具,我相信这里总有一款工具是属于你的!程...其...

坚持兴趣培养的道路上,家长如何以身作则?

这要看家长的时间和精力。为了孩子的兴趣启蒙,家长一定要投注和花费时间,起初时候最好是以身作则,起码上课要接送,有时间的最好陪学,孩子回家后也最好能够监...

现在大一,学习的c语言,老师教的只是基础知识,那么我该如何进行深入学习,怎么学,学什么?

人!这个时候,一个全新的机器世界的大门才真正向你打开。但切记,这是一个深不见底的深渊,里面的东西随着你探索的深度指数级增长,里面可以给你想要的一切,也可以...

如何才能知道自己适合学哪门编程语言?有什么测试方法吗?

这几乎是每个编程语言学习新手都会觉得疑惑的问题。技术发展了这么久,该有的编程语言都有了,在选择的过程中确实应该谨慎。但是我们首先应该从各个方面了解一下...

卧室想装一个遥控灯,有什么推荐的吗

遥控和灯具上各由一块HT46单片机作为控制器,以NRF905无线收发芯片作为收发器...八宝爱上粥1天前卧室想装一个遥控灯,有什么推荐的吗

猜你喜欢