IAR编译STM32程序报Fatal Error[Pe035]错误如何解决
错误原因
这个报错是因为STM32F4系列的通用头文件stm32f4xx.h无法自动识别你当前使用的具体F4芯片型号,必须提前声明对应芯片的预处理宏,否则就会触发头文件内预设的#error拦截逻辑。
解决步骤
- 先确认你硬件使用的具体STM32F4芯片型号,比如STM32F407、STM32F429、STM32F411等。你也可以直接打开固件库内的
stm32f4xx.h文件,查看文件内列出的全系列支持的芯片宏,格式统一为STM32F4xx(末尾为两个小写x),例如STM32F407系列对应宏为STM32F407xx,STM32F429系列对应宏为STM32F429xx,找到和你硬件匹配的宏即可。 - 回到IAR开发环境,打开工程的
Options -> C/C++ Compiler -> Preprocessor配置页,找到Defined symbols(预定义符号)输入栏,把上一步确认的芯片宏添加进去,不需要加赋值,直接写宏名即可。 - 补充说明:你当前只添加了CMSIS层的头文件路径,如果后续要使用HAL外设库,还需要把HAL库的头文件路径也加入预处理器路径列表,对应路径一般为
C:\STM32Cube_FW_F4_V1.27.0\Drivers\STM32F4xx_HAL_Driver\Inc,否则后续编译会出现找不到外设头文件的报错。 - 不要直接修改
stm32f4xx.h文件内的芯片选择宏来规避错误,这种修改库源码的方式兼容性很差,后续升级固件库、移植工程时很容易重复出问题,使用编译器预定义宏是ST官方推荐的标准做法。 - 配置完成后点击确定,重新全量编译工程,该Pe035致命错误就会消除。
临时测试方案:如果你暂时不确定自己的芯片型号,可以先在预定义符号里加
STM32F407xx做测试,只要是F4系列芯片,这个宏至少能让你过掉头文件的报错检查,后续再根据实际硬件调整即可。
内容的提问来源于stack exchange,提问作者code_dude
相关产品推荐
相关产品推荐

