machine/stm32f103xx/nucleo-f103rb: add support for NUCLEO-F103RB STM32F1-based board
Compared to the already supported stm32f103xx "bluepill" board this: - features 128 KiB flash memory size ("RB" suffix) instead of 64 KiB, see `targets/stm32f103rb.ld` - has onboard ST-LINK/V2-1 programmer and debugger requiring different OpenOCD configuration file - uses USART2 connected to ST-LINK/V2-1 debugger as virtual COM port over USB for `putchar()` - has a user-accessible button besides the reset button
Этот коммит содержится в:
родитель
688dd81400
коммит
9d35c1197f
6 изменённых файлов: 155 добавлений и 1 удалений
1
Makefile
1
Makefile
|
@ -126,6 +126,7 @@ smoketest:
|
||||||
tinygo build -size short -o test.elf -target=circuitplay-express examples/i2s
|
tinygo build -size short -o test.elf -target=circuitplay-express examples/i2s
|
||||||
tinygo build -size short -o test.elf -target=gameboy-advance examples/gba-display
|
tinygo build -size short -o test.elf -target=gameboy-advance examples/gba-display
|
||||||
tinygo build -size short -o test.elf -target=itsybitsy-m4 examples/blinky1
|
tinygo build -size short -o test.elf -target=itsybitsy-m4 examples/blinky1
|
||||||
|
tinygo build -size short -o test.elf -target=nucleo-f103rb examples/blinky1
|
||||||
ifneq ($(AVR), 0)
|
ifneq ($(AVR), 0)
|
||||||
tinygo build -size short -o test.elf -target=arduino examples/blinky1
|
tinygo build -size short -o test.elf -target=arduino examples/blinky1
|
||||||
tinygo build -size short -o test.elf -target=digispark examples/blinky1
|
tinygo build -size short -o test.elf -target=digispark examples/blinky1
|
||||||
|
|
|
@ -53,6 +53,7 @@ The following 15 microcontroller boards are currently supported:
|
||||||
* [Arduino Uno](https://store.arduino.cc/arduino-uno-rev3)
|
* [Arduino Uno](https://store.arduino.cc/arduino-uno-rev3)
|
||||||
* [BBC micro:bit](https://microbit.org/)
|
* [BBC micro:bit](https://microbit.org/)
|
||||||
* [ST Micro STM32F103XX "Bluepill"](http://wiki.stm32duino.com/index.php?title=Blue_Pill)
|
* [ST Micro STM32F103XX "Bluepill"](http://wiki.stm32duino.com/index.php?title=Blue_Pill)
|
||||||
|
* [ST Micro "Nucleo F103RB"](https://www.st.com/en/evaluation-tools/nucleo-f103rb.html)
|
||||||
* [ST Micro STM32F407 "Discovery"](https://www.st.com/en/evaluation-tools/stm32f4discovery.html)
|
* [ST Micro STM32F407 "Discovery"](https://www.st.com/en/evaluation-tools/stm32f4discovery.html)
|
||||||
* [Digispark](http://digistump.com/products/1)
|
* [Digispark](http://digistump.com/products/1)
|
||||||
* [Nordic Semiconductor PCA10031](https://www.nordicsemi.com/eng/Products/nRF51-Dongle)
|
* [Nordic Semiconductor PCA10031](https://www.nordicsemi.com/eng/Products/nRF51-Dongle)
|
||||||
|
|
124
src/machine/board_nucleof103rb.go
Обычный файл
124
src/machine/board_nucleof103rb.go
Обычный файл
|
@ -0,0 +1,124 @@
|
||||||
|
// +build nucleof103rb
|
||||||
|
|
||||||
|
package machine
|
||||||
|
|
||||||
|
import "device/stm32"
|
||||||
|
|
||||||
|
const (
|
||||||
|
PA0 = portA + 0
|
||||||
|
PA1 = portA + 1
|
||||||
|
PA2 = portA + 2
|
||||||
|
PA3 = portA + 3
|
||||||
|
PA4 = portA + 4
|
||||||
|
PA5 = portA + 5
|
||||||
|
PA6 = portA + 6
|
||||||
|
PA7 = portA + 7
|
||||||
|
PA8 = portA + 8
|
||||||
|
PA9 = portA + 9
|
||||||
|
PA10 = portA + 10
|
||||||
|
PA11 = portA + 11
|
||||||
|
PA12 = portA + 12
|
||||||
|
PA13 = portA + 13
|
||||||
|
PA14 = portA + 14
|
||||||
|
PA15 = portA + 15
|
||||||
|
|
||||||
|
PB0 = portB + 0
|
||||||
|
PB1 = portB + 1
|
||||||
|
PB2 = portB + 2
|
||||||
|
PB3 = portB + 3
|
||||||
|
PB4 = portB + 4
|
||||||
|
PB5 = portB + 5
|
||||||
|
PB6 = portB + 6
|
||||||
|
PB7 = portB + 7
|
||||||
|
PB8 = portB + 8
|
||||||
|
PB9 = portB + 9
|
||||||
|
PB10 = portB + 10
|
||||||
|
PB11 = portB + 11
|
||||||
|
PB12 = portB + 12
|
||||||
|
PB13 = portB + 13
|
||||||
|
PB14 = portB + 14
|
||||||
|
PB15 = portB + 15
|
||||||
|
|
||||||
|
PC0 = portC + 0
|
||||||
|
PC1 = portC + 1
|
||||||
|
PC2 = portC + 2
|
||||||
|
PC3 = portC + 3
|
||||||
|
PC4 = portC + 4
|
||||||
|
PC5 = portC + 5
|
||||||
|
PC6 = portC + 6
|
||||||
|
PC7 = portC + 7
|
||||||
|
PC8 = portC + 8
|
||||||
|
PC9 = portC + 9
|
||||||
|
PC10 = portC + 10
|
||||||
|
PC11 = portC + 11
|
||||||
|
PC12 = portC + 12
|
||||||
|
PC13 = portC + 13
|
||||||
|
PC14 = portC + 14
|
||||||
|
PC15 = portC + 15
|
||||||
|
|
||||||
|
PD0 = portD + 0
|
||||||
|
PD1 = portD + 1
|
||||||
|
PD2 = portD + 2
|
||||||
|
PD3 = portD + 3
|
||||||
|
PD4 = portD + 4
|
||||||
|
PD5 = portD + 5
|
||||||
|
PD6 = portD + 6
|
||||||
|
PD7 = portD + 7
|
||||||
|
PD8 = portD + 8
|
||||||
|
PD9 = portD + 9
|
||||||
|
PD10 = portD + 10
|
||||||
|
PD11 = portD + 11
|
||||||
|
PD12 = portD + 12
|
||||||
|
PD13 = portD + 13
|
||||||
|
PD14 = portD + 14
|
||||||
|
PD15 = portD + 15
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
LED = LED_BUILTIN
|
||||||
|
LED_BUILTIN = LED_GREEN
|
||||||
|
LED_GREEN = PA5
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
BUTTON = BUTTON_USER
|
||||||
|
BUTTON_USER = PC13
|
||||||
|
)
|
||||||
|
|
||||||
|
// UART pins
|
||||||
|
const (
|
||||||
|
UART_TX_PIN = PA2
|
||||||
|
UART_RX_PIN = PA3
|
||||||
|
UART_ALT_TX_PIN = PD5
|
||||||
|
UART_ALT_RX_PIN = PD6
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// USART2 is the hardware serial port connected to the onboard ST-LINK
|
||||||
|
// debugger to be exposed as virtual COM port over USB on Nucleo boards.
|
||||||
|
// Both UART0 and UART1 refer to USART2.
|
||||||
|
UART0 = UART{
|
||||||
|
Buffer: NewRingBuffer(),
|
||||||
|
Bus: stm32.USART2,
|
||||||
|
IRQVal: stm32.IRQ_USART2,
|
||||||
|
}
|
||||||
|
UART2 = &UART0
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:export USART2_IRQHandler
|
||||||
|
func handleUART2() {
|
||||||
|
UART2.Receive(byte((UART2.Bus.DR.Get() & 0xFF)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// SPI pins
|
||||||
|
const (
|
||||||
|
SPI0_SCK_PIN = PA5
|
||||||
|
SPI0_MISO_PIN = PA6
|
||||||
|
SPI0_MOSI_PIN = PA7
|
||||||
|
)
|
||||||
|
|
||||||
|
// I2C pins
|
||||||
|
const (
|
||||||
|
SCL_PIN = PB6
|
||||||
|
SDA_PIN = PB7
|
||||||
|
)
|
|
@ -1,4 +1,4 @@
|
||||||
// +build bluepill stm32f4disco
|
// +build bluepill nucleof103rb stm32f4disco
|
||||||
|
|
||||||
package machine
|
package machine
|
||||||
|
|
||||||
|
|
18
targets/nucleo-f103rb.json
Обычный файл
18
targets/nucleo-f103rb.json
Обычный файл
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"inherits": ["cortex-m"],
|
||||||
|
"llvm-target": "armv7m-none-eabi",
|
||||||
|
"build-tags": ["nucleof103rb", "stm32f103xx", "stm32"],
|
||||||
|
"cflags": [
|
||||||
|
"--target=armv7m-none-eabi",
|
||||||
|
"-Qunused-arguments"
|
||||||
|
],
|
||||||
|
"ldflags": [
|
||||||
|
"-T", "targets/stm32f103rb.ld"
|
||||||
|
],
|
||||||
|
"extra-files": [
|
||||||
|
"src/device/stm32/stm32f103xx.s"
|
||||||
|
],
|
||||||
|
"flash": "openocd -f interface/stlink-v2-1.cfg -f target/stm32f1x.cfg -c 'program {hex} reset exit'",
|
||||||
|
"ocd-daemon": ["openocd", "-f", "interface/stlink-v2-1.cfg", "-f", "target/stm32f1x.cfg"],
|
||||||
|
"gdb-initial-cmds": ["target remote :3333", "monitor halt", "load", "monitor reset", "c"]
|
||||||
|
}
|
10
targets/stm32f103rb.ld
Обычный файл
10
targets/stm32f103rb.ld
Обычный файл
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
MEMORY
|
||||||
|
{
|
||||||
|
FLASH_TEXT (rw) : ORIGIN = 0x08000000, LENGTH = 128K
|
||||||
|
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 20K
|
||||||
|
}
|
||||||
|
|
||||||
|
_stack_size = 2K;
|
||||||
|
|
||||||
|
INCLUDE "targets/arm.ld"
|
Загрузка…
Создание таблицы
Сослаться в новой задаче