Spanish Programar STM32F103C8T6 en B4R

Digitek

Member
Saludos.
He estado tratando de programar el STM32F103C8T6 con la tarjeta STM32F103Cx DEMO BOARD v2.1, sin éxito.
Seguí los pasos que se muestran aquí: How to Implement STM32 into B4R
Sin embargo, no se trata del mismo microcontrolador y el enlace de las tarjetas ya es obsoleto para Arduino.
De cualquier forma instalé el Core ahí recomendado y lo probé en Arduino, pero aunque compila sin errores el clásico "Blink", en la tarjeta no hace nada.
Cabe mencionar que en Arduino seleccioné todo lo requerido para mi tarjeta.
Aparte, después de grabar el código, termina dañando el Bootloader Maple, quedando como Maple DFU en el Administrador de dispositivos de Windows.
Motivo por el cual hay que volver a grabar el Bootloader con el STM32CubeProgrammer. :rolleyes:

Bueno, como ese Core de tarjetas no funcionó, opté por cargar el siguiente: http://dan.drown.org/stm32duino/package_STM32duino_index.json
Con ese sí funciona el ejemplo "Blink" y supongo que con eso todo debe estar bien, digamos.
Al menos en Arduino funciona, pero en B4R no logro que funcione.
Al compilar me muestra el siguiente error:
B4RArduino.cpp:25:34: error: invalid conversion from 'Byte {aka unsigned char}' to 'WiringPinMode' [-fpermissive]
pinMode(PinNumber, arduino_Mode);
OK. Buscando, encontré que la solución era reemplazar: "void pinMode(uint8 pin, WiringPinMode mode);" por: "void pinMode(uint8_t pin, uint8_t mode);", en la librería io.h
En mi caso, dicha librería se encuentra en: C:\Users\Usuario\AppData\Local\Arduino15\packages\stm32duino\hardware\STM32F1\2021.5.31\cores\maple

El problema con B4R es que después de "corregido" ese error, el LED no hace nada y únicamente se llega a mostrar el Log de inicio "AppStart" una sola vez.
Todo lo demás no se ejecuta, ni siquiera llega a encender el LED del pin PC13.
Este pin declarado como LED_BUILTIN en Arduino, en B4R para esta tarjeta, viene siendo el 32
Esto lo supe desde el mismo arduino, con lo siguiente:
Arduino:
  Serial.print("LED_BUILTIN: ");
  Serial.println(LED_BUILTIN);
El resultado fue el siguiente:
LED_BUILTIN.jpg

Bien, ya obtenido el pin correcto para la tarjeta, paso a escribir un código simple en B4R, el cual adjunto.
Por más que he intentado, cambiando Bootloader por el HID, con otras descargas de tarjetas, y con la modificación, nada me hace destellar el LED.
Incluso he probado de uno por uno para ver si por ahí algún pin hacía el cambio de estado, pero nada.
Así que si no puedo tener acceso a los GPIO, pues nada de esto sirve. 😕

Si alguien tiene resuelto este problema y guste compartirlo, le estaría bastante agradecido.
La verdad me encanta este entorno de programación y prefiero usarlo en lugar de Arduino, ya que B4R lo supera por mucho.

Gracias, y quedo al pendiente de sus preguntas y sabias respuestas.
 

Attachments

  • STM32_Blink.zip
    1.1 KB · Views: 122
  • Selector de Tarjeta.jpg
    Selector de Tarjeta.jpg
    65.7 KB · Views: 134
  • Arduino - Configuración de la Placa.jpg
    Arduino - Configuración de la Placa.jpg
    75.2 KB · Views: 131

Digitek

Member
Saludos nuevamente.
Les comento que ya he podido resolver el conflicto con las librerías.
Obviamente, también tenía que modificar el programa en el archivo "wirish_digital_f1.cpp"
Este archivo contiene el void pinMode, que hace referencia a WiringPinMode en el archivo "io.h"

Ya con los respectivos cambios pude compilar el programa adjunto anteriormente en B4R y esto no afectó a Arduino, ya que también compila sin problemas.
Al menos para la tarjeta que estoy usando con el STM32F103C8T6

Notas:
El programa que subí tiene declarado el pin PC13 como "MODE_INPUT_PULLUP", pero quedó así por tantas cosas que probé. 😅
El archivo "wirish_digital_f1.cpp" está en la carpeta "...STM32F1\cores\maple\stm32f1".
El archivo "io.h" está en la carpeta "...cores\maple".

Adjunto los archivos modificados, esperando que sean de utilidad.

Un fuerte abrazo.
 

Attachments

  • Archivos modificados.rar
    3.8 KB · Views: 128
  • STM32_Blink.zip
    1 KB · Views: 139
Top