0

问题:无法理解为什么项目没有使用本地库构建。

在构建项目时,我的终端出现以下错误:

Linking .pio/build/genericSTM32F103C8/firmware.elf
.pio/build/genericSTM32F103C8/src/main.o: In function `main':
main.c:(.text.startup.main+0x2): undefined reference to `clock_setup'
collect2: error: ld returned 1 exit status
*** [.pio/build/genericSTM32F103C8/firmware.elf] Error 1

我的项目树如下所示:

项目树

根据 platformio lib 自述文件,我在 src/main.c 中添加了以下内容

#include <clock.h>

我对平台 io 的配置是:

[env:genericSTM32F103C8]
platform = ststm32
board = genericSTM32F103C8
framework = libopencm3
debug_tool = custom
debug_server =
  $PLATFORMIO_CORE_DIR/packages/tool-openocd/bin/openocd
  -f 
  /usr/local/share/openocd/scripts/interface/stlink-v2.cfg
  -f
  $PLATFORMIO_CORE_DIR/packages/tool-openocd/scripts/target/stm32f1x.cfg
  lib_ldf_mode = chain+

clock.h 包含:

#include <libopencm3/stm32/rcc.h>

BEGIN_DECLS

static void clock_setup(void);

END_DECLS

clock.c 包含:

#include <libopencm3/stm32/rcc.h>
#include "clock.h"

static void clock_setup(void)
{
    /* Extenal 16 MHz clock set to 72MHz using PLL */
    rcc_clock_setup_in_hse_16mhz_out_72mhz();

    /* Enable clock for DI DO ADC UART */
    rcc_periph_clock_enable(RCC_GPIOA);
    rcc_periph_clock_enable(RCC_GPIOB);
    rcc_periph_clock_enable(RCC_GPIOC);

    /* Enable AFIO clock. */
    rcc_periph_clock_enable(RCC_AFIO);

    /* Enable Timer clock. */
    rcc_periph_clock_enable(RCC_TIM3);
    rcc_periph_clock_enable(RCC_TIM4);

    /* Enable UART clock. */
    rcc_periph_clock_enable(RCC_USART1);
    rcc_periph_clock_enable(RCC_USART2);

    /* Enable I2C clock. */
    rcc_periph_clock_enable(RCC_I2C2);

    /* Enable SPI2 clock. */
    rcc_periph_clock_enable(RCC_SPI2);

}
4

1 回答 1

0

我当前的 lib 文件夹看起来像这样,并且 platformio 的 LDF 现在可以找到我的本地库。

├── clock
│   ├── clock.c
│   └── clock.h
├── di
│   ├── di.c
│   └── di.h
├── do
│   ├── do.c
│   └── do.h
├── i2c
│   ├── adc_i2c.c
│   └── adc_i2c.h
├── spi
│   ├── spi.c
│   └── spi.h
└── uart
    ├── debug_uart.c
    ├── debug_uart.h
    ├── display_uart.c
    ├── display_uart.h
    ├── modbus_uart.c
    └── modbus_uart.h
于 2020-06-16T20:51:36.040 回答