STM32F40xx搭建Keil工程编译错误(stm32f4xx_fmc.c)

状况:

搭建完Keil工程后进行编译后发生如下的错误:

compiling stm32f4xx_fmc.c...
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(144): error:  #20: identifier "FMC_Bank1" is undefined
      FMC_Bank1->BTCR[FMC_Bank] = 0x000030DB;    
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(149): error:  #20: identifier "FMC_Bank1" is undefined
      FMC_Bank1->BTCR[FMC_Bank] = 0x000030D2; 
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(151): error:  #20: identifier "FMC_Bank1" is undefined
    FMC_Bank1->BTCR[FMC_Bank + 1] = 0x0FFFFFFF;
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(152): error:  #20: identifier "FMC_Bank1E" is undefined
    FMC_Bank1E->BWTR[FMC_Bank] = 0x0FFFFFFF;  
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(191): error:  #20: identifier "FMC_Bank1" is undefined
    tmpbcr = FMC_Bank1->BTCR[FMC_NORSRAMInitStruct->FMC_Bank];
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(195): error:  #20: identifier "FMC_BCR1_MBKEN" is undefined
    tmpbcr &= ((uint32_t)~(FMC_BCR1_MBKEN   | FMC_BCR1_MUXEN    | FMC_BCR1_MTYP     | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(195): error:  #20: identifier "FMC_BCR1_MUXEN" is undefined
    tmpbcr &= ((uint32_t)~(FMC_BCR1_MBKEN   | FMC_BCR1_MUXEN    | FMC_BCR1_MTYP     | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(195): error:  #20: identifier "FMC_BCR1_MTYP" is undefined
    tmpbcr &= ((uint32_t)~(FMC_BCR1_MBKEN   | FMC_BCR1_MUXEN    | FMC_BCR1_MTYP     | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(196): error:  #20: identifier "FMC_BCR1_MWID" is undefined
                           FMC_BCR1_MWID     | FMC_BCR1_FACCEN   | FMC_BCR1_BURSTEN  | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(196): error:  #20: identifier "FMC_BCR1_FACCEN" is undefined
                           FMC_BCR1_MWID     | FMC_BCR1_FACCEN   | FMC_BCR1_BURSTEN  | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(196): error:  #20: identifier "FMC_BCR1_BURSTEN" is undefined
                           FMC_BCR1_MWID     | FMC_BCR1_FACCEN   | FMC_BCR1_BURSTEN  | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(197): error:  #20: identifier "FMC_BCR1_WAITPOL" is undefined
                           FMC_BCR1_WAITPOL  | FMC_BCR1_WRAPMOD  | FMC_BCR1_WAITCFG  | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(197): error:  #20: identifier "FMC_BCR1_WRAPMOD" is undefined
                           FMC_BCR1_WAITPOL  | FMC_BCR1_WRAPMOD  | FMC_BCR1_WAITCFG  | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(197): error:  #20: identifier "FMC_BCR1_WAITCFG" is undefined
                           FMC_BCR1_WAITPOL  | FMC_BCR1_WRAPMOD  | FMC_BCR1_WAITCFG  | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(198): error:  #20: identifier "FMC_BCR1_WREN" is undefined
                           FMC_BCR1_WREN     | FMC_BCR1_WAITEN   | FMC_BCR1_EXTMOD   | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(198): error:  #20: identifier "FMC_BCR1_WAITEN" is undefined
                           FMC_BCR1_WREN     | FMC_BCR1_WAITEN   | FMC_BCR1_EXTMOD   | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(198): error:  #20: identifier "FMC_BCR1_EXTMOD" is undefined
                           FMC_BCR1_WREN     | FMC_BCR1_WAITEN   | FMC_BCR1_EXTMOD   | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(199): error:  #20: identifier "FMC_BCR1_ASYNCWAIT" is undefined
                           FMC_BCR1_ASYNCWAIT| FMC_BCR1_CBURSTRW | FMC_BCR1_CCLKEN));
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(199): error:  #20: identifier "FMC_BCR1_CBURSTRW" is undefined
                           FMC_BCR1_ASYNCWAIT| FMC_BCR1_CBURSTRW | FMC_BCR1_CCLKEN));
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(199): error:  #20: identifier "FMC_BCR1_CCLKEN" is undefined
                           FMC_BCR1_ASYNCWAIT| FMC_BCR1_CBURSTRW | FMC_BCR1_CCLKEN));
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(253): error:  #20: identifier "FMC_Bank1E" is undefined
      tmpbwr = FMC_Bank1E->BWTR[FMC_NORSRAMInitStruct->FMC_Bank];
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(256): error:  #20: identifier "FMC_BWTR1_ADDSET" is undefined
      tmpbwr &= ((uint32_t)~(FMC_BWTR1_ADDSET  | FMC_BWTR1_ADDHLD | FMC_BWTR1_DATAST | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(256): error:  #20: identifier "FMC_BWTR1_ADDHLD" is undefined
      tmpbwr &= ((uint32_t)~(FMC_BWTR1_ADDSET  | FMC_BWTR1_ADDHLD | FMC_BWTR1_DATAST | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(256): error:  #20: identifier "FMC_BWTR1_DATAST" is undefined
      tmpbwr &= ((uint32_t)~(FMC_BWTR1_ADDSET  | FMC_BWTR1_ADDHLD | FMC_BWTR1_DATAST | \
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(257): error:  #20: identifier "FMC_BWTR1_BUSTURN" is undefined
                             FMC_BWTR1_BUSTURN | FMC_BWTR1_ACCMOD));
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(257): error:  #20: identifier "FMC_BWTR1_ACCMOD" is undefined
                             FMC_BWTR1_BUSTURN | FMC_BWTR1_ACCMOD));
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(269): error:  #20: identifier "FMC_Bank1E" is undefined
      FMC_Bank1E->BWTR[FMC_NORSRAMInitStruct->FMC_Bank] = 0x0FFFFFFF;
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(321): error:  #20: identifier "FMC_Bank1" is undefined
      FMC_Bank1->BTCR[FMC_Bank] |= BCR_MBKEN_SET;
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(326): error:  #20: identifier "FMC_Bank1" is undefined
      FMC_Bank1->BTCR[FMC_Bank] &= BCR_MBKEN_RESET;
..\..\CodeFile\Bsp\stm32f4xx_fmc.c(394): error:  #20: identifier "FMC_Bank2" is undefined
      FMC_Bank2->PCR2 = 0x00000018;
..\..\CodeFile\Bsp\stm32f4xx_fmc.c: 0 warnings, 30 errors
compiling stm32f4xx_fsmc.c...

就是说一堆的宏没有定义。


原因:

stm32f4xx_fmc.c的在固件库中的一个外设,仅作用于STM32F429_439xxSTM32F446xxSTM32F469_479xxSTM32F427_437xx系列的芯片,如果不是这些芯片的话将不会引用stm32f4xx_fmc.h这个头文件,也就产生了宏没有定义的问题。

具体的说,我们在Option for TargetC++选项卡Define填写了当前所使用芯片的所属系列。
在这里插入图片描述
而这个宏在stm32f4xx_conf.h文件中进入的分支并没有引用stm32f4xx_fmc.h这个头文件。
在这里插入图片描述


解决:

不要再Keil的分组中添加stm32f4xx_fmc.c文件,删除后重新编译即可。
在这里插入图片描述
参考博客1:https://blog.csdn.net/BobHHH/article/details/81018862
参考博客2:https://blog.csdn.net/Cowena/article/details/49994743

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

hrx-@@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值