Este artigo é sobre o uso conjunto do seguinte conjunto de hardware e software and basic config.
- STM32F103C8, the Bluepill
- IDE, vscode/platformio,
- ststm32 with arduino framework
- Arduino_STM32 Core (roger clark melbourne core, maple core)
- STM32duino-bootloader
Instalar o STM32duino-bootloader
Ver outro artigo….
Depois de instalar o STM32duino-bootloader deixa de ser possível de usar a serial 1 para enviar os programas.
De notar que quando usado com programas compilados com o Arduino_STM32 Core do Roger Clark, a serial 1, nos pinos PA9 e PA10 deixa de funcionar como uart (serial 1).
No entanto se for com programas compilados com o STM32duino core (o core da ST) a serial 1, nos pinos PA9 e PA10 deixa de funcionar como uart.
Usar compilar com o Arduino_STM32 Core do Roger Clark (maple core)
Para usar o core Arduino_STM32 Core do Roger Clark, e as suas bibliotecas na programação dos STM32F, é necessário usar as seguintes entradas no ficheiro platformio.ini do projecto.
board = genericSTM32F103C8 board_build.core = maple
Do not use the following board because it will use the STM32duino core (ST core).
#board = bluepill_f103c8
Enviar os programas por USB com o STM32duino-bootloader instalado
Para enviar os programas por USB com o STM32duino-bootloader do roger clark instalado é necessário usar as seguintes entradas no ficheiro platformio.ini do projecto.
# send by usb upload_protocol = dfu upload_port = anything
O boot1 deve ter o jumper no 1, (led verde deve piscar rapidamente)
Serial ports e default serial port (Porta serie principal)
Com o STM32duino-bootloader o serial input/output deixa de funcionar nos pinos A9 e A10, e é redireccionado para a porta USB. Ou seja Serial.print(“hello”), é redireccionado para a porta USB normalmente em /dev/ttyACM0.
Notar que no restart, quebra a ligação serie, pelo que no restart, se não colocarmos um delay suficientemente longo para voltarmos a restabelecer a ligação, perderemos todo o output que estiver a ser feito na função setup.
Estudar as outras serial ports (Serial1, e Serial2)
Ficheiro de configuração de um projecto com o bootloader e o maple do roger clark
platformio.ini
[env:genericSTM32F103C8] platform = ststm32 board = genericSTM32F103C8 framework = arduino board_build.core = maple # send by usb upload_protocol = dfu upload_port = anything #monitor_port = /dev/ttyACM0 # set monitor speed for # serial on STM32 pins RX/TX monitor_speed = 115200
PWM com o Roger Clark / maple arduino_stm32 core
Configurar, no setup, o pino para ser usado com PWM
pinMode(PB6, PWM);
Atribuir o ciclo de trabalho (duty cycle) o pino previamente configurado.
pwmWrite(PB6, 32000);
O valor pode variar entre 0 e 65535.
Atenção aos pinos usados como PWM, usar um pino indevido crasha o programa.
Existem na web alguns diagramas com pinos que indicam como pinos PWM pinos que não o são, por exemplo o PB4, e o PB5, e por isso não produzem o resultado esperado.
O seguinte diagrama tem a indicação dos pinos correctos.
https://github.com/rogerclarkmelbourne/Arduino_STM32
https://github.com/rogerclarkmelbourne/STM32duino-bootloader
vscode
Version: 1.56.2
Commit: 054a9295330880ed74ceaedda236253b4f39a335
Date: 2021-05-12T16:45:26.313Z
Electron: 12.0.4
Chrome: 89.0.4389.114
Node.js: 14.16.0
V8: 8.9.255.24-electron.0
OS: Linux x64 5.8.0-53-generic snap
platformio
Core 5.1.1 /Home 3.3.4