草庐IT

stm32 单片机主要优点有哪些?

无际单片机编程 2023-07-01 原文

STM32我用了近10年了,用它做过的项目至少也有10几个。

可以说是我用过单片机里,最省心最好用的,不会有乱七八糟的问题。

我感觉STM32这几年这么热门,开发板至少占了一半功劳。

不过,本质问题还是芯片也受到了市场和企业认可,毕竟商业都是逐利的。

下面聊下STM32到底有哪些优点?

  1. 易于学习和使用

STM32很早之前就有了,资料各方面都很丰富,在加上市面上开发板和教程的加持,导致大家学习STM32的门槛和成本都大大降低。

我觉得ST从开始的定位就很成功,推出固件库,让工程师直接调库就能把单片机用起来,免去繁琐的寄存器配置流程,极大缩短了产品开发周期。

印象中,ST是第一个走这种开发模式的,我第一次接触32位机是nxp的单片机,需要自己配置寄存器使用外设,光是这个环节都浪费了大量时间。

虽然STM32外设多,比较复杂,但是用熟了以后感觉比51还简单。

2. 强大的处理能力

STM32单片机的内核基于ARMCortex-M,具有高性能、低功耗的特点,搭载高速的处理器和内存,能够轻松处理复杂的应用。

3. 丰富的外设接口

STM32 单片机支持多种外设接口和通信协议,例如 USB、CAN、SPI、I2C 等,方便与其他设备进行通信。

4. 易于调试和测试

STM32 单片机配备了多种调试和测试接口,如 SWD 和 JTAG 接口,方便开发者进行调试和测试,这些调试工具都很便宜,有些单片机下载和仿真器都上千。

还有就是STM32很多都是用keil开发工具,虽然现在可能有更方便好用的,但是对于老一辈的工程师来说,还是Keil最亲切顺手。

之前用过一些单片机用eclipse配合插件的方式去开发,光搭建开发环境都搞死人。

5. 更丰富的开发生态

STM32有许多开源的开发工具和库,如CMSIS、HAL库等,可以加快开发时间和减少开发成本。

6. 广泛的应用领域

STM32 单片机广泛应用于各种领域,如消费电子、工业控制、汽车电子、医疗设备等等,具有良好的市场前景和潜力。

还有一点很多工程师可能忽略了,就是ST官网有提供不同行业的整体解决方案。

从单片机到外围电路的芯片,官网都有建议的选型,不过都是推他们自家的产品。

如果你确定用ST的单片机,但是不知道选哪个型号的话,可以参考这个。

7. 成本效益

STM32单片机的早期的价格相对较低,能够提供高性价比的解决方案,适合各种应用场景,不过后面因为一些原因价格大幅上涨,现在也在慢慢回落。

8.封装类型丰富

STM32系列微控制器的封装非常丰富,适用于不同的应用需求和制造工艺。

在STM32系列中,常见的封装类型包括以下几种:

LQFP (Low profile Quad Flat Package): 该封装常见于STM32的低端型号,引脚比较少,适合使用手工焊接和小尺寸的PCB。

BGA (Ball Grid Array): 该封装采用球形引脚排列方式,具有高密度和可靠性,适合高端应用和小尺寸PCB。

TQFP (Thin Quad Flat Package): 该封装采用扁平引脚排列方式,相对于LQFP来说体积更小、高度更低。

LFBGA (Low profile Fine-pitch Ball GridArray): 该封装采用较小的引脚间距,适合高密度应用和小尺寸PCB。

此外,STM32还提供了QFP、LGA、WLCSP、UFQFPN等多种封装形式,可以满足不同应用需求。

在选择封装类型时,需要根据具体的应用场景、生产工艺和成本等综合因素进行考虑。

下面聊下,我们在产品研发前,单片机及周边芯片方案选型时要考虑的问题:

产品功能要求:需要根据硬件工程师设计的电路来规划需要用到的单片机外设,然后对比你选择的单片机资源是否满足,比如时钟频率,Flash,RAM,SPI,IIC,USART,PWM,ADC等等。

尺寸要求:根据产品尺寸选择单片机的封装,产品尺寸要求越小,封装也要选小的。

功耗要求:如果产品平时是电池供电,那就要选择低功耗系列的单片机,比如STM32L系列。

成本要求:在满足产品功能的前提下选择最便宜的芯片。

开发周期要求:选择时尽量选择资料/教程丰富的单片机,能快速上手意味着开发周期能缩短。

交货周期要求:如果产品后期量大,需要考虑到代理商/原厂交货周期的问题。

综合以上几点,你会发现,STM32在早期满足了很多点,并且性价比高。

最后彩蛋时间,最近有粉丝问我怎么提升单片机编程思维和水平

我做了开发10几年,累计做过几十个项目,我针对这些项目共性功能,比如任务创建、管理、队列算法、LED特效、按键扫描等,写了一个标准程序框架。

这个架构,我在2019年也录了教程,我做新项目时,直接套用这个架构去写,效率直接起飞。

不出意外的话,应该是你目前能看到最实用、最硬核、最系统的干货。

现在限时放出来给大家看,后期可能会删,这套架构已申请版权,非学员仅供学习使用

可以点击下方⬇️卡片看文章开头领取

单片机入门到高级开挂学习路径(附教程+工具)

单片机入门到高级开挂学习路径(附教程+工具)

单片机入门到高级开挂学习路径(附教程+工具)

或者可以找「无际单片机」全网同名的。

下面是更多无际原创个人成长经历、行业经验、技术干货

最近在学C语言,非常痛苦,怎么办?

C语言开发单片机为什么大多数都采用全局变量的形式?

单片机怎么实现模块化编程?思维+实例+系统教程(实用程度令人发指)

c语言回调函数的使用及实际作用详解

spi时序图怎么分析,怎么看懂spi时序图

有关stm32 单片机主要优点有哪些?的更多相关文章

  1. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  2. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  3. C51单片机——实现用独立按键控制LED亮灭(调用函数篇) - 2

    说在前面这部分我本来是合为一篇来写的,因为目的是一样的,都是通过独立按键来控制LED闪灭本质上是起到开关的作用,即调用函数和中断函数。但是写一篇太累了,我还是决定分为两篇写,这篇是调用函数篇。在本篇中你主要看到这些东西!!!1.调用函数的方法(主要讲语法和格式)2.独立按键如何控制LED亮灭3.程序中的一些细节(软件消抖等)1.调用函数的方法思路还是比较清晰地,就是通过按下按键来控制LED闪灭,即每按下一次,LED取反一次。重要的是,把按键与LED联系在一起。我打算用K1来作为开关,看了一下开发板原理图,K1连接的是单片机的P31口,当按下K1时,P31是与GND相连的,也就是说,当我按下去时

  4. ruby-on-rails - 您希望看到哪些 Rails 插件? - 2

    您认为可以作为插件很好地存在于您的Rails应用程序中必须实现的哪些行为?您过去曾搜索过哪些插件功能但找不到?哪些现有的Rails插件可以改进或扩展,如何改进或扩展? 最佳答案 我希望在管理界面中看到一个引擎插件,它提供了应用程序中所有模型的仪表板摘要,以及可配置的事件图表。 关于ruby-on-rails-您希望看到哪些Rails插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

  5. ruby - 实现k最近邻需要哪些数据? - 2

    我目前有一个reddit克隆类型的网站。我正在尝试根据我的用户之前喜欢的帖子推荐帖子。看起来K最近邻或k均值是执行此操作的最佳方法。我似乎无法理解如何实际实现它。我看过一些数学公式(例如k表示维基百科页面),但它们对我来说并没有真正意义。有人可以推荐一些伪代码,或者可以查看的地方,以便我更好地了解如何执行此操作吗? 最佳答案 K最近邻(又名KNN)是一种分类算法。基本上,您采用包含N个项目的训练组并对它们进行分类。如何对它们进行分类完全取决于您的数据,以及您认为该数据的重要分类特征是什么。在您的示例中,这可能是帖子类别、谁发布了该项

  6. STM32的HAL和LL库区别和性能对比 - 2

    LL库和HAL库简介LL:Low-Layer,底层库HAL:HardwareAbstractionLayer,硬件抽象层库LL库和hal库对比,很精简,这实际上是一个精简的库。LL库的配置选择如下:在STM32CUBEMX中,点击菜单的“ProjectManager”–>“AdvancedSettings”,在下面的界面中选择“AdvancedSettings”,然后在每个模块后面选择使用的库总结:1、如果使用的MCU是小容量的,那么STM32CubeLL将是最佳选择;2、如果结合可移植性和优化,使用STM32CubeHAL并使用特定的优化实现替换一些调用,可保持最大的可移植性。另外HAL和L

  7. java - java和ruby的主要区别和相似之处是什么? - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭9年前。Improvethisquestion我现在是java专业人士,我喜欢使用ruby​​。这两种语言有什么相似之处吗?主要区别是什么?因为两者都是面向对象的。

  8. ruby-on-rails - 是否有可能发现 Ruby on Rails 应用程序中未使用哪些类? - 2

    在我们的项目中,我们有一些“被遗忘的”类存在了很长一段时间。那些类已被其他类替代,但我们忘记删除它们。是否有一些自动化的方法/工具可以发现Ruby{onRails}应用程序中没有使用哪些类?谢谢! 最佳答案 这个问题已经被提出了很多次,但是最好的答案都在这里:FindunusedcodeinaRailsapp我个人喜欢日志解析:https://stackoverflow.com/a/14161807但在任何情况下,您都可以创建自己的记录器,扩展ActiveRecord::Base以创建一个观察器,该观察器将最常用的模块存储在数据库中

  9. ruby-on-rails - 没有找到主要的连接池 - 2

    我正在使用Rails并且非常随机地遇到连接池错误,它不专门针对任何单个端点。我可以在大约70%的时间内命中端点而不会出现此错误。数据库是在谷歌云上运行的PostgreSQL。这是我遇到的错误的主要内容:#/usr/local/bundle/gems/activerecord-5.1.5/lib/active_record/connection_handling.rb:112:in`connection_pool'ActiveRecord::ConnectionNotEstablished(Noconnectionpoolwith'primary'found.):gem文件:source

  10. ruby - 哪些 IDE 可用于 jRuby? - 2

    我进行了一些谷歌搜索,似乎缺少用于jRuby的IDE。我读过TextMate和Sublime,但它们不提供调试或代码完成功能。有人可以提出建议吗(或者这项技术还处于起步阶段)? 最佳答案 有几个选项;我更喜欢JetBrains'IntelliJ(RubyMine).AptanahasanEclipseplugin.NetBeansusedtohaveofficialsupport,不确定currentstate是什么是。 关于ruby-哪些IDE可用于jRuby?,我们在StackOve

随机推荐