【STM32CubeMX】教程一_创建工程/界面介绍
文章目录
前言
本篇博客会详细介绍STM32cubeMX的基本使用和如何新建HAL库版本的MDK工程。
使用硬件:STM32F103C8T6
使用软件:STM32CubeMX、keil5(MDK)、VSCode
提示:以下是本篇文章正文内容
一、下载固件包
二、新建工程/界面描述
1. 创建工程
具体流程如下:
- 搜索mcu型号
- 选择芯片
- 创建工程
错误:图中package应该是芯片封装。
2.配置
1.界面介绍
首先介绍图形界面及其功能:
1、外设资源,提供两种展现方式
- Categories 种类选择
将mcu的外设分类排列,便于用户选择 - A->Z
按照字母顺序将外设排列,便于用户查找
2、预览
- 引脚预览:点击引脚即可选择设置引脚的具体功能
- 系统预览:观察各外设配置情况
3、外设配置
以GPIO为例介绍,引脚预览设置脚口功能,外设配置区域初始化,设置具体参数
2.时钟等系统配置
- 配置时钟源,这里选择外部时钟:Crystal/Ceramic Resonator
- 设置debug,STM32CubeMX默认关闭debug.这里我们选择四线JTAG即可
- 配置系统时钟数,设置系统工作频率
时钟树这里不多介绍,自行查找网络资料学习
3.配置外设
以配置GPIO为例,电路图如下
- 我们需要将PB9/PB8设置为低电平输出。
三、输出工程
3.1
这里我们选择MDK,V5版本即可
切记工程目录不可以有中文字符
3.2
分析:
1、将HAL库的所有.C和.H都复制到所建工程中
优点:这样如果后续需要新增其他外设又可能不再用STM32CubeMX的时候便会很方便
缺点: 体积大,编译时间长(很长)
2、只复制所需要的.C和.H
优点:体积相对小,编译时间短,并且工程可复制拷贝
缺点: 新增外设时需要重新用STM32CubeMX导入
3、不复制文件,直接从软件包存放位置导入.C和.H
优点:体积小,比较节约硬盘空间
缺点: 复制到其他电脑上或者软件包位置改变,就需要修改相对应的路径
三种方式任选一个即可,鉴于MDK编译速度较慢,推荐选择第二种
3.3
点击 GENERATE CODE 生成工程
3.4 使用VSCode打开工程
- vscode提前安装好 keil assiant插件,可以使用vscode编译下载mdk项目
用户代码请放在/* USER CODE BEGIN XXX */ /* USER CODE END XXX */之间,否则再次生成工程时会被删除。
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
用户头文件区
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */
用户 typedf区
/* USER CODE END PTD */
/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
用户宏定义区
/* USER CODE END PD */
/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */
/* USER CODE END PM */
/* Private variables ---------------------------------------------------------*/
/* USER CODE BEGIN PV */
用户变量区
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
/* USER CODE BEGIN PFP */
用户函数区
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
用户代码区
/* USER CODE END 0 */