本次更新内容为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库中的函数都支持多任务、多线程,内部都设计了类似于锁的机制,在操作系统上也可以使用。
标签:配置,MDIO,代码,小窍门,生成,自动,管脚,浅析 来源: https://blog.csdn.net/bianyuanren92/article/details/120262924
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。