大家好,我是华维麦琪,今天来分享下我们华维团队十年经验总结,如何能快速学好stm32单片机!
最近看到很多小伙伴学STM32学的一脸懵逼,有些甚至学1年都不会,有些虽然学会了外设使用,一做起项目来无从下手,感觉自己学了个寂寞,白白浪费时间!
现在随便在招聘平台上搜索单片机开发或者嵌入式开发,基本都要求会STM32。我用STM32也有很多年了,基本上是围绕着F103、F030系列来做产品,对这个芯片的学习深有感触。
很多新手入门stm32都感觉很复杂,几百个寄存器,复杂的内核结构,详细的数据手册都几百页。这个过程需要通过合适的方法跨越。
由于STM32的功能多,其原理又与传统的8位单片机完全不同,再加上软件是基于固件库开发,其中涉及到了大量的结构体、枚举、指针的应用。
STM32是意法半导体较早推向市场的基于Cortex-M内核的微处理器系列产品,该系列产品具有成本低、功耗优、性能高、功能多等优势,并且以系列化方式推出,方便用户选型,在市场上获得了广泛好评,深受广大工程师和企业的喜爱。
今天结合自己经历和经验,来跟大家分享下自己曾经是怎么快速学会stm32的!字数可能有点多,你一定坚持看下去,将会收益终身!
我自学完51单片机就出去找工作了,2011年的夏天,很多科技公司对这个职位的要求还不高,会51会改程序基本就能找到工作。那个时候STC单片机比较多,做的是MF卡的权限控制板,之后陆续接触了TFT产品,也用到了NXP,这应该是第一次与32位ARM7的邂逅,比51还复杂,当时我是一头雾水!
后来听隔壁的同事推荐下,我去学习了stm32单片机,果然32条线开发周期短,用起来省时省力!我总结了当时学习的主要经验如下,如果坚持下去说不定能从菜鸟到牛人达成质的飞跃!(偷偷告诉你,我是私下自学的)
一、一周入门计划
这里所谓的“入门”,指的是能理解并掌握一些常用的STM32外设,真正想真正掌握一款处理器,一周根本说明不了什么问题。
1.大胆去做,不怕犯错,一回生二回熟,总结经验,举一反三!
我当时踩了好多坑,不爱看数据手册,都是直接复制例程看效果,当时特别憋屈,复制过来 还翻译错!不断地尝试看到例程效果以后,就会去改这个例程的外设配置,比如说例程是控制PA1引脚的灯闪烁,那我会改成PB2,PC2或者其他测试下。
比如说例程定时器1中断是10ms,那我换一个定时器2中断20ms,这样去测试。一周之后你会发现很多东西迎刃而解,学习stm32单片机是多么快乐!
另外我是下班时间慢慢钻研的,如果您每天只有业余时间来学习STM32,建议根据您的具体情况安排时间。毕竟计划时间如果安排太紧,反而收不到良好的效果,只能进入恶性循环,这是我们要避免的。
2.会用就行,不要深挖
单片机博大精深,正是因为这样要根据实际情况来定,记着我们学单片机的目的是产品开发,把产品的外设跑起来,并且知道怎么修改就好了,经验是慢慢积累的,切勿操之过急!
如果你照着例程都不会用的话,很有可能你是没学过51单片机,内部结构和功能部件的特点和属性你都懵懵懂,我劝你还是别浪费时间了!还是把时间用在学习51单片机上,继续关注我的文章,我会总结出一篇学习stm32单片机的基础经验,帮助你们快速上手stm32单片机,减少不必要的时间!
二.两周进阶
进阶最快的方法就是去接触实际产品开发!等你掌握一些常用的STM32外设,接下来就是进阶阶段,大多数人在这个阶段提升是最慢的,主要有如下原因!
1.新手没办法进行实际产品开发,即使接触也是参与项目边缘化的工作,无法学到核心内容!
2.没有人带,经验不足和产品思维没办法提升
3.市面上教程都是开发板多,真正接近实际产品的学习板非常少。
所以很多新手,特别是应届生有一个很普遍的现象,接触不到实际产品开发,找工作像个小白,找不到工作就很多人放弃转行了!
对于进阶这块,我在19年尝试针对这种情况录制了一套视频,计划只是录出来玩一下的。
内容主要手把手教你写一个轻量级的时间片轮训操作系统,也可以理解成是一个程序架构。
在这个架构的基础上,我提供在产品开发当中,经常会碰到的一些疑难杂症的解决方法,比如说。
1.如果一个产品有10个甚至更多按键需要同时检测短按、短按释放、长按、长按释放动作的时候,代码怎么写可扩展性更强?
2.如果有10个甚至100个LED灯,要怎么实现每个灯独立的效果,比如说慢闪、快闪、隔3快闪2次,隔5秒快闪1次等等。
3.做物联网网关时会实时跟服务器进行心跳监测,在如此高频和数据量大的情况下,如何保证数据不丢包。
那解决这些问题所涉及到的技术点有回调函数、任务调度、队列算法等等,如果全部消化并且加以优化,足以写出可移植性和可扩展性非常强的程序。
免费领,单片机入门到高级开挂学习攻略(附教程+工具)https://blog.csdn.net/HWdanpianji/article/details/121722883?spm=1001.2014.3001.5502
这个程序架构是开源提供给大家的,包括视频教程+源码+工具。