之前无际在网上看了一些老工程师给初学者的一些建议。
其中一个就是新手可不可以直接跳过51单片机学习stm32。
很多老鸟教唆初学者说51已经过时了,建议直接学stm32单片机。
如果新手信了他的邪,能学会才怪!
当他说出51过时的时候,我就知道这个人是个外行。
所以在信息爆炸的时代,如何学会去甄别哪些是对的,哪些是错的特别重要,方向不对毁一生!
我们无际单片机编程团队一直提倡初学者从51开始学习,目的在于让大家能对单片机的原理有一个深入的理解。
51单片机都是通过配置寄存器来控制外设,实际上目前大多数单片机都是这样做的,区别就是寄存器不一样。
当我们懂了其中一种以后,其他的都是大同小异。
一、51和stm32单片机的区别
51单片机
STM32单片机
51和stm32的区别还是挺大的,51是属于低端单片机,stm32算是中高端单片机了,他们面向的产品也不一样,真要区别,一篇文章远远不够。
这里只说对我们开发息息相关的。
1.内核
51是Intel8051的内核架构,而STM32有Cortex-M1/M2/M3/M4/M7这么多内核版本,像我们常用的STM32F1系列就是Cortex-M3的内核。
2.资源
51是入门级单片机,各方面资源都不如stm32,比如说主频、ROM、RAM、IO口、外设资源。
3.开发模式不同
51是直接操作寄存器使用外设,而stm32是直接调用库函数使用外设,相对51开发更加效率。
4.操作系统
51不能跑实时操作系统,而stm32可以跑主流的RTOS。
5.后期维护
51不能升级程序,而stm32可以通过编写bootloader程序来完成后续产品程序升级,如果软件有bug,不需要客户退回,直接升级程序解决。
6.开发环境
51和stm32虽然都可以用keil开发,但是版本不同,而stm32的开发环境也比较多元化,主流的就是keil或者iar。
7.程序架构
如果是资源很紧张的51单片机,产品开发时一般以功能实现为主,不会考虑程序架构可扩展性和可移植性,因为ROM和RAM不允许。
8.难易度
Stm32虽然是通过调库就能把芯片外设用起来,但是开发难度会比51难很多,因为stm32的资源丰富,涉及的技术点就多。
所以,两者厂家对芯片的定位不同,51除了偏向低端产品以外,开发也更接近底层。
而stm32厂家的定位是帮助工程师快速做出产品。
基于这些特点,如果你刚开始就直接去stm32的话,会有很多基础知识的缺失。
导致你学起来比较吃力,很多东西也掌握不透,在学习的过程中会很痛苦,觉得这玩意太难了。
一般有51基础,并且做过一些小项目,学习stm32会快很多。
也不用系统地把所有外设都学习一遍,最好的方法就是通过项目去学习,项目用到什么外设,就相应去看这个外设怎么开起来。
基本上一个项目下来,你就能掌握stm32了,我当初就是这样学会stm32的,我也没去看任何视频教程。
相对教程,我更喜欢找例程,这样更节约时间,有基础的话通过例程你很快就能猜出来改哪些地方代码会有什么样的结果。
其实归根到底就是把它当做一个工具熟悉而已。