pATAq 发表于 2021-11-26 03:20:28

跟着思兼学习Klipper(03-2)番外1-自定义stm32f103 bootloader|2

## 番外一:为其他最小系统定制 Bootloader

整完这块最小系统板后,我不想焊接引脚,又掏出一块F103,形状不一样,看了下原理图,发现两个问题:





1. PB2(BOOT1)接地了
2. LED指示灯接在PB8



我们看看 stm32duino-bl 有没有预编译好的,结果发现没有。那么自己动手,丰衣足食,我们以pb9为模板,看看如何修改定制针对此板的引导器,尝试修改如下内容:

```c
// 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 文件:

```makefile
# Makeflie
generic-pb8: begin clean gccversion build_generic-pb8 sizeafter finishedcopy_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
      @Echo "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 方式烧录,测试成功。关于配置文件,我们发现它定义了两个引脚:

1.`LED_PIN` ,即板载LED指示灯,根据情况设置,这里是 `PB8`

2. `BUTTON_PIN`,根据情况选择。置高即进入并停留在 stm32duino-bootloader。我们这里选择 `PA3`
页: [1]
查看完整版本: 跟着思兼学习Klipper(03-2)番外1-自定义stm32f103 bootloader|2