文章目录
1. STM32CubeMX
STM32CubeMX是STMicroelectronics(意法半导体)为其STM32系列微控制器提供的图形化配置工具。它旨在简化和加速嵌入式系统的开发过程。通过STM32CubeMX,开发者可以方便地配置微控制器的硬件资源,并生成初始化代码,从而减少手动编写代码的复杂性和可能的错误。
主要功能和特点
1. 图形化硬件配置
- 引脚配置:用户可以通过图形界面直观地配置微控制器的引脚功能,例如GPIO、USART、I2C、SPI等。
- 外设配置:配置各种外设,如定时器、ADC、DAC、PWM等。
- 时钟树配置:设置微控制器的时钟源和时钟树,确保外设和内核工作在适当的频率下。
2. 自动生成代码
- 代码自动生成:根据用户的配置,STM32CubeMX自动生成初始化代码和驱动代码。这些代码包括引脚初始化、外设初始化和时钟配置。
- 项目文件生成:支持生成适用于多种IDE的项目文件,如Keil、IAR、Eclipse等。
3. 中间件支持
- RTOS支持:支持FreeRTOS等实时操作系统的集成,用户可以方便地启用和配置RTOS。
- USB、TCP/IP栈:集成了USB和TCP/IP等常用的中间件,简化了这些复杂协议的开发过程。
2. 界面介绍
主界面
-
菜单栏
- File:文件菜单,提供新建项目、打开项目、保存项目等基本功能。
- Window:窗口菜单,允许用户管理和配置窗口布局。
- Help:帮助菜单,提供帮助文档和软件信息。
-
已经存在的工程
- Existing Projects:列出了最近打开的项目文件,用户可以快速打开这些已经存在的工程进行修改和查看。
-
新建工程
- New Project:新建工程区域,提供了多种方式创建新项目。
- 从MCU中开发我的项目(Start My Project from MCU):选择具体的STM32 MCU型号进行项目开发。
- 从开发板中开发我的项目(Start My Project from ST Board):选择具体的ST开发板进行项目开发。
- 从示例中开发我的项目(Start My Project from Example):从现有的项目示例中创建新项目。
- New Project:新建工程区域,提供了多种方式创建新项目。
-
软件包安装管理
- Manage Software Installations:管理STM32CubeMX和嵌入式软件包的安装和更新。
- 检查更新(Check for Updates):检查STM32CubeMX和嵌入式软件包的更新。
- 安装/移除软件包(Install / Remove):安装或移除STM32CubeMX和相关的嵌入式软件包。
- Manage Software Installations:管理STM32CubeMX和嵌入式软件包的安装和更新。
-
辅助工具
- Assistant Tools:提供了一些辅助工具和功能扩展。如示例项目、教程和与其他工具的集成。
-
关于STM32
- About STM32:提供关于STM32产品的更多信息和资源链接。
File 界面
Windows 界面
Help 界面
Manage 软件包管理页面
这里可以安装需要的软件包,绿色的表示已经安装,蓝色表示未安装。
Updater Settings 界面
软件包存放位置(Firmware Repository)
- Repository Folder:这是存放STM32Cube固件包的文件夹路径。在这个位置,最好存到C盘之外的位置。
检查和更新设置(Check and Update Settings)
-
Manual Check(手动检查):如果选择此选项,STM32CubeMX不会自动检查更新,用户需要手动点击更新按钮来检查和下载最新的软件包。
-
Automatic Check(自动检查):如果选择此选项,STM32CubeMX会自动检查更新。用户可以设置两次检查之间的时间间隔(以天为单位)。例如,在“Interval between two Checks (days)”字段中输入“5”,表示每隔五天自动检查一次更新。
数据自动刷新(Data Auto-Refresh)
-
No Auto-Refresh at Application start(程序启动时不刷新数据):如果选择此选项, STM32CubeMX在启动时不会自动刷新数据,用户需要手动刷新。
-
Auto-Refresh Data-only at Application start(程序启动时只刷新数据):如果选择此选项, STM32CubeMX在启动时会自动刷新数据,但不会刷新文档。这个选项默认选中,保证了应用程序启动时数据是最新的。
-
Auto-Refresh Data and Docs at Application start(程序启动时刷新数据和文档):如果选择此选项, STM32CubeMX在启动时会同时刷新数据和文档,确保所有信息都是最新的。
-
Interval between two data-refreshes (days)(两次数据刷新的时间间隔):用户可以设置两次数据刷新的时间间隔(以天为单位)。例如,在此字段中输入“3”,表示每隔三天自动刷新一次数据。
3. 使用教程
新建工程
这里选择使用第一种新建工程的方式
选择芯片界面
先输入想要使用的芯片型号,然后双击选择详细的芯片类型即可。
配置页面
主界面区域划分
1. MCU外设选择界面(Categories)
- 位置:界面左侧
- 功能:在这个区域,可以选择使用的MCU外设资源。
- System Core:包含系统核心外设,如GPIO(通用输入输出)、NVIC(嵌套向量中断控制器)、RCC(复位和时钟控制)等。
- Analog:包含模拟外设,如ADC(模数转换器)、DAC(数模转换器)、OPAMP(运算放大器)等。
- Timers:包含定时器外设,如基本定时器、通用定时器、PWM定时器等。
- Connectivity:包含通信外设,如USART、SPI、I2C、CAN等。
- Middleware:包含中间件,如USB、TCP/IP栈、文件系统等。
2. 详细参数配置界面(Parameter Settings)
- 位置:界面中部
- 功能:在此区域,可以对所选择的外设进行详细配置。
- 配置选项:不同外设的具体参数配置选项显示在此区域中,用户可以设置这些参数以满足具体需求。
- Parameter Settings(参数设置):配置外设的具体参数。
- User Constants(用户常量):定义和使用用户常量。
- NVIC Settings(NVIC设置):配置中断优先级和使能。
3. 芯片引脚预览界面(Pinout View)
- 位置:界面右侧
- 功能:此区域显示STM32芯片的引脚分布和配置预览。
- 引脚视图:直观展示每个引脚的位置及其当前配置。
- 引脚功能配置:可以在引脚视图中直接点击某个引脚,选择并配置该引脚的功能。
引脚配置页面
引脚配置可以通过两种方式完成:
-
通过外设选择界面配置:
- 在MCU外设选择界面中选择具体的外设模块(如GPIO、USART等),然后配置相关的引脚功能。
-
通过引脚预览界面配置:
- 在芯片引脚预览界面中直接点击相应的引脚,选择并配置该引脚的功能。
引脚配置示例:PC13引脚
-
点击需要配置的引脚:
- 点击PC13引脚。在引脚预览界面中点击PC13引脚,会弹出一个功能选择菜单。
-
选择引脚功能:
- GPIO_EXTI13:外部中断
- EVENTOUT:事件输出
- GPIO_Analog:模拟输入输出
- GPIO_Output:通用输出
- GPIO_Input:通用输入
- RTC_TAMPER:实时钟防篡改
- RTC_OUT:实时钟输出
- Reset_State:复位状态
引脚配置界面的颜色指示
不可配置引脚(淡黄色)
- 电源专用引脚:在引脚预览界面中,电源专用引脚(如VDD、VSS等)以淡黄色显示。这些引脚是固定功能的,不可进行其他用途配置。
- 示例:VDD 和 VSS:这些引脚用于供电和接地,不能配置为其他功能。
已配置但未初始化的引脚(黄色)
- I/O功能但未初始化:引脚显示为黄色,表示该引脚已经配置了一个I/O功能,但在详细配置界面中没有进行初始化操作。
- No mode状态:这种状态下,引脚已经进行资源分配,但没有具体的外设功能初始化。
已配置并初始化的引脚(绿色)
- 配置成功的引脚:引脚显示为绿色,表示该引脚已经成功配置并完成初始化,配置有效且已生效。
配置RCC时钟参数
高速外部时钟(HSE):用于设置微控制器的高速外部时钟源,通常用于系统时钟或外设时钟。
低速外部时钟(LSE):用于设置微控制器的低速外部时钟源,通常用于RTC(实时时钟)或低功耗模式下的时钟。
- Disable(禁用):禁用高速外部时钟。
- BYPASS Clock Source(旁路时钟源):使用外部时钟信号,通过旁路模式将时钟信号直接输入到微控制器中。
- Crystal/Ceramic Resonator(外部晶振):使用外部晶振或陶瓷谐振器作为时钟源。
如果不配置RCC时钟,则是默认使用内部高速时钟(HSI),推荐将RCC时钟配置高速外部时钟和外部晶振。
配置SYS参数
1. Debug(调试接口)
默认情况下,调试功能是关闭的(No Debug)。用户可以根据需要选择使用的调试协议,主要有SW(Serial Wire)和JTAG两种调试接口。
调试协议选项:
- No Debug:不使用调试器关闭调试功能。
- Serial Wire:使用SWD(Serial Wire Debug)协议进行下载和调试,推荐使用此选项,因其只需要2个引脚(SWCLK和SWDIO)。
- JTAG (4 pins):使用JTAG协议的4引脚模式进行下载和调试。
- JTAG (5 pins):使用JTAG协议的5引脚模式进行下载和调试,比4引脚模式多了一个复位引脚(nTRST)。
- Trace Asynchronous Sw:使用SWD协议的追踪功能,有时也可以解决使用ST-Link烧录后无法再次烧录和调试的问题。
推荐设置:
- Serial Wire:SWD协议占用引脚少,调试速度快,推荐配置成Serial Wire模式。
- 配置一致性:在STM32CubeMX中选择SW协议时,MDK等开发环境中也必须选择SW协议。同样,选择JTAG协议时也需要保持配置一致,避免下载和调试失败。
2. System Wake-Up(系统唤醒)
- PA0引脚:设置低功耗模式下通过PA0引脚实现自动唤醒功能。
3. Timebase Source(时基源)
- HAL的时基源:指HAL库中的uwTick,用于实现HAL_Delay()函数及各种超时功能的时钟基准。
- Sys Tick(嘀嗒定时器):通常选择默认的Sys Tick作为系统时基源,维护SYS Timebase Source。这个选择将时基更新放在SysTick_Handler()中断服务函数中,具体实现为HAL_IncTick()函数。
实际应用中的配置
-
选择Serial Wire模式:
- 在实际项目中,推荐选择Serial Wire模式(SWD协议),因其调试速度快,占用引脚少。
- 在STM32CubeMX中选择Serial Wire,并在MDK等开发环境中保持一致配置,确保下载和调试成功。
-
使用ST-Link或J-Link调试器:
- ST-Link调试器:选择Serial Wire模式。
- J-Link调试器:如果使用JTAG协议,根据实际要求选择JTAG (4 pins) 或 JTAG (5 pins)。如果采用SWD协议,也可以选择Trace Asynchronous Sw模式。
配置时钟树
因为在前面RCC时钟配置中,选择使用外部晶振,在这里需要切换使用外部高速时钟模式(HSE),如果没有配置RCC时钟,则使用默认的内部高速时钟(HSI);
然后配置PLLCLK锁相环,之后倍频更改系统主时钟;
推荐使用最大时钟频率(72M), 可以直接修改后面HCLK(MHZ)系统时钟,直接改成72M,然后按下回车就可以, 前面会自动将PLL设置为8,PLMul设置为X9。
Project Manager项目管理配置
Project(工程设置)
项目路径和项目名称要使用英文
Code Generator(代码生成器)
-
Copy all used libraries into the project folder
- 功能:将HAL库的所有
.c
和.h
文件复制到所建工程中。 - 优点:如果后续需要新增其他外设而不再用STM32CubeMX时,会很方便。
- 缺点:项目体积大,编译时间相比其他选项更长。
- 功能:将HAL库的所有
-
Copy only the necessary library files
- 功能:只复制所需的
.c
和.h
文件到工程中。 - 优点:项目体积相对较小,编译时间短,工程易于复制和迁移。
- 缺点:新增外设时需要重新用STM32CubeMX导入。
- 功能:只复制所需的
-
Add necessary library files as reference in the toolchain project configuration file
- 功能:不复制文件,直接从软件包存放位置引用
.c
和.h
文件。 - 优点:项目体积最小,节约硬盘空间。
- 缺点:项目复制到其他电脑上或者软件包位置改变时,需要修改相应路径。
- 功能:不复制文件,直接从软件包存放位置引用
2. Generated Files
这部分配置了代码生成的具体方式和文件管理。
-
Generate peripheral initialization as a pair of
.c/.h
files per peripheral- 功能:为每个外设生成单独的
.c
和.h
文件。 - 优点:代码组织清晰,便于管理和维护。
- 功能:为每个外设生成单独的
-
Backup previously generated files when re-generating
- 功能:重新生成代码时备份之前生成的文件。
- 优点:确保旧代码不会丢失,便于回滚和比较。
-
Keep User Code when re-generating
- 功能:重新生成代码时保留用户代码。
- 优点:防止用户手写的代码被覆盖。
-
Delete previously generated files when not re-generated
- 功能:重新生成代码时删除之前生成的文件。
- 优点:保持项目整洁,避免冗余文件。
3. HAL Settings
这部分配置了HAL库的特定设置。
-
Set all free pins as analog (to optimize the power consumption)
- 功能:将所有未使用的引脚设置为模拟输入,以优化功耗。
- 优点:减少未使用引脚的功耗,提高系统能效。
-
Enable Full Assert
- 功能:启用完整的断言检查。
- 优点:在开发过程中提供更严格的错误检查,有助于调试。
4. Template Settings
这部分允许用户选择自定义代码生成模板。
- Settings...:配置自定义代码生成模板的选项。
生成工程文件
KEIL代码编写
生成项目文件后,使用keil打开,之后要注意,所有后期添加的代码都要在固定的位置。
比如添加新的头文件:
添加新的变量:
添加新的主函数代码: