最近有不少学弟新入单片机的坑,万事开头难。作为一个比较陌生的领域,再结合我当时入坑时的一些问题,写下这篇博客,希望能够给初学者一些启发。
1. 开发板的选择
学习STM32,不能绕开的第一件事,那就是开发板。
开发板的意义:
- 开发板提供了动手的机会。学习网上课程后,自己动手编程,并下载到开发板中,观察是否与预期结果一致,如果不一致,可以调试寻找原因。试错的经历是学习过程中最宝贵的经历。
- 开发板提供了足够的资源,包含硬件资源和软件资源 。硬件资源,即开发板上自带的LED、蜂鸣器、显示屏、以及其他芯片,可以让我们学习某一部件的时候可以直接上手;软件资源,即开发板配套的课程、例程。这些都是厂家根据这款开发板的特性设计的,新手很适合这样一步一步学习。
- 开发板调试外设非常方便。在后续自己做项目的时候,自己需要用到的很多东西,可以借助开发板来测试。举个例子,如果你想做一个产品包含陀螺仪,开发板自带的陀螺仪就可以帮助你测试自己的程序有没有问题,而不需要你去购买陀螺仪,再去连接。
综上,就是我总结的开发板的作用。那么如何选择一块适合自己的板子呢?可以从下面几个方面综合考虑:
- 资料。资料对于编程人员的意义不言而喻,这里主要推荐正点原子和野火两家,这两家都是做开发板的知名厂家了,资料非常丰富,基本涵盖了你STM32学习过程中的所有需要的资料,硬件,软件,官方,拓展资料,等等等等。课程在B站平台也可以直接观看。
- 价格:硬件不比软件,只要一台电脑,就可以学到天长地久了。开发板的价格也是我们必须考虑的重要方面。这里的价格,其实只要就是区分于购买的配件和开发板型号的选择。
- 首先说配件,以个人经验来说仿真器是必须要购买的,以正点原子的店铺为例,一般选择开发板裸板加上一个STLINK仿真器就足够了,显示屏比较贵,且用上的场景实在不多,后期有需要也可以自行购买。再多提一句,正点的STLINK其实也偏贵,可以TB购买JILNK OB 代替,一方面便宜(一二十元),另一方面小巧,且JLINK是优于STLINK的
- 再说型号,STM32主要分F1和F4两种,F4与F1的主要区别就是FPU(浮点运算单元),也就是浮点运算会更快,当然F4的主频也比F1更高。说白了,就是F4更快,其他的部分,区别真的不大,编程也是大同小异。学会了F1自然F4也就会了。所以,经济预算有限的话,推荐F1,想要一步到位的可以选择F4。毕竟,竞赛还是比较追求速度的,所以一般会选择F4,开发板移植会方便一些。
- 售后:在购买开发板之后,一定要把厂家配套的程序都下载到开发板,测试一下,板子上是否有问题,如果有问题,及时咨询客服,像正点这样的好像7天是包换的。
- 踩坑经历:笔者曾经购买过两次正点原子的开发板。第一次,闲置了一段时间,后来才发现蜂鸣器是坏的,但是已经过了日期,无法更换了。另一次是刚购买到手,仔细检查后,发现缺少了一个电阻,遂顺丰包邮寄回并更换。配件的话,当时我也不懂,购买了显示屏后,也一直闲置了。
2. 开发环境搭建
购买到开发板以后,就是在自己电脑上下载各种需要的软件,来搭建开发环境了。
在这里推荐一个不限速下载站,下载速度很快,且配有教程,电子系学生用到的软件基本都有。
网址:http://www.mculover666.cn/download/
推荐大家先把STM32cubeMX和MDK keil 下载好,这两个是我们最常用的软件。
CUBEMX不用说,注意别安装在包含中文目录里就行。
KEIL的pack包也是需要下载的,安装F1 和F4 的即可。在安装KEIL的条件下,下载pack包,下载完成后,直接双击即可安装。
再说一下KEIL的破解,这个网上的教程都很多,现在最新的貌似都能破解到2032年了。。。MDK也是睁一只眼闭一只眼。放一个教程:https://blog.csdn.net/djt4541/article/details/88841927
驱动的话,需要安装JLINK/STLINK和CH340的驱动,安装好这些,才能保证电脑能够连接单片机。
3. 学习建议
视频的话,B站学习即可。但是,我的建议就是,视频大概看到入门的程度就够了,因为视频比较浪费时间。看完入门的视频,可以直接去网上找博客看,或者看正点原子的教程PDF,比较省时间。
还有就是库的学习,ST是为STM32推出过标准库、HAL库、LL库的。标准库在新出的芯片中已经不再提供了,可以说是逐渐淘汰了。用的最多的那就是HAL库,配合CUBEMX非常方便,所以推荐大家直接学习CUBEMX配置HAL库的教程,HAL库容易上手的原因就是他可以忽视硬件层,但是,我们在学习的时候还是要学的透彻一点,把原理学会。
最后,再说说我对于单片机这个东西的看法,单片机,就是一个运算的平台,他可以把你的程序仅仅用一个小芯片来实现,单片机不同于电脑的CPU,它包含了许多最基本的外设,让你可以直接把他当做一个小电脑来用,所以我们关注的不是单片机基础部分的学习,而是应该注重如何把这么个小玩意儿用于你的项目中。所以,大家一定要带着项目去学习单片机。
比如,我想做一个小车,单片机可以提供电调、陀螺仪等等各个传感器数据的读取。但是,数据如何处理,处理完的数据应该如何运用,才能让你的小车跑起来,这才是我们应该思考的事情。
附:STM32学习路线
转载:https://blog.csdn.net/lalala12ll/article/details/107371982