从大学开始自己学 STM32到现在工作已经,近四年了。从刚开始的看着看着就能睡着,到后来每天可以熬夜去渴望去学习。期间走了不少弯路,但是现在算是走出来了,所以交流哈我学习的历程,以及学习中各种门类的资源,希望可以对于初学者有些帮助。
刚看STM32相信大部分人是初步从51转过来,甚至有部分是老师直接推荐过来。这时候大家对于C语言属于一个初窥门径的阶段,所以对于STM32这种函数封装会有些陌生。所以有个好的学习切入点会很舒服,才能找到写程序开发的快感、成就感。
初步介绍STM32:
STM32是意法半导体公司开发的要求高性能、低成本、低功耗的嵌入式应用设计,CortexM系列内核的32位单片机。主要用于工业控制领域。目前在大学期间应用比赛项目比较普遍些。STM32有很多的系类,一般常用的为F1、F0系类,例如一般的开发板都是F103系类的芯片,而在Stlink以及Jlink上面的下载器的芯片大部分为F0。
一般学习STM32需要三件套:硬件环境、编译环境、软件编程
硬件环境:作为单片机的开发,我们需要一把趁手的武器
目前我们常见的学习开发板厂家有正点原子、野火、安富莱、硬石、众想几家的开发板,而各个厂家又分了很多型号,针对于不同引脚外设数量分为高中低的配置。 其中对于我们乞丐级别的学习,可以在某宝上STM32F103C8T6的开发板,很便宜只有几块钱或者正点原子家的Mini版开发板。店家一样可以提供很多的学习资料。当我们选择稍微中等宽裕的时候,我们可以选择例如:正点原子的精英板或者野火的指南者。这两种开发板都是中等容量的芯片,外设基本也都有开发的模块,如果能把这样的板子学习调试OK则对STM32的各种外设配置控制已经很熟悉了。如果大家对于后续开发任务一些通讯学习,摄像头,或者GSM模块学习,则可以考虑正点的战舰开发板或者野火的霸道开发板,众想的大黄蜂也可以考虑下,大体都差不多。安富莱的程序架构对于我们学习程序编写比较好,硬石主要在于电机等的机电控制领域比较好。
编译环境:目前STM32编译环境有IAR、keil、Atollic TrueSTUDIO for STM32 、eclipse等。
因为工作的原因,几种软件都有安装应用,软件详细说明未来会比较详细的说明,此次稍微简单说一哈使用的感悟。
keil是最常用的调试环境,各大开发板的提供商都是用keil教学的,所以keil属于入门必备,IAR属于经常调试的盆友们,并且IAR代码编译更加优化。eclipse属于在eclipse开发人员觉得不需要其他软件,只是在eclipse上面增加开发STM32的开发者所用,而Atollic TrueSTUDIO则是ST近些年依托eclipse架构开发的免费的软件,界面效果与eclipse基本一样。
软件编程:目前学习STM32编程有几种封装学习:1. 寄存器版 2. 标准库 3.HAL库 4.LL库 5、自行写库
1.寄存器版本,单片机的内存被划分为一个个小的寄存器片段进去操作为控制,而寄存器地址则由芯片厂家设定。本质上我们学习各种版本的 库最后面都是针对于寄存器的操作,所以学习寄存器的版本是核心,但是正因为寄存器利用位操作,以及STM32设置好多的寄存器,对于初学者来说很费劲,建议初学者不去进行深入学习,但是在后续学习中寄存器还需要继续掌握。针对于后续好多外设功能例如:Time输入捕获PWM输出等的实现很多的操作需要一个位一个位去确认。
上图为STM32官方的英文手册中,寄存器位置的分配。目前全书大约有1096页。(上学的时候老师建议我们看纯英文的,后来工作发现好多Datasheet都是纯英文的,所以小伙伴们要开始试着中英文对照的看,然后慢慢接受全英文哈)
2.库函数,库函数是ST通过对底层寄存器封装为函数,方便操作者应用的函数文件包,可以在ST官网进行下载指定的芯片的包,里面也有不同的示例程序,大家也可以进行学习。
这就是大致STM观看学习的途径,此外你用开发板学习,除了一些单片机交流群,还可以在几大开发板的提供商建立的论坛上进行交流沟通问题,以及一个微信公众号上学习,此处推荐我黄工的微信号,都是干货,搜索微信公众号『strongerHuang』。只是一个粗浅的介绍STM32学习推荐。后续还有还会分享一些我在公司真实遇到的开发问题,以及学习介绍,希望能帮到大家。也欢迎大家关注我的公众号哈。