更新第二章

master
高宏宇 12 months ago
parent ede25b366e
commit e5e5bef955

@ -136,6 +136,22 @@ VBUS是TYPE-C的5VVSWD是调试接口SWD的5V通过防倒灌电路使得
# 3. 开发环境 # 3. 开发环境
## 3.1. 开发软件
### 3.1.1. 开软件开发工具(p45)
1. STM32CubeMX图形化的芯片配置工具可以完成目标选择、引脚分配、外设配置和始终配置等工作并自动生成初始化代码和应用程序的工程框架
2. STM32CubeIDE基于eclipse 的 c/c++ 工具链的集成开发环境提供代码编辑、编译、下载和调试等多种功能同时将STM32CubeMX以插件的方式继承到IDE中。
### 3.1.2. 嵌入式软件
1. STM32CubeMCU Packages (MCU固件包)
1. STM32Cube HAL APIs
2. STM32Cube LL APIs
3. 中间件
## 3.2. 开发环境安装
[视频:安装stm32CubeIDE](https://www.bilibili.com/video/BV1HM411b78E/?spm_id_from=333.788&vd_source=3c8e333d6657680a469ddf0238f01d6a) [视频:安装stm32CubeIDE](https://www.bilibili.com/video/BV1HM411b78E/?spm_id_from=333.788&vd_source=3c8e333d6657680a469ddf0238f01d6a)
书上介绍的开发环境是Keil开发环境这个在51中也使用过但是该软件是属于商业软件需要购买。因此我们使用意法半导体提供的免费开发环境stm32cubeide其开发过程与书上讲的几乎完全一致且集成度更好更便于使用。 书上介绍的开发环境是Keil开发环境这个在51中也使用过但是该软件是属于商业软件需要购买。因此我们使用意法半导体提供的免费开发环境stm32cubeide其开发过程与书上讲的几乎完全一致且集成度更好更便于使用。
@ -163,7 +179,7 @@ STM32CubeIDE集成了STM32CubeMX芯片选型、配置、代码生产等
5. 工程配置 5. 工程配置
6. 程序编写 6. 程序编写
## 3.1. 升级STLink固件 ## 3.3. 升级STLink固件
STLink 调试器版本需更新,否则可能无法下载程序和进行调试。 STLink 调试器版本需更新,否则可能无法下载程序和进行调试。
@ -176,9 +192,9 @@ STLink 调试器版本需更新,否则可能无法下载程序和进行调试
## 3.2. 示例LED闪烁 ## 3.4. 示例LED闪烁
### 3.2.1. 新建项目 ### 3.4.1. 新建项目
File->New->STM32 Project 出现以下界面: File->New->STM32 Project 出现以下界面:
@ -194,7 +210,7 @@ File->New->STM32 Project 出现以下界面:
选择开发固件其实就是函数编程的接口版本类似C开发中使用的三方库一般不用更改直接点击2位置的Finish完成。如果遇到下图对话框选择Yes。 选择开发固件其实就是函数编程的接口版本类似C开发中使用的三方库一般不用更改直接点击2位置的Finish完成。如果遇到下图对话框选择Yes。
### 3.2.2. 硬件配置 ### 3.4.2. 硬件配置
![image-20240831155740992](./img/image-20240831155740992.png) ![image-20240831155740992](./img/image-20240831155740992.png)
@ -214,7 +230,7 @@ File->New->STM32 Project 出现以下界面:
PA6变绿并且有个图钉表示这个端口已经被配置和占用。使用ctl+s 保存更改IDE会询问是否生成代码框架当然选择Yes。 PA6变绿并且有个图钉表示这个端口已经被配置和占用。使用ctl+s 保存更改IDE会询问是否生成代码框架当然选择Yes。
### 3.2.3. 加入代码 ### 3.4.3. 加入代码
打开 main.c 大约在101 行左右输入以下代码。注意注释代码是IDE自动生成的不要删除 打开 main.c 大约在101 行左右输入以下代码。注意注释代码是IDE自动生成的不要删除
@ -244,7 +260,7 @@ PA6变绿并且有个图钉表示这个端口已经被配置和占用。
注意接口应该是SWD一般不用修改直接OK后观察开发板的效果。 注意接口应该是SWD一般不用修改直接OK后观察开发板的效果。
### 3.2.4. 调试 ### 3.4.4. 调试
如下图选择编译模式为Debug 如下图选择编译模式为Debug
@ -283,20 +299,20 @@ PA6变绿并且有个图钉表示这个端口已经被配置和占用。
Stm32CubeIDE 其实是由多个工具所构成: Stm32CubeIDE 其实是由多个工具所构成:
- Stm32Cube该工具是一个独立的工具可以嵌入到 Stm32CubeIDE 中进行工作。就是在本章 3.2.1 中新建项目用到的这个工具。这个工具包含了芯片选择、芯片配置、芯片相关开发资源下在与更新、代码框架生成和更新等功能。可以这么说这是STM32开发工具的核心IDE只是更容易编程和调试而已。 - Stm32CubeMX:该工具是一个独立的工具,可以嵌入到 Stm32CubeIDE 中进行工作。就是在本章 3.2.1 中新建项目用到的这个工具。这个工具包含了芯片选择、芯片配置、芯片相关开发资源下在与更新、代码框架生成和更新等功能。可以这么说这是STM32开发工具的核心IDE只是更容易编程和调试而已。
- hEclipse CDT IDE这是基于Eclipse的C/C++开发环境,用于便捷的代码开发和调试。 - Eclipse CDT IDE这是基于Eclipse的C/C++开发环境,用于便捷的代码开发和调试。
- GCC for ARMC/C++交叉编译环境,用于生成目标代码。 - GCC for ARMC/C++交叉编译环境,用于生成目标代码。
- ST-Link 工具下载和调试工具用于把目标代码下载到开发板或者与Eclipse协同对代码进行调试。 - ST-Link 工具下载和调试工具用于把目标代码下载到开发板或者与Eclipse协同对代码进行调试。
## 4.1. Stm32Cube ## 4.1. Stm32CubeMX
该工具是整个STM32开发的核心在IDE中有个后缀为ioc的文件 该工具是整个STM32开发的核心在IDE中有个后缀为ioc的文件
![image-20240901084133705](./img/image-20240901084133705.png) ![image-20240901084133705](./img/image-20240901084133705.png)
这就是Stm32Cube所维护的文件该文件中有当前MCU的所有配置信息、项目所依赖的软件功能配置、代码生成控制等信息。通过该工具最终目的是生成一个代码框架我们只需要在代码框架下加入我们的业务逻辑就好了。这样就避免了繁琐的芯片初始化、配置等过程这些工具都给你做好了。 这就是Stm32CubeMX所维护的文件该文件中有当前MCU的所有配置信息、项目所依赖的软件功能配置、代码生成控制等信息。通过该工具最终目的是生成一个代码框架我们只需要在代码框架下加入我们的业务逻辑就好了。这样就避免了繁琐的芯片初始化、配置等过程这些工具都给你做好了。
在IDE中双击后缀为ioc的文件就会打开 Stm32Cube 的界面,如果进行了修改,保存的时候会询问是否重新生成代码框架。 在IDE中双击后缀为ioc的文件就会打开 Stm32CubeMX 的界面,如果进行了修改,保存的时候会询问是否重新生成代码框架。
这个工具还有一个功能是维护 MCU Packages 就是不同系列MCU的底层框架代码和一些附加功能代码网络、USB、操作系统等。通过 Help 菜单中的 Manage Embedded Software Packages 功能可以打开。可以看到支持的MCU系列的相关软件包。 这个工具还有一个功能是维护 MCU Packages 就是不同系列MCU的底层框架代码和一些附加功能代码网络、USB、操作系统等。通过 Help 菜单中的 Manage Embedded Software Packages 功能可以打开。可以看到支持的MCU系列的相关软件包。
@ -306,9 +322,9 @@ Stm32CubeIDE 其实是由多个工具所构成:
![Alt text](img/%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B.drawio.png) ![Alt text](img/%E7%BC%96%E8%AF%91%E8%BF%87%E7%A8%8B.drawio.png)
上面就是整个的开发的流程STM32Cube在配置方面减少了开发者大量复杂且容易出错的芯片配置和初始化工作使得开发者可以专注自己的业务逻辑实现。 上面就是整个的开发的流程STM32CubeMX在配置方面减少了开发者大量复杂且容易出错的芯片配置和初始化工作,使得开发者可以专注自己的业务逻辑实现。
接下来我们来看看STM32Cube帮助我们做了些什么我们的代码结构如下 接下来我们来看看STM32CubeMX帮助我们做了些什么,我们的代码结构如下:
![image-20240901091010047](./img/image-20240901091010047.png) ![image-20240901091010047](./img/image-20240901091010047.png)
@ -317,7 +333,7 @@ Stm32CubeIDE 其实是由多个工具所构成:
- Core 用户的核心代码在这里; - Core 用户的核心代码在这里;
- Drivers 硬件抽象层的代码在这里,包括各种外围硬件驱动,操作系统配置等; - Drivers 硬件抽象层的代码在这里,包括各种外围硬件驱动,操作系统配置等;
- Debug/Release 和传统C/C++一样,编译的中间代码; - Debug/Release 和传统C/C++一样,编译的中间代码;
- Blink.ioc 工程文件,被 Stm32Cube 所维护; - Blink.ioc 工程文件,被 Stm32CubeMX 所维护;
- 其他文件。。。 - 其他文件。。。
其实,大部分时间,开发者只需要维护 Core 中的部分代码即可。 其实,大部分时间,开发者只需要维护 Core 中的部分代码即可。
@ -378,9 +394,9 @@ HAL_Delay(1000); 表示使用延时1000毫秒
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); 两个参数第一个代表端口就是上面的常量定义的LED端口第二个代表具体的引脚就是LED的端口。 HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); 两个参数第一个代表端口就是上面的常量定义的LED端口第二个代表具体的引脚就是LED的端口。
> 其实框架还生成了很多工作包括MCU的时钟初始化、总线初始化、内存初始化等工作。这些工作都使用 Stm32Cube 的配置进行代码是自动生成的一般不用关心。在后续的工作当中我们还会用到很多Stm32Cube的配置功能。 > 其实框架还生成了很多工作包括MCU的时钟初始化、总线初始化、内存初始化等工作。这些工作都使用 Stm32CubeMX 的配置进行代码是自动生成的一般不用关心。在后续的工作当中我们还会用到很多Stm32CubeMX的配置功能。
## 4.4. Stm32Cube 基本功能 ## 4.4. Stm32CubeMX 基本功能
![image-20240901123125992](./img/image-20240901123125992.png) ![image-20240901123125992](./img/image-20240901123125992.png)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Loading…
Cancel
Save