一、开门见山,一开始便是搭建开拓环境。
1、MDK5 安装
MDK5 的安装分为两步:1,安装 MDK5;2,安装器件支持包。MDK 软件下载地址:https://www.keil.com/download/product,器件支持包下载地址:https://www.keil.com/dd2/pack;我学习的是STM32F1系列的,以是我安装的是MDK5.36 和 2.3.0。

2、仿真器驱动安装
STM32 可以通过 DAP、ST LINK、JLINK 等仿真调试器进行程序下载和仿真,推举利用:DAP 仿真器(CMSIS-DAP Debugger),DAP 仿真器在 MDK 下是免驱动的(无需安装驱动),即插即用,非常方便。我当初不太理解,以是买的时候买了STLINK 仿真器,以是我自己用的是STLINK 仿真器,DAP 仿真器的具有免驱、速率快、价格便宜等特点。
3、CH340 USB 虚拟串口驱动安装
开拓板利用的 USB 虚拟串口芯片是 CH340C,须要安装 CH340 USB 虚拟串口驱动,以便我们利用电脑通过 USB 和 STM32 进行串口通信。
二、MDK5 的开拓体验
我紧张是根据 “HAL库 版本” 教程实例学习的,当然很多大佬都能自己根据芯片寄存器自己写库文件,听起来就非常牛13,我自愧不如,当然是仰望!
1、认识HAL 库
从ARM 官方供应的 CMSIS 规范架构标准分级明显,从用户程序到内核底层实现做了分层。按照这个分级,HAL 库属于 CMSIS-Pack 中的“Peripheral HAL”层。CMSIS 规定的最紧张的 3 部分为:核内外设访问层(由 ARM 卖力实现)、片上外设访问层和外设访问函数(后面两个由芯片厂商卖力实现)。ARM 整合并供应了大量的模版,各厂商根据自己的芯片差异修正模版,这个中包括汇编文件 startup_device.s、system_.h 和 system_.c 这些与初始化和系统干系的函数。
网图:CMSIS规范架构
HAL 是 Hardware Abstraction Layer 的缩写,即硬件抽象层。是 ST 为可以更好的确保跨STM32 产品的最大可移植性而推出的 MCU 操作库。这种程序设计由于抽离运用程序和硬件底层的操作,更加符合跨平台和多人协作开拓的须要。HAL 库是基于一个非限定性的 BSD 容许协议(Berkeley Software Distribution)而发布的开源代码。
2、HAL库驱动包的获取
从 ST 官方网站上直接获取固件库,网页上岸:www.st.com,在打开的页面中依次选择:“Tools & Software”->“Ecosystem”->“STM32Cube”->新页面->选择“Prodcut selector”,如图:
获取HAL库1,2,3
获取HAL库4,5
在展开的页面中选择我们须要和固件,这展开“STM32CubeF1”即可看到我们须要的 F1 的安装包,按下图操作,在新的窗口中拉到底部,选择适宜自己的下载办法,注册帐号即可获取相应的驱动包。
下载STM32CubeF1固件包
3、Driver 文件夹
Drivers 文件夹包含 BSP,CMSIS 和 STM32F1xx_HAL_Driver 三个子文件夹。
BSP文件夹,板载硬件资源等驱动; CMSIS 文件夹,CMSIS 标准的软件抽象层组件干系文件,紧张包括 DSP 库(DSP_LIB 文件夹),Cortex-M 内核及其设备文件(Include 文件夹),微掌握器专用头文件/启动代码/专用系统文件等(Device 文件夹)。STM32F1xx_HAL_Driver 文件夹,包含了所有的 STM32F1xx 系列 HAL 库头文件和源文件。它的浸染是屏蔽了繁芜的硬件寄存器操作,统一了外设的接口函数。该文件夹包含 Src 和 Inc 两个子文件夹,个中 Src 子文件夹存放的是.c 源文件,Inc 子文件夹存放的是与之对应的.h 头文件。每个.c 源文件对应一个.h 头文件。4、Middlewares 文件夹
该文件夹下面有 ST 和 Third_Party 2 个子文件夹。ST 文件夹下面存放的是 STM32 干系的一些文件,包括 STemWin 和 USB 库等。Third_Party 文件夹是第三方中间件,这些中间件都是非常成熟的开源办理方案。这里就不具述了。
5、Projects 文件夹
该文件夹存放的是 ST官方的开拓板的适配例程,每个文件夹对应一个ST 官方的Demo 板,根据型号的不同供应 MDK 和 IAR 等类型的例程。
6、Utilities 文件夹
该文件夹是一些公用组件,也是紧张为 ST 官方的 DEMO 板供应的,在我们的例程中利用得不多。
7、其他文件夹
License.md:用于声明软件版权信息的文件。package.xml:描述固件包版本信息的文件。Release_Notes.html:超文本文件,用浏览器打开可知它是对固件包的补充描述和固件版本更新的记录解释。
3、HAL 版本 MDK 工程
1. 新建工程文件夹
首先我们要在电脑某个路径下新建一个文件作为工程的根目录文件,后续的工程文件都将在这个文件夹里建立,我们把这个文件夹重命名。工程的根目录文件夹下建立以下几个文件夹,文件夹名称及其浸染如表:
工程文件目录表
2. 拷贝工程干系文件
工程干系文件
BSP 文件夹,用于存放正点原子供应的板级支持包驱动代码(原 HARDWARE 文件夹下),如:LED、蜂鸣器、按键等。
CMSIS 文件夹,用于存放 CMSIS 底层代码(ARM 和 ST 供应),如:启动文件(.s 文件)、stm32f1xx.h 等各种头文件。
Source 文件夹下的 Templates 文件夹留下如图:
arm 文件夹存放的是启动文件,我们只须要 startup_stm32f103xe.s,其他全部删除。
末了便是 CMSIS 文件夹下的 Include 文件夹,里面都是内核的头文件,我们只须要如图:
4、新建工程
打开 Keil uVision5,点击菜单 Project ->New Uvision Project:
然后弹出工程命名和保存的操作窗口,工程文件保存路径为:STM32_len_Projects,STM32_len_Projects\Projects\MDK-ARM,工程名字我们取:HAL_LED_Project,末了点击保存即可。
接下来会弹出一个选择 Device 的界面,便是选择我们的芯片设备型号,大家根据自己利用的芯片型号依次选择即可。STM32F103 战舰开拓板的芯片型号是:STM32F103ZET6,以是我选择:STMicroelectronics→STM32F1 Series→STM32F103→STM32F103ZE(如果利用的是其他芯片,选择相应的型号就可以了)。
特殊把稳:一定要安装对应的器件支持包(即 pack 包)才会显示这些内容哦,如果没得选择,请关闭 MDK,然后安装器件支持包后重试。
点击 OK 后,弹出 Manage Run-Time Environment 对话框:
在这个界面,我们可以添加自己须要的组件,从而方便构建开拓环境,不过这里我们不须要。我们直接点击 Cancel 即可,这样就得到了我们的初步工程。
初步工程
这只是一个工程的框架,我们还须要把自己须要用到的文件添加到工程里面。虽然前面,我们在工程文件夹里放了很多文件,但是它们并没有关联到工程里面。
5、关联工程
1.添加文件
将分 3 个步骤:1,设置工程名和分组;2,添加启动文件;3,添加 User 源码;4,添加 SYSTEM 源码;5,添加 STM32F1xx_HAL_Driver 源码。
1. 设置工程名和分组名
在 Project→Target 上右键,选择 Manage Project Items…(方法一)或在菜单栏点击品字形红绿白图标(方法二)进入工程管理界面:
在工程管理界面,我们可以自行设置工程名字(Project Targets)、分组名字(Groups)以及添加每个分组的文件(Files)等操作。我们设置工程名字为:Template,并设置五个分组:Startup(存放启动文件)、User(存放 main.c 等用户代码)、Drivers/SYSTEM(存放系统级驱动代码)、Drivers/STM32F1xx_HAL_Driver(存放 ST 供应的 HAL 库驱动代码)、Readme(存放工程解释文件),如图:
设置好之后,我们点击 OK,回到 MDK 主界面,可以看到我们设置的工程名和分组名如图:
这里我们只是新建了一个大略的工程,并没有添加 BSP、Middlewares 平分组,后面随着工程繁芜程度的增加,我们须要一步步添加对应的分组。
2.添加启动文件
上图中,我们也可以点击 Add 按钮进行文件添加。添加完后,点击 Close,完成启动文件添加,得到工程分组如图:
3. 添加 User 源码
4. 添加 SYSTEM 源码
5. 添加 STM32F1xx_HAL_Driver 源码
6、工程(魔术棒)设置
1. 设置 Target 选项卡
2. 设置 Output 选项卡
3. 设置 Listing 选项卡
4. 设置 C/C++选项卡
5. 设置 Debug 选项卡
6. 设置 Utilities 选项卡
7、添加 main.c,并编写代码
在 MDK 主界面,点击:“NEW” ,新建一个 main.c 文件,并保存在 User 文件夹下。然后双击
User 分组,弹出添加文件的对话框,将 User 文件夹下的 main.c 文件添加到 User 分组下。
至此,我们就可以开始编写我们自己的代码了。我在 main.c 文件里面输入如下代码:
编写完 main.c 往后,我们点击:(Rebuild)按钮,编译全体工程,创造 0 缺点 0 警告。
编译结果提示:代码总大小(Porgram Size)为:FLASH 占用 5780 字节(Code + RO + RW),SRAM 占用 1928 字节(RW + ZI);并成功创建了 Hex 文件(可实行文件,放在 Output 目录下)。至此,新建寄存器版本 MDK 工程完成。
8、下载验证
有两种方法可以给 STM32F103 芯片下载代码:1,利用串口下载;2,利用仿真器下载。这两种下载方法:在 MDK 主界面,点击: (下载按钮,也可以按键盘快捷键:F8),就可以将代码下载到开拓板,
下载成功
上图提示:Application running…,则表示代码下载成功,且开始运行。可以看到 LED0 和LED1 交叉闪烁。
以上是小白对第一天学习的了内容做了大概的总结,由于篇幅受限,很多地方有缩略,欢迎小伙伴们在评论区提问,相互互换。本日的内容到此结束,打工仔只能不定期更新,再见!
#STM32##30天学会STM32#