在STM32之前,都是老大头51,带着它的“小弟们” MSP430、AVR、PIC在单片机界呼风唤雨。
那个时候,市场上遍布8位机,大学教材用51入门,个人、企业学单片机基本上也都在用51。
虽然AVR也有一些8位机市场,但与stc带领下的51单片机是完全不能相比的。
当然,这个时候也有16位机的msp430,其他厂家单片机还有pic,高端嵌入式处理器等市场有arm7、arm9等。
这个时期的单片机市场是百花齐放、百家争鸣,但总体来说,还是势均力敌、一片祥和的。
那么,这个局势是从什么时候开始打破的呢?这还得从物联网的崛起说起。
当时,物联网(Internet of Things,IoT)逐步进入人们的视野范围。随着它的发展,嵌入式领域对于高性能处理器的需求呈现爆发式增长。
虽然8位CISC(复杂指令)架构内核8051占据了半壁江山,但奈何其性能低下,寻址范围受限,已经难以适应更多的新兴应用领域。
而32位架构微处理器内核凭借其极佳的执行效能,不仅能满足物联网对数据处理能力的要求,还能兼顾物联网的低功耗和高性能要求,斩获物联网市场的独家宠爱。
在32位架构微处理器中,属ARM公司推出了面向各类嵌入式应用的微控制器核Cortex-M内核受到市场青睐,Cortex-M之于32位MCU就如同8051之于8位MCU。
而正是Cortex-M的出现,让ST公司看到了这个内核的强大之处——利用该内核设计了大放光芒的STM32,打破了曾经的单片机局面。
如今,我们往回看那段历史,会发现一切改变都由那时发生——
从2007年6月11日推出第一代STM32产品——Cortex-M MCU STM32F1开始,单片机市场迎来了STM32新星,32位MCU浪潮,如期而至。
此后,芝麻开花节节高,STM32成功的故事也一直在延续。
ST公司陆续在每一年都基于新的内核或者新的技术领域有所突破,发布超过了19个STM32 产品系列,包括一个MPU产品线,生产工艺也从180nm不断进阶到110nm、90nm和40nm。
例如:
“一只南美洲亚马逊流域热带雨林中的蝴蝶,偶尔扇动几下翅膀,可以在两周以后引起美国德克萨斯州的一场龙卷风。”
STM32这只小蝴蝶带来的改变效果也很明显。
2007年ST公司的通用MCU全球排名还只是第11位,2015年便上升到第3位,2018年上升到第2位,2018年则在中国供应商的排名中ST公司一举拿下第一的高地,此后数年,ST的地位几乎无人撼动。
入坑STM32后,我们应该如何学习?
如今,STM32堪称爆火,并且潜力无穷。所以,有很多人都在学STM32。
但STM32对入门者可能不是特别友好,因为知识很多,但是对于有一定开发经验的人来说,就是一把好兵器,它能帮你大大缩短开发周期。
那应该如何入坑STM32呢?
(1) 根据时间表定时定量学习
大学时期,都有实验室的学长学姐带着入门,安排任务。
比如,基本任务是一周内学完搭好环境、熟悉调试软件,结合《STM32Fxxx参考手册》、《STM32固件库使用手册》和光盘视频,实现基本篇的GPIO应用。
(2) 举一反三,并通过阶段任务检查学习效果
在学习例程时,可以尝试修改该例程的外设配置,达到举一反三的效果。
每一周,学长学姐会根据你的学习进度,安排给你一个阶段任务,用来检查你的学习效果。
如果你是自学,那么可以根据网上教程和各大资源网站上的“STM32入门小项目合集”,主动给自己找一个小项目,把它实现出来。
这里我推荐正点原子的资源,毕竟每次看视频时的片头曲“我的未来不是梦”让我对STM32充满激情,当然野火、小苗、普中也不错~
(3) 基本外设、功能会用就行,后期需要什么再去针对性地学
按部就班地把STM32知识从头到尾系统性地学习完,固然很好。但是,你要知道学习单片机只是为了解决问题,我们只要在遇到问题时,能够通过STM32解决就行。
因此,当你把基本外设、功能都差不多掌握了,程序能跑起来,并且也知道哪里可以修改、修改成什么就已经基本入门了。
此后,你可以通过一些大大小小项目,巩固理解和探索新功能,你的经验也随之增加。
(4) 学好C语言,可以学着画PCB制板、焊接
软件和硬件都要两手抓。C语言对于STM32的学习至关重要,C语言不好,还跑什么代码?学会画板子、焊板子,这样有什么需求,都可以自己添加。
当然,上面的建议都是给0基础的STM32入门者,若是你有一定基础,那当然是对症下,哪里不会补哪里。
“学海无涯、永无止境”,更何况是每一年都在推陈出新的STM32。
事实上,STM32 的开发方式已经发生了很大的变化。
比如:
而STM32Cube 生态系统已经完全抛弃了早期的标准外设库,STM32 系列 MCU 都提供 HAL固件库以及其他一些扩展库。
STM32Cube 生态系统的两个核心软件是STM32CubeMX 和STM32CubeIDE,且都是由 ST 官方免费提供的。
使用 STM32CubeMX 可以进行 MCU 的系统功能和外设图形化配置,可以生成STM32CubeIDE 项目框架代码,包括系统初始化代码和已配置外设的初始化代码。
如果用户想在生成的 STM32CubeIDE 初始项目的基础上添加自己的应用程序代码只需把用户代码写在代码沙箱段内,就可以在 STM32CubeMX 中修改 MCU 设置,重新生成代码,而不会影响用户已经添加的程序代码。
由此看来,使用STM32CubeMX 和 TrueSTUDIO 进行STM32 开发是一个良好的组合方式!
转贴自网络