打印
[开发工具]

STM32笔记(1) STM32简介及环境搭建

[复制链接]
2765|36
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
STM32简介

ST 指法意半导体,M 指微控制器,即微型计算机的主要组成部分集成在一块芯片上的单芯片微型计算机。32表示这是一个32位的微型控制器。总的来说,STM32就是由意法半导体生产的32位微控制器,基于ARMv7架构的Coretex-M3内核,也是一种单片机。

命名规则及选型依据

1.命名规则


2.选型依据
首先根据项目需求选择合适的MCU芯片,一般来说如果并不需要高性能来进行大量的数据运算,可以选择F1系列,反之,F4系列芯片比较适合。

其次,引脚的多少与功能,FLASH 容量,根据程序的需求进行适当选择。


使用特权

评论回复
沙发
gaonaiweng|  楼主 | 2021-9-28 21:41 | 只看该作者
开发环境
一般开发环境就是Keil5 MDK,除此之外还有ST官方的TrueStudio,以及HAL+STM32CubeMX+Keil5。

其中TrueStudio for STM32是一个灵活的、可扩展的IDE和调试STM32单片机的强大工具,基于开放标准(Eclipse和GNU)和扩展代码的专业特点,给系统的结构和动态行为提供了独特的见解。

而STM32CubeMx可以可视化地进行芯片资源和管脚配置,并且生成项目所有源程序,支持导入到keil5中进行后续程序的编写。

基于HAL库的开发方式是ST官方目前主推的开发方式,普通的固件库官方已经停止更新了。

并且对于单独采用Keil5来开发的话,需要下载对应芯片的芯片包,STM32F1系列芯片应下载F1系列的芯片包,F4的就下载F4的芯片包,同时如果是基于固件库开发还要去官网下载芯片相应的固件库。

使用特权

评论回复
板凳
gaonaiweng|  楼主 | 2021-9-28 21:41 | 只看该作者
程序烧录方式
1.串口下载
用USB转串口的方式烧录程序时,需要先下载相应的芯片驱动以及一个烧录软件,一般是Flymcu。

2.ST-LINK驱动
ST-LINK是一种调试下载器,通过20针脚与开发板相连,直接从keil5点击“load”烧录程序,可以减少烧录时间,并且进行相应Debug仿真测试。使用前需在keil5中先进行设置。

使用特权

评论回复
地板
gaonaiweng|  楼主 | 2021-9-28 21:42 | 只看该作者
开发方式
1.固件库开发
固件库是由官方提前编好的函数的集合。通过将寄存器底层进行封装,使得可以直接调用函数来控制寄存器,提高了可读性。

使用特权

评论回复
5
gaonaiweng|  楼主 | 2021-9-28 21:43 | 只看该作者
2.寄存器开发
寄存器是相当于一个存在于开发板上的一个变量,而我们可以通过编程直接控制寄存器,即使是固件库开发,归根到底也是对寄存器的控制

使用特权

评论回复
6
gaonaiweng|  楼主 | 2021-9-28 21:43 | 只看该作者
差别:寄存器是基础,虽然只掌握固件库开发可以比较容易上手stm32,但是无法直观地理解各种底层寄存器。

使用特权

评论回复
7
gaonaiweng|  楼主 | 2021-9-28 21:44 | 只看该作者

使用特权

评论回复
8
gaonaiweng|  楼主 | 2021-9-28 21:45 | 只看该作者
Keil5工程建立
基于固件库开发
在建立工程之前,建议在电脑的某个目录下面建立一个文件夹,后面所建立的工程都可以放在这个文件夹下面,这里建立一个文件夹为 Tem。

使用特权

评论回复
9
gaonaiweng|  楼主 | 2021-9-28 21:46 | 只看该作者
使用keil5建立新的工程并将目录定位到刚才建立的文件夹Tem 之下,在这个目录下面建立子文件夹 USER然后定位到 USER 目录下面,工程文件就都保存到 USER 文件夹下面。工程命名为Tem。

使用特权

评论回复
10
gaonaiweng|  楼主 | 2021-9-28 21:47 | 只看该作者
接下来会出现一个选择 CPU 的界面,即选择相应的芯片型号。

使用特权

评论回复
11
gaonaiweng|  楼主 | 2021-9-28 21:47 | 只看该作者
接 下 来 ,在 Template 工 程 目 录 下 面 , 新 建 3 个 文 件 夹 CORE, OBJ 以 及FWLib。 CORE 用来存放核心文件和启动文件, OBJ 是用来存放编译过程文件以及 hex 文件,FWLib 文件夹顾名思义用来存放 ST 官方提供的库函数源码文件。已有的 USER 目录除了用来放工程文件外,还用来存放主函数文件 main.c,以及其他包括 system_stm32f10x.c 等等。

使用特权

评论回复
12
gaonaiweng|  楼主 | 2021-9-28 21:48 | 只看该作者
下面将固件库包里面相关的启动文件复制到工程目录 CORE 之下。打开官方固件库包,定位到目录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 下面,将文件 core_cm3.c
和 文 件 core_cm3.h 复 制 到 CORE 下 面 去 。 然 后 定 位 到 目 录
STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\a
rm 下面,将里面 startup_stm32f10x_hd.s 文件复制到 CORE 下面。
(这里不同容量的芯片使用不同的启动文件)

使用特权

评论回复
13
gaonaiweng|  楼主 | 2021-9-28 21:49 | 只看该作者
定位到目录:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 下面将里面的三个文件 stm32f10x.h, system_stm32f10x.c,system_stm32f10x.h,复制到 USER目录之下。然后将
STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 下面的 4 个文 件main.c, stm32f10x_conf.h, stm32f10x_it.c, stm32f10x_it.h 复制到 USER 目录下面。

使用特权

评论回复
14
gaonaiweng|  楼主 | 2021-9-28 21:50 | 只看该作者
4~7步骤为固件库的复制,接下来在keil5的工程里右键点击 Target1,选择 Manage Components ,在Project Targets 一栏,在 Groups 一栏删掉一个 SourceGroup1,建立三个 Groups: USER,CORE,FWLIB。并将文件夹中相应文件导入。

使用特权

评论回复
15
gaonaiweng|  楼主 | 2021-9-28 21:50 | 只看该作者
接下来选择编译中间文件编译后存放目录。方法是点击魔术棒,然后选择“Output”选项下面的“Select folder for objects…” ,然后选择目录为我们上面新建的 OBJ 目录。

使用特权

评论回复
16
gaonaiweng|  楼主 | 2021-9-28 21:51 | 只看该作者
回到工程主菜单,点击魔术棒 ,出来一个菜单,然后点击 c/c++选项.然后点击Include Paths 右边的按钮。弹出一个添加 path 的对话框,将图上面的 3 个目录添加进去。记住, keil 只会在一级目录查找,所以如果目录下面还有子目录,记得 path一定要定位到最后一级子目录。然后点击 OK.

使用特权

评论回复
17
gaonaiweng|  楼主 | 2021-9-28 21:51 | 只看该作者
接下来配置一个全局的宏定义变量。按照步骤 10,定位到 c/c++界面,然后填写“STM32F10X_HD,USE_STDPERIPH_DRIVER”到 Define 输入框里面。(注意:这个是大容量的宏定义)

使用特权

评论回复
18
gaonaiweng|  楼主 | 2021-9-28 21:52 | 只看该作者
打开工程 USER 下面的 main.c,用相应代码将 main.c 已
有代码覆盖,然后进行编译。

使用特权

评论回复
19
gaonaiweng|  楼主 | 2021-9-28 21:53 | 只看该作者
这样一个工程模版建立完毕。下面还需要配置,让编译之后能够生成 hex 文件。同样点击魔术棒,进入配置菜单,选择 Output。然后勾上下三个选项。

使用特权

评论回复
20
gaonaiweng|  楼主 | 2021-9-28 21:53 | 只看该作者
基于寄存器开发
新建一个 TEST 的文件夹,然后在 TEST 文件夹里面新建 USER 文件夹,.使用keil5建立新的工程test并将目录定位到刚才建立的文件夹,保存在这个 USER 文件夹里面,之后, 弹出选择器件的对话框,在这里选择相应的芯片,特别注意: 一定要安装对应的器件 pack 才会显示这些内容!!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

59

主题

591

帖子

1

粉丝