stm32达到什么程度叫精通?

雍保国



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

首先、掌握单片机的硬件电路设计是基础

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


其次、掌握单片机编程是灵魂

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

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

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

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

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

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

第三、根据实际项目需求进行选型并编程实现项目需求是目的

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

最后、高手进阶永远在路上

高手分为狭义上的高手。

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

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


跟我学单片机开发


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

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

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

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

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




用户6219587289


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

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

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

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


软悟漫谈


作为曾经搞过一段时间STM32板子的来答一下。

首先,精通就好像我们高考时大纲里面对各个知识点要求的等级一样,是一个相对的描述性词语。精通可以是对于底层的原理以及STM32指令架构等内容很熟悉,理论上很精通。也可以是在应用上很精通,当然这个 就很实用主义了。比如使用STM32完成过很多复杂的项目,使用起来得心应手。

其次,STM 32也分为好多版型,但是基本的指令架构还是相通的,个人建议先从小的项目出发,根据项目的需求,逐个学习基础知识点。当一个人可以独立完成一些项目的时候,感兴趣的话,可以深究一下指令架构以及底层的汇编语言的知识,这样也就有一定的深度,达到了熟练应用的程度。

最后,相信山外有山,人外有人。永远都有人比我们更厉害,保持一个求知若渴的心态,不断学习,终有一天会达到别人眼中的精通的。

以上为个人的拙见,欢迎交流。


GeniusYC家的自留地


单片机,只要能熟练使用寄存器就可以叫精通。


分享到:


相關文章: