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

怎么自学 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 最好,因为它把常用的寄存器都进行了集成,还有各种调试机制,非常人性化。

如何更好更快的上手stm32呢?创客学员一节视频带你走进电子世界

(零基础电子产品设计)
http://www.makeru.com.cn/live/3727_1388.html?s=70408

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

会使用51单片机的前提下,如何自学stm32?_第1张图片

你可能感兴趣的:(单片机,stm32,51单片机)