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

07-19 1165阅读

文章目录

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. 界面介绍

        主界面

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

        • 菜单栏

          • 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 界面

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

           Windows 界面

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

           Help 界面

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

           Manage 软件包管理页面

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

          这里可以安装需要的软件包,绿色的表示已经安装,蓝色表示未安装。

           

          Updater Settings 界面

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

          软件包存放位置(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. 使用教程

                新建工程

                这里选择使用第一种新建工程的方式

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

                 

                选择芯片界面

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

                先输入想要使用的芯片型号,然后双击选择详细的芯片类型即可。

                配置页面

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

                主界面区域划分

                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芯片的引脚分布和配置预览。
                      • 引脚视图:直观展示每个引脚的位置及其当前配置。
                      • 引脚功能配置:可以在引脚视图中直接点击某个引脚,选择并配置该引脚的功能。

                      引脚配置页面

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

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

                      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:复位状态

                      引脚配置界面的颜色指示

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

                      不可配置引脚(淡黄色)

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

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

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

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

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

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

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

                            配置RCC时钟参数

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

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

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

                            1. Disable(禁用):禁用高速外部时钟。
                            2. BYPASS Clock Source(旁路时钟源):使用外部时钟信号,通过旁路模式将时钟信号直接输入到微控制器中。
                            3. Crystal/Ceramic Resonator(外部晶振):使用外部晶振或陶瓷谐振器作为时钟源。

                            如果不配置RCC时钟,则是默认使用内部高速时钟(HSI),推荐将RCC时钟配置高速外部时钟和外部晶振。

                            配置SYS参数

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

                            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模式。

                                    配置时钟树

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

                                    因为在前面RCC时钟配置中,选择使用外部晶振,在这里需要切换使用外部高速时钟模式(HSE),如果没有配置RCC时钟,则使用默认的内部高速时钟(HSI);

                                    然后配置PLLCLK锁相环,之后倍频更改系统主时钟;

                                    推荐使用最大时钟频率(72M), 可以直接修改后面HCLK(MHZ)系统时钟,直接改成72M,然后按下回车就可以, 前面会自动将PLL设置为8,PLMul设置为X9。

                                    Project Manager项目管理配置

                                    Project(工程设置)

                                    项目路径和项目名称要使用英文

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

                                    Code Generator(代码生成器) 

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

                                    • 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...:配置自定义代码生成模板的选项。

                                             

                                            生成工程文件

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

                                            KEIL代码编写

                                            生成项目文件后,使用keil打开,之后要注意,所有后期添加的代码都要在固定的位置。

                                            比如添加新的头文件:

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

                                            添加新的变量:

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

                                            添加新的主函数代码:

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

                                             

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]