我正在尝试用GNU arm eabi gcc编译这个示例:我从编译器那里得到了这样的结果:
#error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)"然后,我将-DSTM32F10X_MD添加到命令行中,因为我认为,这可能是错误的,这就是BluePill,然后我得到了以下内容:
#error "Please select first the STM32 EVAL board to be used (in stm32_eval.h)"我花了一段时间才意识到,EVAL意味着ST的一个评估委员会出售他们的产品,但我当然没有,我有一个廉价的蓝色从支付宝。那我现在有什么选择?如何编译这些示例?
更新:这是我的完整命令行
arm-none-eabi-gcc -DSTM32F10X_MD main.c -I/home/me/st/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x -I/home/me/st/Libraries/CMSIS/CM3/CoreSupport -I/home/me/st/Utilities/STM32_EVAL -Wfatal-errors发布于 2020-10-29 10:17:29
首先:不要使用STDPeriph,它是不推荐的。使用HAL。
第二:它要求您在库本身中定义它正在编译的平台,这样它就可以包含正确的依赖项。(例如外设在内存中)
解决方案是读取STM芯片的型号(类似于STM32F103C8T6),然后查看stm32f10x.h文件并选择您的MCU,这可能涉及取消对define行的注释。如果您无法确定有哪些类型的选项,请尝试读取MCU的数据表,因为它指定了有关它的所有内容。
对于EVAL板,您可以选择它们中的任何一个,因为它们只是别名(定义)简单名称,如LED1。那你就不能用了。
但是,同样不要使用STDPeriph,使用硬件!只需使用CubeMX为您生成一个带有库的项目。它可能也更好地支持BluePill比一些旧的STDPeriph标准板头。
https://stackoverflow.com/questions/64586296
复制相似问题