STM32(所有的MCU都一样)归根结底只是一个工具,能做的事情也很多,如果只谈性能,不考虑稳定性等因素,那么103估计做个导弹控制器,火箭控制器都没有问题,阿波罗登月的主控主频才多少?刚好我有一些资料,是我根据网友给的问题精心整理了一份「stm32的资料从专业入门到高级教程」,
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!按照这个思路看,STM32玩得有多6,也不一定能写好导弹的飞控。所以,问题就反过来了,先应该有项目,然后根据项目的难度反过来看自己学了多少东西。
我做第一个STM32项目的时候,根本没有学过,连用什么东西下载程序都不知道。然后根据项目的需求边学边做,第一个项目做得非常顺利。虽然我没学过STM32,但是之前用51做过项目。所以我对SPI、IIC、UART、定时器、中断非常熟悉,即便是STM32的中断系统和51不一样,我觉得也丝毫不影响我快速的使用定时器中断、外部中断。那么,是因为我之前用过51,所以可以在没学过STM32的情况下做项目吗?也可以这么说,但是我觉得更确切的说法应该是:掌握了单片机编程的基本原理,掌握定时器、中断等单片机基本机制的原理和使用,了解常用的通信接口(SPI、IIC、UART等)特点及其使用。因为51简单,掌握这些内容特别是单片机编程基本原理会更轻松,所以才有先学51再学STM32的说法。
只要具备了上述能力,任何一个新的单片机,都可以拿来即用,无非是看一看它的中断服务函数定义有什么特殊的要求(例如TI的非ARM内核的大都采用中断服务函数注册的方式;51单片机是按中断号;STM32这一类的是采用的特定函数名,等等),其他的资源使用,就直接对着参考手册来就行。现在基本上所有的MCU都有驱动库,也就是STM32的固件库,上手快得很。
前面说到了,STM32只是工具,所以做项目的时候,光靠STM32肯定是不够的。在有多人团队的公司里头做项目,可能只需要写写STM32程序就行了,如果是小公司(或者不在公司),一个人独当一面,那么做项目就不是只写STM32程序了。
撇开PCB不谈,总得有器件选型吧?涉及到多个设备要通信的,需要做通信协议吧?自订协议还是用标准协议?标准协议用硬件协议栈?还是开源代码的软件协议栈?这一些工作应该可以归为项目方案设计了。
选型的过程中,以ADC为例,要高速的,还是高精度的?逐次比较的?还是双积分的?还是sigma-delta的?选8位的?还是10位还是12位16位?单端还是双端?多少个通道?同步采样?SPI通信还是IIC通信?还是并口?价格考虑什么区间的?有没有国产化的要求?采购渠道是什么?等等。这其中的工作,虽谈不上难,但是也很花时间,也有学问。这些内容也都是要做项目所必须的。