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

发布了62 篇原创文章 · 获赞 106 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/lang523493505/article/details/103769255