番外一:为其他最小系统定制 Bootloader
整完这块最小系统板后,我不想焊接引脚,又掏出一块F103,形状不一样,看了下原理图,发现两个问题:
- PB2(BOOT1)接地了
- LED指示灯接在PB8
我们看看 stm32duino-bl 有没有预编译好的,结果发现没有。那么自己动手,丰衣足食,我们以pb9为模板,看看如何修改定制针对此板的引导器,尝试修改如下内容:
// config.h
// for STM32F103C8T6 大板
// config.h
#elif defined TARGET_GENERIC_F103_PB8
#define LED_BANK GPIOB
#define LED_PIN 8
#define LED_ON_STATE 1
// Button (if you have one)
#define BUTTON_BANK GPIOA
#define BUTTON_PIN 3
#define BUTTON_PRESSED_STATE 1
以及 Makefile 文件:
# Makeflie
generic-pb8: begin clean gccversion build_generic-pb8 sizeafter finished copy_generic-pb8 end
build_generic-pb8: TARGETFLAGS= -DTARGET_GENERIC_F103_PB8 $(DEFINES)
# Set the linker script
build_generic-pb8: LDFLAGS +=-T$(ST_LIB)/c_only_md_high_density.ld
build_generic-pb8: elf bin lss sym
copy_generic-pb8:
@echo
home.php?mod=space&uid=68693 "Copying to binaries folder"
@echo
cp $(TARGET).bin bootloader_only_binaries/generic_boot20_pb8.bin
@echo
使用如下命令编译:make generic-pb8 ,生成的文件在 bootloader_only_binaries/generic_boot20_pb8.bin 。通过 Serial 方式烧录,测试成功。关于配置文件,我们发现它定义了两个引脚:
-
LED_PIN ,即板载LED指示灯,根据情况设置,这里是 PB8
-
BUTTON_PIN ,根据情况选择。置高即进入并停留在 stm32duino-bootloader。我们这里选择 PA3
|