STM32CubeMX生成STM32H7 工程-自动生成代码浅析及配置小窍门(七)

本文详细介绍了STM32CubeMX在配置STM32H7项目时的步骤和小窍门,强调了配置顺序的重要性,如先配置GPIO、ADC、VREF等,以避免冲突。针对可能出现的管脚功能复用冲突,提出了通过新建工程单独配置的解决方案。同时,分析了自动生成代码的结构,指出HAL库仅提供初始化和去初始化函数,功能函数需通过HAL实现,并给出了使用和维护代码的一些建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次更新内容为STM32CubeMX生成STM32H7 工程项目应用中自动生成代码浅析、配置小窍门部分说明,文中Tips是比较易出错的点,多多关注。欢迎关注本公众“硬件开发不完全攻略”,上传可能中可能有些图片可能分辨率有降低,后台回复“STM32”,获取源文档。

配置主界面

1Pinout&Configuration

1.1System Core

1.2Analog

1.3Timers

1.4Connectivity

1.5Computing

1.6Middleware

1.7Trace and Debug

1.8Power and Thermal

2Clock Configuration

3Project Manager

4Configuration Tips(配置小窍门)

4.1模块配置顺序

由于GPIO很多都可以复用为不同的功能,例如我配置UART1时,CubeMx默认使用的是PA.5/PA.6,但是我们设计用的实际上是PB.5/PB.6,我们就需要在“Pinout View”中,手动指定PB.5/PB.6的功能为UART,造成配置效率低下。

为了尽可能提高配置的效率,建议配置各个模块时,按照如下顺序:

ØSTEP1:GPIO(做为普通输入输出功能的管脚,例如:DI、DO、KEY、LED、各外设的硬复位管脚、液晶背光等);

ØSTEP2:ADC、VREF

ØSTEP3:ETH、USB

ØSTEP4:FDCAN、SPI、I2C、UART

ØSTEP5:QSPI

注:STEP1、STEP2一定要先做,后面几步可根据需要依次进行配置。

4.2不同选型产品管脚功能复用冲突解决方法

在iRelay 60X、PMC-751X、PMC-550M-S的实践中,已经碰到过如下几种冲突情况:

ØETH管脚与ADC管脚冲突(ETH没有使用MDIO,但是CubeMX默认使能MDIO,并且不能修改,实际上我们不需要MDIO,对应的MDIO管脚要做为ADC)

ØUART与FDCAN共用相同的管脚,但是CubeMX配置时只能选择其中一个

当前的解决方案是:对于有冲突的部分,再新建一个CubeMX工程,单独配置ETH、FDCAN,再将自动生成的代码添加到工程中。同时,对于ETH,还需要手动修改自动生成的INIT函数,将MDIO的管脚配置删除。

5自动生成代码浅析

5.1工程代码结构

自动生成的工程结构如下图所示,主要有三个文件夹:

Core:各模块配置后,自动生成的代码及头文件,包括main.c;

Drivers:STM32H7XX的HAL、LL驱动库文件,以及与CPU核相关的CMSIS文件;

MDK-ARM:KEIL工程文件

Core包括Src、Inc两个文件夹,分别存放.c .h文件

Drivers也包含两个文件夹

MDK-ARM:

5.2各模块自动生成代码分析

Tips1:各模块自动生成的代码,只有Init、Deinit函数,没有基本的功能函数。基本的功能函数,还必须要通过HAL实现。这是其不太友好、不太便利的地方;

Tips2:为了便于对比自动生成的代码,尤其是在开发过程中,可能会频繁修改CUBEMX的配置,我们自己重新建立工程时,建议最小化改动Core文件夹中的文件内容。

Tips2:HAL库中的函数都支持多任务、多线程,内部都设计了类似于锁的机制,在操作系统上也可以使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PIN凡不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值