会使用51单片机的前提下,如何自学STM32?

cathy的头像

怎么自学STM32呢?我想想。当初我也是在学习了一年的51单片机后才过渡到STM32的,所以算有些经验了。

我大一的时候在实验室的环境下开始学习51单片机,虽说学长不怎么管我们这些小白吧,但起码有个环境在这,有不懂的问题都可以向学长提问,这就是环境的好处了。但是如果说周围只有你一个人在学单片机,那这条路走得就会比较艰难了!为什么?因为单片机学习不仅涉及到软件,还涉及到硬件,这就是为什么说嵌入式门槛高的原因了,出了问题你不知道是硬件问题还是软件问题,还是都有问题,需要你根据经验一一排查才可。

说回自学STM32问题,STM32单片机远比51单片机复杂,寄存器数量是它的好几倍,各种外设模块,DA、CRC、SPI、CAN、SD、CAN、TIM等等,而每一个模块可能都有单独的时钟,在使用这些模块时都要提前将时钟配置好,否则根本不能工作;而配置这些外设时钟之前你还要先配置系统时钟才行,而系统时钟又涉及到了分频、倍频的问题,也是繁杂。正因为这些东西实在是太多了,所以出现了库函数开发!

库函数开发的好处就是你不用管如何去操作寄存器,你只要了解什么时候该调用哪一个函数即可,相当方便,所以库函数开发的思路就是,记住各个函数的功能、调用条件(不需要死记硬背)就可以轻松进行开发了。但也正因为如此,所以在学STM32的时候第一个拦路虎就是如何建立一个STM32工程,因为库函数开发需要的文件数量远比单纯的寄存器开发多的多,而这些文件之间还有关联性,很容易编译出错,所以可能在51单片机很简单的建工程到了STM32里面就会变得复杂了。但这些问题通过网上搜索还是很快能解决的,但是解决归解决,你是否明白为什么就这样解决了呢?所以你在开始学STM32的时候心里会很没底,因为你连最基本的工程都不知道该怎么才能建好。

然后第二个拦路就是时钟了,前面说过,STM32的时钟也是相当的复杂,所以很多教程上来就是教你如何配置时钟,这本没有错,但是你可能只是想尽快的点你第一个LED灯罢了,却要学这种感觉和点灯无关的时钟问题,所以心里也是挺着急的。事实上,点第一个LED灯是很简单的事情,只要你把对应的引脚配置好了就可以点灯。可能你会问,不要配置时钟吗?当然要,只是你点个灯对时钟的要求根本不高,所以时钟频率到底是多少可以不管,因此你直接用用默认的时钟配置就行了,因为在进入main函数之前启动文件(唯一的那个汇编文件)其实已经对时钟进行了配置(默认一般按最大的时钟频率进行配置),根本不需要额外的时钟代码的。所以这一点可以省去初学者不少功夫,当你比较熟练的掌握了库函数的时候,再回过头来去理解时钟的配置可能效果会更好。

关于 STM32 入门视频,你可以找刘凯老师的视频教程(有清晰版的),讲的还是不错的,因为我就是通过他学习 STM32的,一集没落下的全部看完了。

最后再说一点,STM32学习不比51,51单片机的调试功能不比STM32,所以在寻找 BUG 上还是比较麻烦的,而 STM32 因为有在线调试功能,可以实时观察数据、指令跟踪,所以在学习过程中一定要好好利用(当初我学习的时候根本不知道,还傻傻的用51那一套调试),而开发平台我觉得 MDK 最好,因为它把常用的寄存器都进行了集成,还有各种调试机制,非常人性化。

最后再配一张图让你感受一下 MDK 调试的强大之处(纯软件仿真的):

“”

本文转载自:鱼鹰谈单片机(作者:鱼鹰Osprey)
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。