stm32达到什么程度叫精通?
◉lstm32达到什么程度叫精通?
不请自来,作为一名长期使用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达到什么程度叫精通?
我们正在招聘精通STM32单片机的高级工程师,但是很遗憾,目前来面试的都很少能够达到我们的标准,目前给到的薪资是25k-30k,坐标北京,下面说一下我认为的精通。
对stm32的内部功能模块非常熟悉,举个例子,如果我们的产品需要对这款芯片进行加密,你可以提供什么方案,需要操作那些寄存器,流程是什么,批量生产是否可行。
可以快速定位问题并提出解决方案,举个简单的例子,研发中的一款板子,串口不输出数据了,如果查找问题,从哪里入手,是否能够从蛛丝马迹中抽丝剥茧,找到本质的问题。
IAP升级是进阶必须掌握的,如何编写bootloader,bootloader和app之间在flash中如何分区,烧写发生错误了,如何处理,flash是否够用,这都需要你考虑
问个简单的问题吧,如果可以回答,欢迎来我们公司试试面试,如何修改stm32程序运行的起始地址。
✒✖stm32达到什么程度叫精通?
精通stm32只能算做是工程师的入门 无论你是用ST还atmel那一家的芯片 都只是提供了一个平台而已 设计最核心的是编程思想和算法 算法是机器的灵魂 就好比人类的思想。 我举个例子 假如你做一台机器人 硬件部分大同小异 但是你想让这个机器人智能化 会思考 会学习就要靠我们人类编写的核心算法了。机器越智能设计人员的水平就越高。
下面我说一下怎么才算精通了stm32
精通stm32你必须要先精通c语言,我碰到很多刚毕业的学生都自称精通c语言,但是一问指针和结构体就不会用了,而指针和结构体的结合使用又是c语言的精髓,学习结构指针有个很好的办法就是去看ST提供的标准库 看里面的寄存器映射,熟练应用了结构体和指针写程序的时候能让你事半功倍。
掌握了c语言然后就是开始学习stm32的操作,最基本的要熟悉的就是stm32的时钟结构 ,io操作 定时器应用 adc dma和各种的通信接口. 就是芯片手册上写到的stm32外设的都要熟练应用 因为stm32可以做的项目太多了 不同的项目可能需要用到不同的外设 例如电池供电的项目要做低功耗 你要考虑stm32的电气参数 stm32L系列的选型。 控制bldc电机需要用到高级定时器等。 只有把这些所有的外设都熟练掌握了 做项目的时候用到那个外设都能轻松应对 这才算是是你精通了stm32。写程序的时候库操作和寄存器操作结合使用效率会更好。
精通了stm32,各种外设没有问题了 剩下的才是真正考验水平的时候。程序框架的设计 程序稳定性 出错机制的设计 算法的优化等 做设计这条路 进无止境!
¢♨stm32达到什么程度叫精通?
作为一个点灯工程师,插一句嘴,个人拙见,见谅勿喷。我的意见是,对于使用者最不必思考精通的意义。
1、STM32是什么。
当然,对于大神而言这是个很愚蠢的问题,但是对于我们使用者而言这是个值得思考的问题。ST每年都会在中国举行峰会,今年的深圳场估计还是马可波罗那。每一次会上一般都有新的片子亮相,同时在不同的展厅也会有不同方向的方案商。当然,我这种人也不是什么厉害的角色,去展会无非就是看看开发板和蹭饭的。峰会过程中会送开发板,自助餐免费,而且挺豪华的,程度上是两个海底捞吧。去年的入场券是在电子发烧友那领取的,大家也可以去关注一下。
STM32峰会
所以,对于我们而言已经是方案下的使用者了。当然,这里不包括一些特殊的厂商。有一次我去一家企业面试,我当时说我测温度用的是LM75和MAX30XX这类的IIC通信IC测。人家说,你这是不行的,我们都是使用ADC+自己的模拟的电路测。
说到这里,只是想说,如果不是在所谓的方案商,那么我们做的工作就是应用型而不是研发型。这里不是说咱们不能做研发,而是时间不允许。真正的工作中一般不是使用一种单片机,我们公司以前有个测量的方案:刚开始是STM32F103+蓝牙模块,后来就直接换成dialog的一款蓝牙SOC(就是小米手环里面使用的主控芯片)。
所以,归根结底一句话:STM32是实现功能的一个工具,我们是使用工具的人。
2、怎样使用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网站搜搜华为、腾讯的需求。
3、怎样评价自己STM32的掌握程度
有些同学在大学的时候就接触单片机了,毕业后也一直从事相关的工作,就像我杰哥和经理,但是也没听说他们精通单片机。当然了,我只是个混饭吃的水平,离这个要求就更远了。
一方面,要知道自己对一门技艺掌握的怎样,自己打分并不合适,可以往自己觉得差不多的岗位投几份简历。其他地方不是很清楚,就深圳而言,单片机的某些岗位学历可以放宽到初中和应届生。就我以前的工作而言(非月薪1W+),似乎也没什么技术含量,刚刚进公司的时候也就是焊接主控IC和一些外设电路。只要用心,这是最重要的一条。如果是有工科类的基础,那就更好了。
真正对某一款单片机达到熟练的使用程度,似乎没有太多的技巧,那就是花时间在项目上,不停地打磨。在这个过程中多干活,少挑刺,做软件编程也可以画画原理图啥的,对加深理解有很大的作用。
如果在工作中,我建议不要频繁跳槽,除非有了新的发展规划。技术的掌握不仅仅是需要时间,还需要一定的环境。每次换一个新的工作环境,一般都需要几个月的时间熟悉新环境。这个时间的花费是值得的,但是如果频率太高那就该注意了,因为不停倒车人会很累还不见得一定能早到。
另一方面,现在有很多的电子论坛网站,一般会有一些活动、比赛。感兴趣的话,大家可以下去了解一下。送开发板、模组比较多的有:电子发烧友、面包板社区。在交流中也能发现自己的优势和短板。
4、总结:
我的意见是,对于使用者最不必思考精通的意义。学习STM32,无非就是兴趣和饭碗。我们要做的就是保护兴趣和饭碗,在时间的打磨下慢慢就熟。如果岗位JD上写着精通,那么要么招总监,那么就是这个岗位JD可能是复制、粘贴的。
►⇒stm32达到什么程度叫精通?
既然谈到了精通,那就要看看精通是什么意思。我们可以在网上搜索一下精通的含义。
我们看到精通的基本解释,就是透彻理解并能熟练掌握,主要包含两个方面,一个是透彻理解,另一个是熟练掌握,简而言之,就是理论和实操都得很牛。那接下来我们就把这两个概念套入到STM32单片机上。
其一就是要透彻理解STM32的理论知识,比如STM32的存储器和总线构架,STM32各个系列芯片所包含的外设功能,像是时钟,GPIO以及复用,中断,DMA,ADC,DAC,各种高级基本通用定时器,PWM,看门狗,FSMC,SDIO,USB,串口,IIC,SPI,CAN,以太网控制器等等,等等吧。你首先得知道STM32这个单片机,能够提供给你什么样的工具,以便来解决你实际项目开发中所遇到的各种问题,正所谓水来土掩,兵来将挡,如果你连手下有什么将领都不知道,那必败无疑。
其二就是熟练掌握STM32的使用,也就是实操部分。理论知识我们可以通过阅读各种书籍,技术文章或是ST官方的芯片手册编程手册等来加深我们对STM32的理解和认识。那么实操部分想要达到熟练的程度,就要具备非常多的实战项目经验了,一个好的将军一定要在真刀真枪的实战中来磨炼,来培养。所以你所具备的实际项目经验是考核你是否真正精通STM32的一个重要依据。
如果说真能达到精通的层次,还是一定要理论和实操,双剑合璧融为一体。其实单片机开发非常考验技术人员逻辑思维能力,以及数据抽象能力。同一个项目,不同的数据结构,不同的算法,最终到达的效果可能有天壤之别。而这种能力,也只有在真刀真枪的实战中才能得到锻炼和提升。
------------------
推荐阅读:
上一篇:炒股有什么技巧吗?
下一篇: 练毛笔字的时候竖笔总是写不直,怎么提高?