STM32使用CubeMX创建HAL库工程文件
创始人
2024-12-28 22:40:06
0

文章目录

1. STM32CubeMX

2. 界面介绍

3. 使用教程

新建工程

选择芯片界面

​编辑

配置页面

引脚配置页面

引脚配置界面的颜色指示

配置RCC时钟参数

配置SYS参数

配置时钟树

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打开,之后要注意,所有后期添加的代码都要在固定的位置。

比如添加新的头文件:

添加新的变量:

添加新的主函数代码:

 

相关内容

热门资讯

【小程序】媒体API能力集成指... createIpcContextty.createIpcPlayerContext(string d...
安装教程!微扑克wpk辅助透明... 安装教程!微扑克wpk辅助透明挂!微扑克wpk辅助技巧(2020已更新)(哔哩哔哩);安装教程!微扑...
如何轻松地将文件从Androi... 文件从手机传输到个人电脑已成为一种常态。人们出于各种原因转移文件。也许是为了备份,您想...
影院选座系统小程序的设计 管理员账户功能包括:系统首页,个人中心,用户管理ÿ...
了解PHY,MAC芯片 物理层芯片叫做PHY、数据链路层芯片叫做MAC。1、MCU内置MAC芯片+外部PHY芯片1....
观察者模式-C# 在C#中实现观察者模式,通常涉及两个主要的组件:主题(Su...
git使用-命令行+VS Co... 一、Git常用命令 // 显示当分支的状态。它会列出已修改、已暂存和未跟踪的文件 git statu...
记者揭秘!微扑克智能软件透明挂... 记者揭秘!微扑克智能软件透明挂!微扑克智能软件辅助器(2020已更新)(哔哩哔哩)是一款可以让一直输...
使用llama.cpp量化模型 文章目录概要整体实验流程技术细节小结概要大模型量化是指在保持模型性能尽可能不变的情况下,...
盘点几款!wpk辅助挂透明挂透... 盘点几款!wpk辅助挂透明挂透视器!wpk辅助挂开挂辅助(2022已更新)(哔哩哔哩)是一款可以让一...