2021/10/23
第一次在CSDN写文章,记录我的学习历程。之前在半导体公司工作过一段时间,发现STM32资料虽然很多,但是有一些细节内容仍然学习困难。因此,我打算开一个系列记录学习中的细节知识以及项目中的应用。秉承着共享的态度,在CSDN进行记录。
1.学习观念
从大一到毕业一年,将近5年时间里的学习经验告诉我,嵌入式学习一定要拓宽自己的知识面,不管是8位机还是16位机,32位机,熟练一种,其他芯片学习成本就会降低很多。归根到底,我们应该培养的是学习能力以及专业素养。
2.环境准备
相信看到这篇文章的同学对STM32或其他单片机多少有些了解,在此只简单介绍下。目前这个系列以STM32F103为基础,会涵盖中容量及大容量所以外设。
STM32F103,是意法(ST)半导体10年前设计的32位单片机,使用ARMv7-M的Cortex-M3内核,Thumb指令集。103主频最高72MHz,拥有丰富的外设。后续会开展F4,F7,H7等系列。
2.1集成IDE安装
做个项目的同学可能都经历过一个代码,编写,编译,下载,调试各用各的软件的情况,非常的难受,好在STM32拥有完整的集成IDE。对于比较受欢迎的ST自己的IDE和Cubemx等等工具,本系列均采用keil 5。
在此给刚入门的同学准备了必备软件,第一个pack是ST的芯片资源包,第三个是软件,中间的是软件的注册机(禁止商用),需要的同学可以私聊获取链接。(放上来很容易失效)。安装的过程可以参考其他CSDN文章。安装完成之后将获取到这样一个软件:
工具装好了,接下来准备开发所必须的参考资料。
3.学习资料准备
学习STM32F1必备品:
从上到下,5和6分别是今后学习的主要参考手册,内有详细的外设描述。
3和4分别是中容量、大容量芯片数据手册,因中容量和大容量外设并不完全相同,偶尔需要参考。
区分容量的标准是flash大小,中容量上限128K,大容量下限256K.
芯片有了外设的应用参考,但同时也需要了解一部分内核的工作机制(中断控制器NVIC、SYSTICK定时器等),可以阅读 2 学习。
1为官方SDK,为实实在在的代码部分,我通常会将其中example下的外设源文件单独拿出来做参考。文件夹下并没有完整的工程,但是会细分各个外设功能的源代码。
举例,TIM(定时器)目录下:
可以看到分的非常详细,大多数情况下参考这些代码就可以完成所需的驱动功能。
3.1工程准备
资料软件都准备齐了,就可以写代码了。写代码的时候都需要一个工程。有的人喜欢通过keil新建一个,有的人喜欢拿平时准备好的工程。这是我平时喜欢用的:
哈哈,学习过正点原子的人一眼就看的出来,这是原子教学的工程,但是又不完成一样。主要是我把SYSTEM文件夹删掉了,目的在于所有的外设都要自己写,不能偷懒。学习和应用要分得清。
在此,热情推荐大家去看看原子、野火的教学视频,初学者形成概念是很重要的,学会海纳百川,积极吸收各家的资料教学,去糟粕,留精华,形成自己的认知。
打开工程:
在模板USER目录下双击工程文件
软件界面:
1.编译按钮,打开工程后进行编译,一个箭头是只编译更改内容,两个箭头为全编译,除第一次打开工程建议全编译以外,其他过程都建议使用只编译更改,否则编译时间较长。
2.下载按钮,连接开发板的情况下可直接下载,不需要额外的下载工具。
3.下载前和使用过程中均需要做一些设置,在此option按钮中。
4.调试按钮,可单步调试代码
5.工程目录
6.代码编辑区
7.调试信息输出区
至此,所有工作准备完毕可以开始学习、写代码啦!
4.开发板准备
大家可以区某宝,搜STM32开发板可以买原子或野火的,有配套资料,学起来简单点,也可以买最小系统板,103RC,103C8这些都可以,成本会低很多,103C8应该20RMB就够了,下面价格不能参考啊,想我当初买103RC,50RMB都觉得贵,缺芯导致价格狂飙。
我准备的开发板:
左侧红色板是103VB,中容量。使用方便,有板载ST-LINK。右侧蓝色板为103VC,大容量,IO全引出,适合DIY。两块板都是自己打板,自己焊接的,红色板是嘉立创看到的开源项目,略作修改后自己打来玩的。蓝色板是自己画的PCB,想自己动手的同学可以私信获取(蓝色板)资源。
同样的,大家还需要自行准备调试工具和串口工具,分别某宝搜索ST-LINK和USB-TTL工具。
左:下载工具 右:串口工具
5.程序下载
准备好软件和硬件后进行连接,根据ST-LINK和开发板上的对应标识进行连接
VCC GND CLK DIO对应连接,工具连接电脑,未装驱动的要先装驱动
打开软件点击option,在出现的对话框中的第一项里面选择芯片型号。不同型号会影响下载算法的差异,一定不要选错。
target中可以看到芯片的flash和RAM的开始地址和大小,以及可能用到的microlib库选项和仿真时(无硬件仿真)的时钟频率选项。
output中建议把browse infomation选上,方便代码阅读
C/C++选项卡下要注意全局宏,如果是中容量芯片,就如图不动即可,如果是大容量芯片,要改为HD,同时还要更换启动文件为hd.s
选择debug选项,确定点的位置,在选项卡里面选择ST-LINK(用什么选什么),点击设置,可以看到对话框里的调试器类型以及设备的内核编号,这意味着连接成功。
选择flash download选项,左侧为不同的擦除方式,右侧分别为编程,校验,和下载后直接运行。下方为此时使用的烧录算法,有时候算法会消失,需要手动添加,完成选择后 确定-OK回到主页面,点击下载。
现在我们不用关心下载进去的是什么,也不用理会有什么样的运行效果。只需记牢整个过程,如果过程中出现什么意外,和介绍不一样,就去积极探索答案,或者评论留下问题。
从下一篇开始,正式进入内容学习。
作者水平有限,如有错误,欢迎指正。