在stm32f4xx_it.h里定义了如下两个变量
extern __IO uint8_t RxBuffer[];
extern __IO uint8_t Rx_Idx;
因为下面的一个SPI接收中断里要用到这两个变量。
编译错误提示为:
.\obj\STM32F407Project.axf: Error: L6218E: Undefined symbol RxBuffer (referred from stm32f4xx_it.o).
.\obj\STM32F407Project.axf: Error: L6218E: Undefined symbol Rx_Idx (referred from stm32f4xx_it.o).
你以为把变量前面加一个extern导出就完了吗?其实还需在main()函数前在申明一遍变量,否则就会出现如上错误!以后知道如何在其他C文件声明全局变量了吧!?
extern __IO uint8_t RxBuffer[];
extern __IO uint8_t Rx_Idx;
因为下面的一个SPI接收中断里要用到这两个变量。
编译错误提示为:
.\obj\STM32F407Project.axf: Error: L6218E: Undefined symbol RxBuffer (referred from stm32f4xx_it.o).
.\obj\STM32F407Project.axf: Error: L6218E: Undefined symbol Rx_Idx (referred from stm32f4xx_it.o).
你以为把变量前面加一个extern导出就完了吗?其实还需在main()函数前在申明一遍变量,否则就会出现如上错误!以后知道如何在其他C文件声明全局变量了吧!?
本文介绍了在STM32项目中正确声明全局变量的方法,特别是当这些变量在多个C文件间共享时。通过一个具体的例子解释了仅使用extern关键字声明变量可能导致的编译错误,并给出了正确的解决方案。
1099

被折叠的 条评论
为什么被折叠?



