单片机项目不会编程,做不出来怎么办?

最近有些学员,上班以后,心里没底,怕公司的项目做不出来。

这个问题,我们经历了非常多,特别是在刚开始工作的那几年。

今天,分分享下我以前的开发产品的流程和方法。

 

一、行业潜规则

碰到不会的,不要慌,不要怕公司辞退,要想办法解决问题。

一些行业潜规则:

1.刚入行,领导会有心理预期,不会指望1W的工资,干2W的活,不识好歹的领导还是少数,所以不要有太大心里压力。

2.刚入行,公司一般不敢让你去开发一个新项目,公司比你更怕,一般以维护公司老项目为主,就是改改程序,根据客户需求升级下功能,这个过程是让你熟悉公司产品。

3.但也有一种情况,就是产品比较简单,就会直接让你开发新产品,我们有学员碰到过。

4.跟领导反馈进度很重要,产品开发是有个漫长过程的,短的几个月,长的1-年都有。

领导每次问你,不是说催你马上拿结果来,而是要知道你的进度如何,比如目前做到哪个功能?下一步做什么功能?目前占总进度的多少了?还需要多长时间能完成?如果他觉得你进度慢了,会问原因,是不是什么问题卡住你了?他会想自己是否有能帮到你的资源?

做领导的需要心里有底,这样他能及时根据你的问题去调整策略,不要说每次去问你,你都说没做完,或者说我不会,这种人领导是最讨厌的。

 

二、建立产品开发知识体系

慌的本质是你对产品研发体系不够清晰,一味只想把项目做出来,怎么做?不知道,就是处于这种着急内耗当中,一点屁用没有

产品研发是有系统流程,有体系的,不要总是害怕这个单片机怎么用?那个功能代码怎么写?

我给大家说个事实,可能会颠覆你的认知:

我们去做新项目,需要自己具体做出来的只有30%左右,70%搞懂如何改就可以了

先来讲下产品的开发流程,看完以后,你再回过头想,就明白了。

需求分析->硬件选型->原理图PCB设计->打样焊样机->写程序->测试功能->小批量试产

 

需求分析->硬件选型->原理图PCB设计->打样焊样机,我们做软件的在需求分析硬件选型这两个环节配合硬件工程师去做,其余都不用管。

 

1.需求分析

就是站在做技术的角度,把用户的功能进行二次分析,用户不懂技术,他提的需求可能是很模糊的。

拿我们主机为例,用户希望做一个防盗报警系统,放在家里,如果人不在家,我可以把主机设置成离家布防模式,当有人非常闯入,主机会报警,并且通过手机通知我。

如果你没做过这种产品,绝对是一脸懵逼,这时候怎么办?

找竞品,就是找类似的产品,某宝搜家用防盗报警系统,买过来,玩一下,看跟用户希望的功能是否相同。

然后根据竞品,去跟用户确定功能。

比如用什么屏,OLED/TFT?

需不需要用到按键,如果用的话用触摸按键还是普通的按键?

这个环节,比较费时间,可能沟通需求都需要一个月,但是沟通越细,后续开发出来就越契合用户需求,还是很有必要的。

 

2.硬件选型

就是根据用户的功能需求,去选单片机,去设计功能电路。

选单片机一般需要我们配合,某些引脚能不能实现指定的功能,或者需要多大内存空间的。

一般工程师这个环节也不会自己从头到尾去设计,因为要踩的坑非常多,核心还是找竞品参考,直接电路抄过来改改,或者记下一些关键性的芯片,比如电源芯片、Wifi模块、单片机等等,只要把这些型号找到,参考原理图可以找相应供应商直接要,不用从头到尾去抄别人的电路,这样效率最高。

 

3.制作样机

硬件工程师画好原理图和PCB之后,发给板厂打板,比如嘉立创,打板回来后把每个元器件焊接上去。这个是硬件工程师的工作了,嵌入式软件开发的不用管。

 

4.写程序

写程序就是根据外围电路去写程序实现产品功能。

我们主要的工作就是这个环节,很多人也是这个环节没思路,不知道代码怎么写。

这个环节,也是有系统流程的,按照流程来,你不可能完全做不出来,按照我说的流程和方法,至少能做50%以上。

第一步:非常熟悉产品功能

一定要非常非常熟悉你的产品功能,连实现什么功能都不知道,写程序怎么可能有思路和方向。

最好买个竞品,把他们功能系统玩一遍,然后用思维导图把功能拆解模块化,这一步很重要

这个阶段,你要把下面两个问题搞明白:

①.每个功能模块分别用到单片机哪些外设?

②.每个功能模块硬件驱动的原理是什么? 

 

第二步:先把用到的单片机外设调通

把你这个项目涉及到的所有单片机外设先调通。

现在大多数单片机外设代码都不用自己看数据手册去配置,原厂和代理商会提供所有外设例程,直接拿过来改,千万不要自己傻乎乎看寄存器去配置。

这个环节一般1-2周时间完成。

 

第三步:把每个功能模块调通

举个例子:

怎么让喇叭发出110的报警声音?如果你没做过这种功能,你会怎么下手?

当初我也不知道,然后我在网上搜”单片机怎么驱动喇叭发出声音”,大概了解到单片机需要输出PWM控制喇叭发声,频率大概在1HZ左右。

我用的是STM32F103单片机,那我就去找STM32F103输出PWM的例程,直接拿来改。

我再进一步搜,单片机怎么驱动喇叭发出110报警声,看了很多资料,发现就是调节一个频率范围,然后慢慢调代码去测试最后把功能做出来。

这种器件的工作原理,一般是在硬件选型阶段就要搞清楚的,不然没法设计电路,如果你刚到公司,没参与到硬件设计环节,最快的方式就是直接问硬件工程师。

所以这个阶段难点和重点在于,要搞懂功能背后的逻辑,先搞懂涉及到外设接口、硬件原理、器件原理、协议、框架、平台等内容,然后才是想代码怎么写。

这个需要不断做项目积累的,急不来,我们无际单片机特训营的6个项目,就是让你去积累产品中最常用到的外设接口、器件、协议、框架、平台。

很多直接可以移植到你的项目,改一改就可以直接用了。

真正把我们这6个项目功能背后的逻辑掌握了,基本能融会贯通做很多产品了。

还有一个很重要的点:不要什么都自己去想怎么做,先找现成的资料、教程、代码

大多数时候找到完全一样的很难,但是可以找类似的,可以给你很多思路和方向。

就比如说我前面那个110报警声,也没现成代码,不知道频率到底怎么变化才能发出110报警声,但是知道改变频率可以改变音调这个思路就够了,剩下的自己不断改频率去测试。

在这个环节,有可能会碰到一些网上又找不到资料的,这种就只能请教同事或者领导。

一般经验丰富的工程师,会把通用的功能代码模块化

什么是通用的功能?

一个功能,会被很多其它功能用到,就叫通用功能。

拿我们主机项目举几个例子:

例子1:LED特效功能,根据不同的功能执行不同的特效,比如主机未连上路由器时,快闪,连上路由器时,慢闪,连上服务器时,常亮。

例子2:喇叭发出110报警声音,主机在离家布防、在家布防、撤防、报警中这些模式下都有触发喇叭发出110报警的需求。

例子3:按键检测功能,在不同的菜单下都需要用到按键短按、短按释放、长按、长按释放、连续长按这几种功能。

我们去做这些功能的时候,一定要有模块化思维,像堆积木一样,把一些通用的功能模块化,方便不同逻辑功能去调用。

通过一个函数、或者回调函数接口,给外部直接调用。

如果每个地方都重复去写这个通用的功能代码,效率就很低,也浪费内存。

这个对于做产品非常重要,直接决定产品开发效率和产品质量。

没一定经验,一般比较难做到,你目前能找到最快的方法就是通过我们项目反复去学,去领悟。

 

第四步:整合代码

每块功能代码完成以后,就开始整合代码实现最后的产品逻辑功能了。

如果你程序模块化程度很高,这一步就很轻松,高效。

如果模块化程度很差,你整合起来的时候就会很痛苦,很多功能会相互冲突,然后又要回去修改模块功能代码。

所以程序架构,在这个阶段会发挥极大的作用。

 

5.测试功能

功能全部做完以后,就要进行系统的测试,比如说电气参数,产品功能等。

一般正规点的公司,复杂点的产品,会有一个测试表格,保证每个功能都能测试到。

样机测试阶段我建议至少测10-20个样机,才能发现问题。

 

 

6.小批量测试

初测没问题,就进入小批量,数量一般100-1000不等,一般是工程师出产测SOP,就是标准化测试流程说明,然后产线的工人按照我们的流程去测试。

 

给TA买糖
共{{data.count}}人
人已赞赏
单片机百科单片机自学指南

51单片机串口无法识别的原因以及解决方案

2023-5-29 15:15:20

单片机百科单片机自学指南

正点原子的mini板和精英板哪个好?

2023-5-30 20:37:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧