欢迎您光临五金加工厂,如有问题请及时联系我们。

stm32达到什么程度叫精通?

作者:五金加工
文章来源:本站

  

stm32达到什么程度叫精通?

  

stm32达到什么程度叫精通?

  

stm32达到什么程度叫精通?

  stm32达到什么程度叫精通?

  不请自来,作为一名长期使用STM32单片机进行开发的老司机,来回答一下这个问题。

  单片机电路设计是基础,尽管现在单片机已经进化到SoC的阶段,大部分常用功能模块单片机已经集成了,比如、USB、CAN、LAN、LCD、Camera等等,但是仍然需要搞清楚电路逻辑和代码之间的接口逻辑,比如、模块的地址、如何给模块上电、断电、复位、打开/关闭等。如果你的团队软件和硬件是分开的,那么你的电路设计需要输出一个软硬件接口文档给到软件工程师,通过这个文档,软件工程师能够顺利实现Driver层代码设计。

  如果说硬件是一个产品的执行机构,那么软件程序就是一个产品的大脑,代表了一个产品的灵魂,我们通常说一个产品不好用不人性化,最多的原因是软件设计方面的问题,硬件也有,但是相比软件方面的设计缺陷要少的多。因此,一个良好的单片机软件设计是一个产品的重中之重。

  那么如何STM32软件编程呢?采用倒推来罗列一下:

  掌握C语言程序设计,主要用到的是C语言,掌握C语言设计必不可少。

  掌握软件编程开发环境的使用方法,比如Keil和IAR的集成开发环境,通常我们代码就是在集成开发环境中编写的,包括代码编写、编译、调试等等。

  掌握软件调试方法,可以说软件调试占据了软件开发绝大部分时间。调试器的熟练使用是软件代码排除Bug的利器。通常语法方面的错误编译器在编译阶段可以给我们提示,不符合C语言语法就编译不过去。但是代码编译过并不代表就符合实际项目需求,比如逻辑上是否正确、时序上是否满足要求、指针有没有越界等等问题必须在代码实际运行的时候才会表现出来。Bug的定位分析,通常需要分析软件执行的过程和时序,调试器进行单片跟踪调试就成为必不可少的利器。

  调试工具可以使用集成开发环境自带的调试器配合ST出品的ST-link系列进行。

  掌握了硬件和软件设计,可以根据项目需求进行项目开发了。根据项目原始需要说明文档并对原始需求说明文档进行分析,输出可以满足项目需求的初步的设计文档。这其中就包括单片机选型,软件设计等。选择性能过剩的单片机,必然会带来成本的增加。当然这不是定死的条件,通常考虑性能、成本、公司的归一化采购等等问题。

  高手分为狭义上的高手。

  狭义上的高手,比如你就只是想成为,一个harder或者coder,那么你只需要学习硬件电路设计技术即可,比如,EMC/EMC、高速电路设计和电路稳定性等,或者掌握熟练掌握C语言编程技术、编程算法、嵌入式系统编程等等。

  广义上的高手会再进一步,了解具体领域的发展动态,比如,机器人、无人机、机器学习等等,并根据领域的发展、新事物的出现补充新的知识。

  你想成为哪种高手呢,欢迎留言。

  我们正在招聘精通STM32单片机的高级工程师,但是很遗憾,目前来面试的都很少能够达到我们的标准,目前给到的薪资是25k-30k,坐标北京,下面说一下我认为的精通。

  对stm32的内部功能模块非常熟悉,举个例子,如果我们的产品需要对这款芯片进行加密,你可以提供什么方案,需要操作那些寄存器,流程是什么,批量生产是否可行。

  可以快速定位问题并提出解决方案,举个简单的例子,研发中的一款板子,串口不输出数据了,如果查找问题,从哪里入手,是否能够从蛛丝马迹中抽丝剥茧,找到本质的问题。

  IAP升级是进阶必须掌握的,如何编写bootloader,bootloader和app之间在flash中如何分区,烧写发生错误了,如何处理,flash是否够用,这都需要你考虑

  问个简单的问题吧,如果可以回答,欢迎来我们公司试试面试,如何修改stm32程序运行的起始地址。

  精通stm32只能算做是工程师的入门 无论你是用ST还atmel那一家的芯片 都只是提供了一个平台而已 设计最核心的是编程思想和算法 算法是机器的灵魂 就好比人类的思想。 我举个例子 假如你做一台机器人 硬件部分大同小异 但是你想让这个机器人智能化 会思考 会学习就要靠我们人类编写的核心算法了。机器越智能设计人员的水平就越高。

  下面我说一下怎么才算精通了stm32

  精通stm32你必须要先精通c语言,我碰到很多刚毕业的学生都自称精通c语言,但是一问指针和结构体就不会用了,而指针和结构体的结合使用又是c语言的精髓,学习结构指针有个很好的办法就是去看ST提供的标准库 看里面的寄存器映射,熟练应用了结构体和指针写程序的时候能让你事半功倍。

  掌握了c语言然后就是开始学习stm32的操作,最基本的要熟悉的就是stm32的时钟结构 ,io操作 定时器应用 adc dma和各种的通信接口. 就是芯片手册上写到的stm32外设的都要熟练应用 因为stm32可以做的项目太多了 不同的项目可能需要用到不同的外设 例如电池供电的项目要做低功耗 你要考虑stm32的电气参数 stm32L系列的选型。 控制bldc电机需要用到高级定时器等。 只有把这些所有的外设都熟练掌握了 做项目的时候用到那个外设都能轻松应对 这才算是是你精通了stm32。写程序的时候库操作和寄存器操作结合使用效率会更好。

  精通了stm32,各种外设没有问题了 剩下的才是真正考验水平的时候。程序框架的设计 程序稳定性 出错机制的设计 算法的优化等 做设计这条路 进无止境!

  ·

  作为一个点灯工程师,插一句嘴,个人拙见,见谅勿喷。我的意见是,对于使用者最不必思考精通的意义。

  当然,对于大神而言这是个很愚蠢的问题,但是对于我们使用者而言这是个值得思考的问题。ST每年都会在中国举行峰会,今年的深圳场估计还是马可波罗那。每一次会上一般都有新的片子亮相,同时在不同的展厅也会有不同方向的方案商。当然,我这种人也不是什么厉害的角色,去展会无非就是看看开发板和蹭饭的。峰会过程中会送开发板,自助餐免费,而且挺豪华的,程度上是两个海底捞吧。去年的入场券是在电子发烧友那领取的,大家也可以去关注一下。

  STM32峰会

  所以,对于我们而言已经是方案下的使用者了。当然,这里不包括一些特殊的厂商。有一次我去一家企业面试,我当时说我测温度用的是LM75和MAX30XX这类的IIC通信IC测。人家说,你这是不行的,我们都是使用ADC+自己的模拟的电路测。

  说到这里,只是想说,如果不是在所谓的方案商,那么我们做的工作就是应用型而不是研发型。这里不是说咱们不能做研发,而是时间不允许。真正的工作中一般不是使用一种单片机,我们公司以前有个测量的方案:刚开始是STM32F103+蓝牙模块,后来就直接换成dialog的一款蓝牙SOC(就是小米手环里面使用的主控芯片)。

  所以,归根结底一句话:STM32是实现功能的一个工具,我们是使用工具的人。

  这个问题,似乎不是问题。其实,它是。

  一方面,就以现在最普通的分类来看,在使用STM32上就会有电子工程师嵌入式软件工程师(STM32)两个大类。因为前者是软硬件都需要负责的,也就是说不同的系统里STM32的单片机原理图、PCB图都需要涉及,甚至边上的模拟电路也逃不掉。STM32也只是需要的技能之一,其他的东西也缺一不可,四个脚的桌子少一个脚都不稳。

  反正在我接触到的工程师里面,比较厉害的我们杰哥18转到硬件工程师了,我现在的经理也不怎么插手板上的模拟电路。我所在的公司不是特别大,安卓、iso、结构,也就十来个。在这样的公司里,分工已经很明显了。

  以前面试过的一家医美产品公司,嵌入式软件工程师(STM32方面)单单就管驱动为主,还是就是一个RTOS。到网站上一搜索应聘需求,要求有几年的工作经验,会C语言(当然,有些岗位JD就喜欢写精通C语言),然后就是外设USB、ADC、Timer、IIC、SPI的应用,附加一些LWIP、ucos、freertos的要求。简化为,能写驱动,会操作RTOS,应该是能够找到一份工作了。

  单板

  另一方面,除了传统的单片机(STM32F1、F4、H7),ST还开始出一些能够跑Linux的板,那么这里的Linux是不是也该囊括进STM32?这只是个玩笑啊,大家不必当真。因为我是不会徒手写Linux下的UBOOT的,心理上不会,能力上也不会。在这里,如果会移植uboot、Linux kernel 也是能混口饭吃的,所以并不是人人都要精通。

  如果是信号采集,那就只想着ADC、Timer这些外设+外部模拟电路怎么用;如果是运动控制,那就应该是另外的内容了。当然,一些PID的理论可能也是必修。

  同样,从应用的角度出发,以平均水平来说,STM32的岗位薪资天花板比Linux下的驱动、uboot移植工作的薪资低一些。从业方向上也要窄一些,一些通信、半导体、互联网企业一般不招单片机,在这里可以在51job网站搜搜华为、腾讯的需求。

  有些同学在大学的时候就接触单片机了,毕业后也一直从事相关的工作,就像我杰哥和经理,但是也没听说他们精通单片机。当然了,我只是个混饭吃的水平,离这个要求就更远了。

  一方面,要知道自己对一门技艺掌握的怎样,自己打分并不合适,可以往自己觉得差不多的岗位投几份简历。其他地方不是很清楚,就深圳而言,单片机的某些岗位学历可以放宽到初中和应届生。就我以前的工作而言(非月薪1W+),似乎也没什么技术含量,刚刚进公司的时候也就是焊接主控IC和一些外设电路。只要用心,这是最重要的一条。如果是有工科类的基础,那就更好了。

  真正对某一款单片机达到熟练的使用程度,似乎没有太多的技巧,那就是花时间在项目上,不停地打磨。在这个过程中多干活,少挑刺,做软件编程也可以画画原理图啥的,对加深理解有很大的作用。

  如果在工作中,我建议不要频繁跳槽,除非有了新的发展规划。技术的掌握不仅仅是需要时间,还需要一定的环境。每次换一个新的工作环境,一般都需要几个月的时间熟悉新环境。这个时间的花费是值得的,但是如果频率太高那就该注意了,因为不停倒车人会很累还不见得一定能早到。

  另一方面,现在有很多的电子论坛网站,一般会有一些活动、比赛。感兴趣的话,大家可以下去了解一下。送开发板、模组比较多的有:电子发烧友、面包板社区。在交流中也能发现自己的优势和短板。

  我的意见是,对于使用者最不必思考精通的意义。学习STM32,无非就是兴趣饭碗。我们要做的就是保护兴趣和饭碗,在时间的打磨下慢慢就熟。如果岗位JD上写着精通,那么要么招总监,那么就是这个岗位JD可能是复制、粘贴的。

  精通stm32这个描述是有明显逻辑问题的。对于这个问题分学生简历或者工作简历来说有那么一点点意义。

  stm32作为一款芯片代表的范畴和意义是很大的。第一层,stm32作为意法半导体的主流产品,产品本身包含arm指令,封装,开发工具设计等相关产业链。所以第一层次的精通是从芯片设计和应用本身,这是对于芯片开发厂商的研发人员来说。

  第二层,很多公司利用stm32做产品应用对应用的熟练程度和方向是不一样的。比如,有用stm32做开发板的厂家,移植操作系统和每个外设的例程是重点工作,大而全但不精。有些厂家仅仅用stm32来做串口服务器,那对于串口这个外设本身的应用包括中断,查询当时的应用开发,软件架构的设计等等,侧重点是不一样的。

  因此,对于精通stm32这个宏大的话题来说,对于学生简历侧重对基础知识比如c 语言的了解和外设的简单应用。对于从业人员精通的概念应该为用stm32做了多少项目,对于技术应用的理解多于对stm32本身。说到底stm32就是个单片机,属于嵌入式开发范畴。

来源:文章来源于网络,如有侵权请联系我们删除。本文由五金加工编辑,欢迎分享本文,转载请保留出处和链接!