STM32使用CubeMX创建HAL库工程文件

文章目录

[1. STM32CubeMX](#1. STM32CubeMX)

[2. 界面介绍](#2. 界面介绍)

[3. 使用教程](#3. 使用教程)

新建工程

选择芯片界面

​编辑

配置页面

引脚配置页面

引脚配置界面的颜色指示

配置RCC时钟参数

配置SYS参数

配置时钟树

[Project Manager项目管理配置](#Project Manager项目管理配置)

生成工程文件

KEIL代码编写


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):从现有的项目示例中创建新项目。
  • 软件包安装管理

    • Manage Software Installations:管理STM32CubeMX和嵌入式软件包的安装和更新。
      • 检查更新(Check for Updates):检查STM32CubeMX和嵌入式软件包的更新。
      • 安装/移除软件包(Install / Remove):安装或移除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芯片的引脚分布和配置预览。
    • 引脚视图:直观展示每个引脚的位置及其当前配置。
    • 引脚功能配置:可以在引脚视图中直接点击某个引脚,选择并配置该引脚的功能。

引脚配置页面

引脚配置可以通过两种方式完成:

  1. 通过外设选择界面配置

    • 在MCU外设选择界面中选择具体的外设模块(如GPIO、USART等),然后配置相关的引脚功能。
  2. 通过引脚预览界面配置

    • 在芯片引脚预览界面中直接点击相应的引脚,选择并配置该引脚的功能。

引脚配置示例:PC13引脚

  1. 点击需要配置的引脚

    • 点击PC13引脚。在引脚预览界面中点击PC13引脚,会弹出一个功能选择菜单。
  2. 选择引脚功能

    • GPIO_EXTI13:外部中断
    • EVENTOUT:事件输出
    • GPIO_Analog:模拟输入输出
    • GPIO_Output:通用输出
    • GPIO_Input:通用输入
    • RTC_TAMPER:实时钟防篡改
    • RTC_OUT:实时钟输出
    • Reset_State:复位状态

引脚配置界面的颜色指示

不可配置引脚(淡黄色)

  • 电源专用引脚:在引脚预览界面中,电源专用引脚(如VDD、VSS等)以淡黄色显示。这些引脚是固定功能的,不可进行其他用途配置。
  • 示例VDDVSS:这些引脚用于供电和接地,不能配置为其他功能。

已配置但未初始化的引脚(黄色)

  • I/O功能但未初始化:引脚显示为黄色,表示该引脚已经配置了一个I/O功能,但在详细配置界面中没有进行初始化操作。
  • No mode状态:这种状态下,引脚已经进行资源分配,但没有具体的外设功能初始化。

已配置并初始化的引脚(绿色)

  • 配置成功的引脚:引脚显示为绿色,表示该引脚已经成功配置并完成初始化,配置有效且已生效。

配置RCC时钟参数

高速外部时钟(HSE):用于设置微控制器的高速外部时钟源,通常用于系统时钟或外设时钟。

**低速外部时钟(LSE):**用于设置微控制器的低速外部时钟源,通常用于RTC(实时时钟)或低功耗模式下的时钟。

  1. Disable(禁用):禁用高速外部时钟。
  2. BYPASS Clock Source(旁路时钟源):使用外部时钟信号,通过旁路模式将时钟信号直接输入到微控制器中。
  3. 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()函数。

实际应用中的配置

  1. 选择Serial Wire模式

    • 在实际项目中,推荐选择Serial Wire模式(SWD协议),因其调试速度快,占用引脚少。
    • 在STM32CubeMX中选择Serial Wire,并在MDK等开发环境中保持一致配置,确保下载和调试成功。
  2. 使用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时,会很方便。
    • 缺点:项目体积大,编译时间相比其他选项更长。
  • 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打开,之后要注意,所有后期添加的代码都要在固定的位置。

比如添加新的头文件:

添加新的变量:

添加新的主函数代码:

相关推荐
析木不会编程38 分钟前
【小白51单片机专用教程】protues仿真独立按键控制LED
单片机·嵌入式硬件·51单片机
枯无穷肉5 小时前
stm32制作CAN适配器4--WinUsb的使用
stm32·单片机·嵌入式硬件
不过四级不改名6775 小时前
基于HAL库的stm32的can收发实验
stm32·单片机·嵌入式硬件
嵌入式科普5 小时前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
嵌入式大圣5 小时前
单片机UDP数据透传
单片机·嵌入式硬件·udp
云山工作室6 小时前
基于单片机的视力保护及身姿矫正器设计(论文+源码)
stm32·单片机·嵌入式硬件·毕业设计·毕设
嵌入式-老费6 小时前
基于海思soc的智能产品开发(mcu读保护的设置)
单片机·嵌入式硬件
qq_397562318 小时前
MPU6050 , 设置内部低通滤波器,对于输出数据的影响。(简单实验)
单片机
liyinuo20178 小时前
嵌入式(单片机方向)面试题总结
嵌入式硬件·设计模式·面试·设计规范
艺术家天选8 小时前
STM32点亮LED灯
stm32·单片机·嵌入式硬件