网站首页 > 编程文章 正文
小白斗胆发文总结自己的学习过程,有错误之处还希望有大佬指正。俗话说吃不了学习的苦,就得吃体力劳动的苦,从今天开始记录我的学习全过程,希望我能每天坚持下来。
一、开门见山,一开始就是搭建开发环境。
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 这些与初始化和系统相关的函数。
HAL 是 Hardware Abstraction Layer 的缩写,即硬件抽象层。是 ST 为可以更好的确保跨STM32 产品的最大可移植性而推出的 MCU 操作库。这种程序设计由于抽离应用程序和硬件底层的操作,更加符合跨平台和多人协作开发的需要。HAL 库是基于一个非限制性的 BSD 许可协议(Berkeley Software Distribution)而发布的开源代码。
2、HAL库驱动包的获取
从 ST 官方网站上直接获取固件库,网页登陆:www.st.com,在打开的页面中依次选择:“Tools & Software”->“Ecosystem”->“STM32Cube”->新页面->选择“Prodcut selector”,如图:
在展开的页面中选择我们需要和固件,这展开“STM32CubeF1”即可看到我们需要的 F1 的安装包,按下图操作,在新的窗口中拉到底部,选择适合自己的下载方式,注册帐号即可获取相应的驱动包。
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#
猜你喜欢
- 2024-09-11 STM32使用keil编译时出现结构体未定义错误原因
- 2024-09-11 STM32按键中断应用实例(stm32多个按键中断)
- 2024-09-11 如何安装KEIL5,从零起步学习单片机STM32系列
- 2024-09-11 用keil5进行STM32项目开发时,那些让人摸不着头脑的程序
- 2024-09-11 如何使用keil 5 编写 51单片机 工程
- 2024-09-11 工程师实战:基于STM32 MCU的数字函数发生器
- 2024-09-11 如何使用STM32的片上调试接口进行软件调试和性能优化
- 2024-09-11 STM32 CubeMX生成的代码调试与优化技巧
- 2024-09-11 原来STM32单片机的开发如此的简单
- 2024-09-11 CubeMX与STM32的Keil开发基础(stm32cubeide keil)
你 发表评论:
欢迎- 最近发表
-
- 数据不丢失 从Windows 11的DEV版降级到正式版
- Win11学院:在Windows11 25905预览版中如何启用Dev Drive
- DEVC++的卸载(devcon卸载驱动)
- win11 dev 开发版 升级攻略完整版
- 最新Windows11+Windows10系统各种版本永久激活密钥以及下载链接
- 想学Python,却还记不住语法?神仙书籍 python背记手册双手奉上
- 如何用Python语言开发大型服务器程序
- 30天Python 入门到精通(python零基础入门到精通)
- 入门扫盲:9本自学Python PDF书籍,让你避免踩坑,轻松变大神!
- 学好Python需要看的4本书推荐(学python好用的书)
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)