现在一说到嵌入式、单片机,很多人想到的可能是STM32。

因为STM32的市场应用实在是太广了,我们在招聘平台随便搜嵌入式/单片机工程师,都要求最好会STM32.

当然,一款单片机的火爆绝对不是空穴来风。

我自己也用STM32开发过很多产品,客观地说确实比大多数单片机用起来要省心。

主要体现在以下几点:

  1. ST把复杂的东西封装了起来(寄存器配置),使得我们直接调用固件库就能轻松使用。
  2. 芯片比较稳定,不会有乱七八糟奇奇怪怪的问题。
  3. 不同系列兼容性强,固件库通用性强。

到目前为止,我做了开发近10年,现在最喜欢用得单片机依然是STM8/STM32.

但凡用STM32做产品,效率都很高,因为代码框架都是复制粘贴,剩下的就是完成产品功能。

如果你像我这样,自己写了一套通用性比较强的程序架构,至少能缩短30-50%产品代码的开发周期。

Ok,下面来聊聊stm32该怎么学?

这里只分享我亲身经历过,并成功的方法,我没做到的绝对不误导,我能做到的,按照我的方法你也一定可以!

STM32和51单片机不一样,51单片机我一般要求无际单片机编程的学员要相对深入地学习。

说白了就是要搞懂如何通过配置寄存器去使用单片机外设的,这对我们理解单片机和一些别的功能芯片都有很大的帮助,比如说LCD驱动芯片、时钟芯片、存储芯片等等。

大多数芯片都是需要配置寄存器去实现芯片特有的功能,我们核心是理解这个,其次就是通过数据手册去看每个寄存器每个位对应什么功能。

而学习STM32则需要一定的技巧,否则你会有走不完的弯路,别人学半个月,你学1年,差距就是这么大!

新手最容易走弯路的有以下几点:

  1. 深入研究寄存器,以为用寄存器开发就很牛逼
  2. 看不懂数据手册,就以为学不会
  3. 以为把STM32的外设都学完才能做产品
  4. 看得多,实践得少。

学习STM32,我总结出来的核心就4个字:循环渐进

不要一下想把STM32的内部资源吃得透透的,会让你吃不了兜着走。

很多都是通过开发板去学习的,开发板基本上把STM32每个外设资源都利用起来了。

其实很多可能你工作10年也用不上,比如USB、以太网、FSMC、SDIO、CAN。

这些对新手来说也是比较难的,很多如果你没写过一定的代码量理解起来也很困难,在你经验不足的时候学习周期会更长,不划算

而且实际产品开发,跟开发板还是有挺大区别,实际产品需要考虑成本尺寸多因素,同样一个屏驱动,一般产品不会用开发板的方式去做。

我认为前期新手只需要学习以下几个外设就可以了:

GPIO、systick、定时器、NVIC、EXTI、串口、DMA、ADC。

除了外设以外,还需要掌握常用协议:

IIC、SPI、单口通讯。

学完这些,学习STM32的任务也算是完成了,剩下的外设工作/项目需要再针对性学习。

那接下来的任务呢,就是不断通过STM32去做项目,比如说我们无际单片机编程带学员做的网关。

虽然硬件看起来没什么东西,但是精华都在程序里。

大家如果有兴趣去拆解下大厂做的产品,基本硬件没啥东西,但是功能还挺丰富,这样可以有效降低批量出货的风险,毕竟硬件一出问题分分钟赔到破产。

我们这个主机整个程序分为三大板块:

  1. STM32外设
  2. 自己写程序架构
  3. 产品功能程序

程序架构是贯穿整个项目的,而不是某个文件的代码,其中涉及到很多考验你编程水平的代码,比如指针、结构体、枚举、队列、回调函数、链表、任务管理等等。

如果通过开发板,我们一般只能学会STM32外设,学不到程序架构、产品思维,更别说提升自己编程水平。

而这些往往才是企业需要的,听到耳朵起茧的项目经验就包含了这两项能力,而不是你会用什么单片机。

所以,很多人虽然把STM32的外设都能用起来了,但是感觉还是什么都没学会?

其实,就是你没把你学的东西落地,没通过它们做出实实在在的东西。

即便做出来了,也感觉不是很完美,感觉很不专业,你写的代码都是你认知水平内的。

想提高,就必须向做得更好的人,更有经验的人学习。

当你真正做过一个中型以上的项目,做过几年开发,你就会发现,单片机屁也不是,就是个工具而已。

随手一个单片机过来你都能得心应手,游刃有余。

现在更是如此,原厂/代理商提供外设例程,提供技术支持,你只需要懂复制粘贴,就能把单片机外设用起来。

最后总结:

新手学会用单片机的外设以后,学习的重点绝对不再是单片机,而是怎么通过这个工具去做项目。

核心的东西,是通过项目练出来的,不要闭门造车,多向大佬看齐。

能详细地讲讲stm32该怎么学吗?相关推荐

  1. 零基础学stm32要多久?stm32应该怎么学?

    STM32由于资料丰富.稳定.性价比高深得广大工程师和企业的喜爱. 现在随便在招聘平台上搜索单片机开发或者嵌入式开发,基本都要求会STM32. 我用STM32也有很多年了,基本上是围绕着F103.F0 ...

  2. 超声波模块详细介绍(stm32循迹小车中超声波的介绍)

    超声波模块详细介绍(stm32循迹小车中超声波的介绍) 超声波模块是非常重要的一个模块,今天给大家全面介绍一下超声波模块的原理以及用法,代码的编写. 1 超声波模块的认识 首先,市面上的常见超声波模块 ...

  3. stm32难不难学,没学51单片机可以直接学STM32吗?

    10年前,我是跨行自学进入嵌入式单片机开发这个行业. 学习的过程很枯燥,当初差点放弃,但是后面我通过一些技巧顺利进入这个行业并以此为生. 结合自己的经验,我先给大家总结原因,再给出解决办法: 1. 学 ...

  4. STM32单片机怎么学最快?用这个方法只需要一周!

    最近看到很多小伙伴学STM32学的一脸茫然,有些甚至学1年都不会,有些虽然学会了外设使用,一做起项目来无从下手. 那今天通过自己的经历来告诉大家STM32怎么学最快,领悟到了1周学会绝对没问题! 一. ...

  5. 超详细OpenMV与STM32单片机通信 (有完整版源码)

    目录标题 1.前言(闲话) 2.硬件连接 3.软件代码---OpenMV端 4.软件代码---STM32端 5.利用PC端测试数据数据是否发送接收正常 6.学习补充 (代码看不懂的时候可以来看一下) ...

  6. 做一台STM32小车需要学些什么?

    今天的分享来源于我在ac乎上回答的一个问题: 我觉得这个问题挺有意思的, 都是拉电话线的专业,都是在学习STM32,都对小车感兴趣,那就让我这个通信老狗来谈谈自己的见解~ 下面正文开始~ 做一个stm ...

  7. 禁欲28天!一宅男居然肝出如此详细Web安全学习笔记,学妹看完直接抽搐了!(第二弹)

    2.1. 网络基础 2.1.1. 计算机通信网的组成 计算机网络由通信子网和资源子网组成.其中通信子网负责数据的无差错和有序传递,其处理功能包括差错控制.流量控制.路由选择.网络互连等. 其中资源子网 ...

  8. 全网最详细黑苹果安装教程,一学就会的方法,赶快学起来吧

    可以说:这是一套目前最全面的黑苹果安装教程,为了能让每个新手,更好的理解和掌握相关方法,教程按操作流程书写,新手请务必按顺序阅读,以便提高学习效率,高手可以随意观看,或者飘过.由于篇幅长度有限,一篇文 ...

  9. 数据存储(超全,超详细,零基础也都学的会)

    1.基本的内置类型: 2.类型的基本归类: (1)整形家族: 有符号和无符号的区别在下文中有提到. (2)浮点型家族: (3)自定义类型 (4)指针类型: (5)空类型: 通常用于表示函数返回值,函数 ...

最新文章

  1. (附视频) | AI奠基人、美国AI科学家特伦斯谈深度学习​
  2. Rushcrm:客户关系管理适合的才是好的
  3. python中整数类型的表示需加引导符号_Python内置类型及常见问题
  4. 关于损失函数的一些个人理解
  5. Android-Universal-Image-Loader 框架使用
  6. [SpringBoot2]web场景_静态资源规则与定制化
  7. python的最受欢迎的库_2018年最受欢迎的15个Python库
  8. 【Git】Git基本操作详解
  9. sql server 监视_使用动态管理对象监视SQL Server –请求
  10. paint java_java – 为什么paint()/ paintComponent()从未被调用?
  11. Tomcat 下载安装教程
  12. Mac下用命令行打开pdf文件
  13. 如何利用jqGrid表格方法重新设置caption属性值
  14. NPN与PNP型传感器的区别
  15. 使用linaro工具链编译ARM64架构内核
  16. 从一个程序员到月入7万自由职业者的故事—《打造你的赚钱机器》让我坐过了4站地铁...
  17. 麒麟820和鸿蒙系统,网曝魅族正在适配麒麟820和鸿蒙系统,黄章:我怎么不知道...
  18. css 网格布局_CSS网格布局三年
  19. 微信投票1人1票php制作,微信投票怎么刷票,微信人工投票1毛一票
  20. 哨向 Mika Lelush 3

热门文章

  1. Scrapy框架的日志信息与配置信息
  2. 美多商城之用户注册(展示用户注册页面)
  3. 为了进行差错控制,必须对传送的数据帧进行校验。在局域网中广泛使用的校验方法是循环冗余校验。当接收端发现错误后采取的措施是
  4. Python Beautiful Soup类的基本元素
  5. ESI世界大学排名:371所内地高校上榜!
  6. 端到端伪激光图像3D目标检测
  7. 深入浅出Yolov3和Yolov4
  8. List循环添加对象时遇到问题的解决
  9. Selenium启动不同浏览器
  10. Python算法题----求出和为S的所有连续正整数数列