一文看懂51单片机和stm32区别,怎么用怎么学怎么选
对于初学单片机的童鞋而言,开始会有这样的疑问?到底选哪个怎么选呢?
1、工业控制51优于stm?
2、没区别,51就是个入门级,不过也有贵的,我用的就是51,用的还可以?
3、偏激,纯是在吹stm32,开发小的工控系统还是51可靠,实时性好?
51单片机和stm32区别:系统资源不同、开发环境不同、操作系统不同、后期维护不同、内核不同、开发模式不同、程序架构不同、难度不同、定位不同。
系统资源不同:51单片机是入门级的单片微型计算机,所有方面的资源都不及stm32,例如主频率、ROM、RAM、IO端口和外围资源。
开发环境不同:51单片机和stm32一般可以在Keil下开发,但stm32有更多的选择,可以在Linux下开发,也可以在windows Esplise下开发,甚至直接以VScode+插件方式开发。
操作系统不同:51单片机不支持OS,而stm32支持各种主流OS,开发更容易,利用系统可以实现各种场合的应用,51单片机由于没有操作系统,在开发上存在一定的障碍,在某些情况下要牺牲部分功能来达到整体功能的协调运行。
后期维护不同:stm32资源充足,可以编写bootloader程序完成随后的系统升级工作,不用拆装机器就可以完成固件升级,而51单片机是不可能的。
内核不同:51单片机是Intel8051的内核架构,而stm32有很多内核版本,比如Cortex-M1/M2/M3/M4/M7,常用的stm32F1系列就是Cortex-M3的内核。
开发模式不同:51单片机直接操作寄存器来使用外围设备,而stm32直接调用库函数来使用外围设备,因此比51开发更有效。
程序架构不同:相比较stm32,对于资源紧张的51单片机,在产品开发时一般以功能实现为中心,不考虑程序架构的扩展性和可移植性,这是因为ROM和RAM不允许。
难度不同:stm32可以通过调整程序库来使用芯片外围设备,但开发难度比51单片机难得多,因为Stm32资源丰富,有很多相关的技术方面。
定位不同:51单片机除了偏向低端产品外,开发也接近底层,而stm32制造商的定位是帮助工程师迅速制作产品。
当然他们还有四点不同的地方:
第一点,首先ST厂商提供了非常丰富的函数库,可以直接使用库函数。而51单片机没有库函数。因此在程序编写的方便程度上STM32要更加的省时省力。我们直接调取ST的库函数中定义的函数就可以省去我们自己编写对应功能的时间,更别便捷。
第二点,普通的51单片机的运行速度较慢,特别是双数据指针方面。而STM32中Cortex-M4系列的单片机最高工作频率就可达168MHz。工作效率高很多,计算速度更快。
第三点,STM32的内部资源(寄存器和外设功能)较普通的51单片机都要多,基本上接近于计算机的CPU,所以在程序编写上能有更多的选择。
第四点,STM32是基于ARM Cortex M 处理器内核的 32位闪存微控制器,为MCU用户开辟了一个全新的自由开发空间,并提供了各种易于上手的软硬件辅助工具。STM32 MCU实时性、数字信号处理、低功耗、低电压于一身,同时保持高集成度和开发简易的特点。
其实两个都有自己的优缺点,看使用场景,需要结合自己的使用场景进行选择。