记得刚出来工作的时候一直从事stc 51单片机产品的开发,后来接触了恩智浦单片机。51到ARM的过渡确实让我头疼了一段时间,不过还好都是通过配置寄存器开发的。至少开发模式是一
记得刚出来工作的时候一直从事stc 51单片机产品的开发,后来接触了恩智浦单片机。
51到ARM的过渡确实让我头疼了一段时间,不过还好都是通过配置寄存器开发的。至少开发模式是一样的,就是要花时间看数据表配置。
领导稍后要策划一款新产品,让我配合硬件工程师选一款单片机。
当时我只是在改变别人代码的水平。不知道选什么,又不敢让领导知道,只好偷偷咨询大同事。
他在这家公司工作了3、4年,对产品很熟悉。他说可以用stm32单片机来做。
就是在那个时候,我正式接触到了单片机。一看就是8、9年前的事了。
不过那时候教程各方面都没有现在完善,所以我在网上买了开发板,上面没有视频教程。
因为我有单片机基础,所以我觉得有各个外设的使用套路就够了。
没想到,打开那些外围套路,一脸茫然。这是什么鬼东西?如何用GPIO点亮一盏灯,好复杂。
需要加载库文件,定义结构,打开时钟。。。。。
发展模式和我之前的完全不一样。经过研究,我意识到stm32可以用官网提供的固件库直接开发。
也就是说,通过直接调用它们的函数,你可以使用stm32的每一个外设,不管寄存器是如何配置的。
如果你深入到固件库中的代码,你会发现还有一些代码是用汇编和C语言写的。
新手如果没有经验,很容易走弯路。最近我们无量单片机编程的一个学员是这样的。
他总喜欢钻进死胡同,什么都想弄明白。他觉得如果不了解库函数,就不知道以后在产品开发中如何解决问题。
其实这种做法有利有弊。
好处是可以更深入的理解。
缺点是他钻的时机不对。当你的编程水平还不够,产品经验还不够的时候,一味的钻研别人几年沉淀下来的精华,显然是不现实的。钻研下去,真的会是天才!
现实中的人大多是普通人,要按照正确的方法去学习,这样才能学的最快。
如果你不够优秀,只会遍体鳞伤。越学越迷茫,越焦虑,最后放弃。
学习STM32的重点应该是学习如何使用他们的固件库,先熟悉这个库。
即使我在这个行业10年了,你让我在没有套路的帮助下,通过寄存器调整固件库,配置外设,我也做不到。
但即使我做不到,依然不妨碍我用stm32单片机做产品。
那么,你知道作为一名工程师有什么意义吗?
重点根本不是单片机。单片机只是一个工具。我们的第一步是能够使用它,而不是深究它为什么这么常用来打开外设。
如果你去钻这样的死胡同,光是单片机stm32就够你学5-10年了。
在开发实际产品程序的时候,前期需要几天的时间打开单片机的外设。
然后剩下的时间用来写产品功能逻辑部分的代码,这是核心。
尤其是像今年,stm32的价格突然暴涨10倍,有些公司会用其他一些芯片代替。
试想一下,如果你把所有的精力都放在学习单片机上,你的开发周期有多长,早就被你的老板干掉了。
无论学习任何单片机,核心在于你的编程水平和思维。
就像stm32一样,他们的固件库使用了大量的指针、结构和枚举。
这个时候,即使你没有学过stm32,但是你熟悉C语言中的指针、结构、枚举,你大概也能理解他们固件库的底层逻辑。
如果你不熟悉C语言的知识,或者找不到好的实用教程,可以看我的视频教程。这三个知识点我有专门的讲解。