【ARM】MDK-STM32g0xx.h文件与Define规则记录

1、 文档目标

记录问题STM32g0xx.h等有关ST的可读文件,尽量勿修改文件格式及对其代码进行添加和删减,记录查找问题的过程中的疑惑,并如何给予客户正确的回复,帮助销售完成验收,以便后续尾款支付。

2、 问题场景

在工程中客户移除了ST头文件的可读保护并进行了该文件的代码修改,在STM32g0xx.h中进行了函数的宏定义,但应用处并没有添加任何头文件,编译不报错。若在其他文件中添加该函数的宏定义,编译报错。

图2-1(未应用未报错,不符合语法规则)

注:绝对不建议删除对stm32gOxx.h文件的只读保护。所有来自ST的只读头文件都有很好的保护理由。

3、软硬件环境

1)、软件版本:MDK 5.38 Arm 编译器版本 6.19

2)、电脑环境:Windows 11

3)、外设硬件:无

4、解决方法

1)、宏定义的寻找模式

#define指令是C预处理器的一部分。在编译之前进行处理。一个头文件没有被你的项目使用或引用,这个头文件将不会成为你的项目构建的一部分,在项目中根本不使用由#define定义的那些参数,则它们将不会作为编译的一部分包含在内。

2)、有关ST的只读头文件。

宏定义在STM32G0xx .h中,它总是包含在基于STM32G0xx设备的项目中并使用。在后台运行的编译器工具链负责动态语法检查以及文本完成在某些情况下可能是不可靠的,所以在你的情况下,宏定义中函数等仍然是灰色,并且函数应用处没有添加头文件,但编译通过。

定义在STM32G0xx .h中的函数,它总是包含在基于STM32G0xx设备的项目中并使用。将STM32G0xx .h修改部分还原,并且将其文件格式设置为可读即可,如图4-1在Comm.h文件并进行宏定义,而后编译出现错误,符合检查动态语法规则。

图4-1(未应用报错,符合语法规则)


​ 版权声明:本文为亿道电子技术有限公司原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

相关推荐
松涛和鸣14 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
上海合宙LuatOS15 小时前
LuatOS核心库API——【audio 】
java·网络·单片机·嵌入式硬件·物联网·音视频·硬件工程
Hhh __灏15 小时前
stm32的SRAM内存不足如何分析和优化?堆栈空间如何优化?
单片机
点灯小铭16 小时前
基于51单片机的双档交流电压表设计与实现
单片机·嵌入式硬件·毕业设计·51单片机·课程设计·期末大作业
厦门辰迈智慧科技有限公司16 小时前
全功能数据采集仪mcu主要用途
单片机·嵌入式硬件·水库大坝安全监测·数据采集仪mcu
清风66666617 小时前
基于单片机的智能电热水壶设计与温度控制系统
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
Balabala噗17 小时前
JLink-Cortex-M Error报错-No Cortex-M SW Device Found-解决办法整理
单片机·嵌入式硬件
点灯小铭18 小时前
基于单片机的智慧农业温度湿度滴灌自动控制系统设计与实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
陌上花开缓缓归以18 小时前
linux mtd-utils使用源码分析(ubuntu测试版)
linux·arm开发·ubuntu