首先、掌握单片机的硬件电路设计是基础
单片机电路设计是基础,尽管现在单片机已经进化到SoC的阶段,大部分常用功能模块单片机已经集成了,比如、USB、CAN、LAN、LCD、Camera等等,但是仍然需要搞清楚电路逻辑和代码之间的接口逻辑,比如、模块的地址、如何给模块上电、断电、复位、打开/关闭等。如果你的团队软件和硬件是分开的,那么你的电路设计需要输出一个软硬件接口文档给到软件工程师,通过这个文档,软件工程师能够顺利实现Driver层代码设计。
其次、掌握单片机编程是灵魂
如果说硬件是一个产品的执行机构,那么软件程序就是一个产品的大脑,代表了一个产品的灵魂,我们通常说一个产品不好用不人性化,最多的原因是软件设计方面的问题,硬件也有,但是相比软件方面的设计缺陷要少的多。因此,一个良好的单片机软件设计是一个产品的重中之重。
那么如何STM32软件编程呢?采用倒推来罗列一下:
掌握C语言程序设计,主要用到的是C语言,掌握C语言设计必不可少。
掌握软件编程开发环境的使用方法,比如Keil和IAR的集成开发环境,通常我们代码就是在集成开发环境中编写的,包括代码编写、编译、调试等等。
掌握软件调试方法,可以说软件调试占据了软件开发绝大部分时间。调试器的熟练使用是软件代码排除Bug的利器。通常语法方面的错误编译器在编译阶段可以给我们提示,不符合C语言语法就编译不过去。但是代码编译过并不代表就符合实际项目需求,比如逻辑上是否正确、时序上是否满足要求、指针有没有越界等等问题必须在代码实际运行的时候才会表现出来。Bug的定位分析,通常需要分析软件执行的过程和时序,调试器进行单片跟踪调试就成为必不可少的利器。
调试工具可以使用集成开发环境自带的调试器配合ST出品的ST-link系列进行。
第三、根据实际项目需求进行选型并编程实现项目需求是目的
掌握了硬件和软件设计,可以根据项目需求进行项目开发了。根据项目原始需要说明文档并对原始需求说明文档进行分析,输出可以满足项目需求的初步的设计文档。这其中就包括单片机选型,软件设计等。选择性能过剩的单片机,必然会带来成本的增加。当然这不是定死的条件,通常考虑性能、成本、公司的归一化采购等等问题。
最后、高手进阶永远在路上
高手分为狭义上的高手。
狭义上的高手,比如你就只是想成为,一个harder或者coder,那么你只需要学习硬件电路设计技术即可,比如,EMC/EMC、高速电路设计和电路稳定性等,或者掌握熟练掌握C语言编程技术、编程算法、嵌入式系统编程等等。
广义上的高手会再进一步,了解具体领域的发展动态,比如,机器人、无人机、机器学习等等,并根据领域的发展、新事物的出现补充新的知识。