百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

单片机STM32开发,自学第一天

dezehang 2024-11-25 10:49 1 浏览

小白斗胆发文总结自己的学习过程,有错误之处还希望有大佬指正。俗话说吃不了学习的苦,就得吃体力劳动的苦,从今天开始记录我的学习全过程,希望我能每天坚持下来。

一、开门见山,一开始就是搭建开发环境。

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#

相关推荐

WIN10系统如何安装UG10.0

随着科技的不断进步与更新,现在有很多公司己经安装上了WIN10的系统以及使用UG10.0了,但很多人反映WIN10系统安装UG10.0不好装,以下详细介绍一下1如果WIN10系统没有自带有JAVA需...

自学UG编程的心得分享

为什么有的人3个月学会基本的UG建模画图编程,有的断断续续3——5年才学会,还有的人干了7年的加工中心还不会电脑画图编程。这是什么原因?1.顾虑太多,什么都想得到,什么都想一起抓,总是上班加班没时间,...

UG/NX 绘制一个捞笊(zhào)模型,或者也可以叫它漏勺?

今天我们来看看这个模型,起因是群里有小伙伴说要做一个捞笊的模型,看见这名字直接给我整懵了,然后他发了张家里漏勺的图片才知道原来这玩意还有个这种名字。这东西相信每个小伙伴家里都有吧,它的建模方法也比较...

再也不用为学UG编程发愁了!380集最新UG资料免费送

上期发的UG教程很多粉丝都领到了,收获越来越多的好评!有你们一直陪伴真的很高兴,谢谢各位粉丝!为了给大家提供更优质的资源,这两个月都在整理你们最关心的UG资源,都是多位编程工厂老师傅的工厂实战精华,真...

优胜原创UG_3-4-5轴后处理下载

反复上机调试,安全稳定可靠,请放心使用2020.11.21,修复YSUG4-5轴后处理锁轴输出...

青华模具学院-UG10.0安装文件说明

青华模具学院分享:今天我们来跟大家一起学习NX10.0版本的安装方法,网上有很多这个版本的安装视频以及方法图文,但到最终安装软件时仍有很多新手对安装仍然感到头痛,基于这样的情况,我们特别就NX10.0...

UGnx10安装说明

温馨提示,安装前,请退出杀毒软件,关闭防火墙,因为这些软件可能阻断NX主程序和许可程序间的通信,导致安装后,软件无法启动。1、解压下载后的压缩包,右键,选择‘’解压到UGNX10_64位正式版(csl...

正版UG软件,正版UG代理,正版软件和盗版软件的区别

大家都知道,UG软件是制造业必不可少的一款三维软件,广泛应用于:CAE(有限元分析),CAD(产品设计/模具设计),CAM(计算机辅助制造编程),那么有人不禁要问了,正版软件和盗版软件在使用上有明显区...

非常全面的UG加工模块中英对照(图标注释)

大家好,我是粥粥老师,听说很多同学都在学习UG但是没有学习资料和安装包,今天粥粥老师就全部打包好免费发放给你们,那么怎么获取全套资料图档安装包呢领取途径①关注②评论、点赞、转发③私信“UG或者...

腾讯自研Git客户端 UGit|Git 图形界面客户端

支持平台:#Windows#macOS腾讯推出的一款Git图形界面客户端,简化了Git的使用流程,特别适合处理大型项目和文件。支持直接提交和推送操作,避免在大规模项目中由于远程频繁变更而导致...

经典收藏:UG重用库的一些不为人知小技巧

免费领取UG产品编程、UG多轴UG模具编程、安装包安装教程图档资料关注私信我“领取资料”,即可免费领取完整版,感谢支持,爱你们哟,么么主题:UG后处理+仿真+外挂UG重用库的正确使用方法:首先有...

UG编程常用指令G、M代码,快收藏好

今天给大家分享数控编程常用的指令代码,希望对正在学习路上的你带来一丝丝帮助。最好的方法就是转发到自己空间,方便以后学习。对了,如果你还需要其他UG教程学习资料,CNC加工中心的一些参数,以及UG画图,...

UG NX7.0中文版从入门到精通

Unigraphics(简称UG)是一套功能强大的CAD/CAE/CAM应用软件,UGNX7是其最新版本。《UGNX7从入门到精通(中文版)》以UGNX7为平台,从工程应用的角度出发,通过基...

经典UG建模基础练习图纸

UG是目前工作中比较优秀拥有大量用户的一款机械模具产品行业三维设计软件,cam加工丶软件支持全中文汉化;能够带给用户更为非凡的设计与加工新体验。很多朋友私信小编问有没有UG建模练习图纸,今天给大家分享...

UG NC软件基础操作,如何设置UG草图精度

默认情况下我们绘制草图一般只保留一位小数,即使你输入多位小数软件也会自动四舍五入,这个你做一些国标的图还好,国标以毫米为单位,一般保留小数点后一位就够了,但如果你做的图是英制单位,那么保留一位小数肯定...