问题:无法理解为什么项目没有使用本地库构建。
在构建项目时,我的终端出现以下错误:
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);
}