Muchas gracias por tus videos!!! Se aprende un montón, yo recién estoy entrando en el mundo de los STM, vengo de programar micros ATmega y por una cuestión de rendimiento me vi obligado a cambiar!!!
¡Ingeniero Marlon!, Gracias por tomarse el tiempo de compartir su conocimiento, ya conecté mi placa a ArchLinux e hice el debugin :) :) ¡saludes desde Colombia!
Excelente!! Haces muy fácil lo difícil!! Muy bien explicado. Se me paso rapidísimo el tiempo a pesar de los 35min. muy interesante !!y me enseñaste lo de break point que nunca estuve seguro como se usaba esa función, x ejemplo en el mplab de PIC
Muy buen video Marlon. Te podría nombrar en algún video que hago? yo Intentaré aprender con ChibiStudio y ChibiOS. Recién he empezado. Lo de iniciar en la SRAM, puede servir como un tipo de redundancia me imagino, pero debería controlarse externamente los valores alto y bajo de los pines de booteo. y Si no arranca, iniciar desde las otras formas. Se hace algo así en la industria satelital o donde se necesite redundancia de booteo de códigos. Abrazos desde Argentina.
Wao. Muy interesante lo de redundancia por seguridad, Lucas. No se me había ocurrido, pero sí sería una muy buena aplicación. Sobre lo de nombrarme en algún vídeo, con toda confianza, hermano. Sería un honor para mí ^^
Excelente video Marlon, hace rato quería iniciar con los STM y estos días de descanso en diciembre me cayeron de perlas para iniciar. Saludos dese Colombia
Muy buenos videos, hasta hoy me desperté temprano para alcanzar a verlos todos. Muchas gracias, estaría bien unos tutos pero sin usar las librerías Hal, para que valga la pena toda la teoría tan útil que diste para la introducción, porque pues usando esas librerías se oculta mucha información importante.
Sí, hermano. Tienes razón. Pero los videos que saldrán de acá en adelante están enfocados para personas con poca experiencia en microcontroladores. Por ello usaremos la librería HAL. Sin embargo me has dado una idea para un próximo video. Una comparación entre las diferentes librerías compatibles con los STM32. Gracias por la idea :D
llevo tiempo buscando información gaadpaa de los micros ST, gracias a Dios apareciste a aclararnos las dudas de cómo programar estos micros. saludos desde Argentina.
"mastering stm32" de Carmine Noviello solo q esta en ingles, existen 2 ediciones la mas reciente del 2022, fue lo que Marlon recomendó, la cosa aqui es que debes verificar que vaya en tu misma linea por que cada autor toma su camino algunos van con IDE Eclipse Puro, otros con IDE Keil, otros hasta con un proyecto muerto llamado CoIDE. sucede que STM no tenia un IDE hasta antes del 2017 y proliferaron varias alternativas de pago y gratuitas, hoy en dia la recomendacion es usar el IDE del propio stm como lo muestra este curso de Marlon y como sabras los libros van un tanto atrasados en ello, por eso la segunda edicion del libro "mastering stm32" incluye ya el tema del STM32CubeIDE.
Hola, Guido. Gracias! En verdad no lo tengo plaenado, pero podría ser como módulo extra una vez terminado el curso actual. Fuera de ello existe un stm que maneja comunicación LoRa sin necesidad de un chip como el SX1276, este es el STM32WL. Te lo digo por si te interesa adquirir uno :D
Excelente video y gran explicación. Tengo una duda para iniciar en este mundo de estos microcontroladores. Veo que muestras el esquemático de tu tarjeta, mi pregunta es que si todas las tarjetas de STM te proporciona el esquemático de la tarjeta de desarrollo que compras, o no viene el esquemático y debe uno buscarlo por la red, muchas gracias.
En el coeigo que pones solo pones que el led se encienda como que tambien se apaga (quizas la funcion es asi?). Sorry estoy acostumbrado a arduino hace poco conoci los stm32. Muchas gracias por tus videos.
muy buenos tus vídeos ojala mas a delante pudieras hacer tutoriales de como integrar las librerías de gráficos avanzados como emWin o TouchGFX para usar pantallas tft conectadas por la interfaz FSMC que traen estos micros seria muy bueno un tutorial de algunos de esos temas tengo un STM32F407VET6 y he logrado avances con estas librerías pero tardo mucho por que no hay tutoriales y toca con solo la documentación disponible por otro lado creo que deberías hablar un poco de CMSIS creo que serviría de mucho no solo para saber como programar los registros si no para entender como estan programadas las librerias HAL saludos
Wao, fuiste bastante específico Jajajajajj, pero en sería genial. No he trabajo en interfaces gráficas con micros, pero sería estupendo hacerlo. Una vez acabemos estos videos (básicos) trataremos de tocar temas más específicos como el que sugieres :D
Marlon buenos dias.. sigo todos tus videos desde Colombia he puesto en marcha una tajeta discovery con STM32F407 y el driver para el ST-LINK funciona de maravilla, pero no me reconoce el Blue Pill, en Admon de dispositivos lo veo normal pero no puedo programar nada.Me podrias ayudar
Hola Marlon, buenísima tu explicación! Quisiera saber si entre un STM32F411 y un STM32F407 existen demasiadas diferencias, dado que aquí en Buenos Aires el F411 no se consigue fácilmente. Gracias!!!
De que parte de Bs As sos yo justo tengo unos amigos que venden stm32f411Ce pq lo usaron durante una materia de la facultad y ya no la usan más, si te interesa te dejo mi mail mongito100@gmail.com
Hola, Nestor! Acabo de comparar los microcontroladores en la página de st (www.st.com/en/microcontrollers-microprocessors/stm32f4-series.html#products) y veo que el F407 es superior al F411 en frecuencia de operación, memoria flash, RAM, número de timers, prácticamente en todo. Además cuando con un periférico Ethernet (cosa que no tiene el F411). Creo que sería una buena compra de tu parte. Lo único en lo que le gana el F411 es en número de puertos I2C e I2S, la cual es algo muy minúsculo. Pero se me hace raro que sea más fácil conseguir un F407 que un F411, debería ser alrevez 🤔 xd. Ahora te quieren vender el chip o una placa de entrenamiento? El STM32F407IE tiene un empaquetado LQFP de 176 pines lo cual va a ser algo dificil de soldar. Te recomendaría comprarte una placa de entrenamiento ya ensamblado para que te ahorres todo ese proceso. Espero te haya sido de ayuda :D
Hola muy buenos tutoriales, sigue asi. Tengo una duda, ¿De donde bajas el esquemático donde revisas lo del boot 0 este conectado a tierra? Tengo un STM32L412KB y me gustaría revisar lo que tu haces. Saludos y gracias.
Si tienes el STM32CubeIDE, al momento de buscar el microcontroador hay una opcion para ver que placas tienen el nucleo que estas usando, luego te manda a la pagina de st donde esta toda la info, ahi hay un apartado que dice CAD RESOURCES. Ahi descargas el esquematico
Sería mentirte decir que definitivamente NO se puede, pero le he intentado en varios ocasiones y no o he logrado. Lo que llegué a hacer como medida desesperada xd, fue eliminar el main.c y crear el mío propio, pero era todo un lío cuando hacía alguna ocnfiguración en la vista del chip, tenía que sacar un respaldo de mi main.c a cada rato sino perdía lo que había avanzado xd... Conclusión xd, te recomendaría usar la plantilla por defecto, puedo que al inicio sea algo molesta (lo fue para mí), pero una vez que te acostumbras, te das cuenta que todo está bien ordenado y distribuido.
Hola, primero que nada gracias por hacer este curso de STM32 me está sirviendo mucho, y tengo una duda yo no cuento con el St-link tengo un adaptador serial, como le hago para que lo reconozca o tengo que adquirir el st-link
Hola, Evil! Sí se puede hacer ello por medio del bootloader que tienen integrados los smt32, pero no es muy apropiado usarlo, por lo menos no para desarrollo y lastimosamente no tengo un vídeo (aún) explicando cómo usar el bootloader. Pero te recomendaría adquirir un stlink y hacer tus proyectos. No porque mis videos lo usen, sino porque vas a darte cuenta de la gran flexibilidad que brinda esa herramienta. Un abrazo!
@@Electrosaurio vale muchas gracias por la respuesta y creo que si comprare el stlink mientras seguiré viendo tu vídeo para guiarme de ahí muchas gracias igualmente
Hola Marlon, te hago una pregunta, en un video anterior habías dicho que una ventaja de los STM32 es que no necesitan un programador ya que tienen el Boot Loader integrado entonces que los STM32 se podrían conectar directamente al pc, pero aquí usaste un programador, ¿por qué? Gracias y saludos desde colombia.
De hecho se esta usando el boot loader para programar el microcontrolador, ya que este identifica el tipo de comunicacion que usara el micro con la pc para poder grabar la programacion. El programador es como el interprete para esa comunicacion, ya que una vez escrito el programa en C, lo convierte en asembler y posteriormente a lenguaje maquina para que asi pueda ser interpretado por el stm, luego el ide se encarga de programar al stm usando el puerto usart (haciendo uso del boot loader)
Hola, Edgar! En verdad no podría responderte porque nunca he usado mikroC for ARM. Pero sí podría decirte porque usar STM32CubeIDE. 1ro. Este es una herramienta creada a soportada por los ingenieros de ST, los creadores de los STM32. En verdad no me imagino a alguien mejor que ellos para crear herramientas de desarrollo para esta familia de uC. 2do. Este IDE tiene integrado el STM3CubeMX. Esta es la herramienta que nos permite hacer la configuración gráfica. Esto hace más sencillo el proceso de desarrollo. 3ro. La librería HAL está incluida en el IDE. Este IDE está conectado a sus servidores así que, si cuentas con conexión a internet, siempre tendrás la librería actualizada y lista para usar. Librería que también es desarrollada por los mismos ingenieros de ST. 4to. El IDE está basado en Eclipse por lo que puedes incluir muchas herramientas (plugins) que te facilitan demasiado el hacer código. Esto sin contar las herramientas nativas del IDE que de por sí son muy buenas. Podría desplayarme mucho con esto, pero creo que pude explicarme :D. No sé porque no usar mikroC for ARM, pero sí sé porque usar STM32CubeIDE. Espero haberte sido de ayuda. Un abrazo.
Tengo una tarjeta Netduino con un micro Stm32F05, crees que me la reconozca el cubeIde? Originalmente estaba planteada para programarse con C# en visual studio
Olá Marlon, seus vídeos são muito bons que poderia dublar alguns de seus vídeos para o português, e colocar em meu canal, claro sem nenhum propósito comercial. A aqui no Brasil temos poucos vídeos, a maioria é sempre bem básico, instalar o cube e acender um led. Não se preocupe darei todos os créditos a você, só vou narrar para o português
Buen vídeo, buen aporte, felicidades, tengo un st-link v2 chino e intento programar una STM32 Blue Pill, al cargar el código al STM32 lo hace de manera correcta, pero el micro no trabaja hasta que presiono el botón de reset manualmente, después de eso el micro corre el programa correctamente. En las opciones del programador en el Keil MDK active la casilla donde indica que haga el reset automáticamente después de cargar el código, ¿alguien tiene idea de porque mi st-link v2 no realiza el reset a la Blue Pill después de cargar el código y correr el programa de manera automática?
Que extraña. Estaba por recomendarte que actives la casilla, pero me dices que ya lo has hecho... Podría ser la posición de los jumpers en los pines de BOOT. Trata de conectar BOOT0 a tierra t BOOT1 al aire. Si no funciona cambia la posición de BOTT1 entre tierra y VCC... Sí sé que no es la solución más ingenieril xd, pero no he pasado por un caso como el tuyo antes xd
@@Electrosaurio Gracias por responder, ya estuve jugando con los Jumpers, pero no recuerdo bien si ya realice las pruebas que indicas, voy a retomar de nuevo el tema y seguiré tus consejos. Excelente serie de vídeos, saludos.
Tengo el mismo problema , Aunque sospecho que es mas parte de software que de hardware , Si checas la parte del Main , considero que le hace falta ahí una condición en setup .
jeje hola.. marlon tengo un pequeño problema. ya adquirí el programador st link v2 y una blue pil. el problema radica a la hora de cargar el código pues siempre me presenta el mismo error. ya he actualizado el programador infinidad de veces pero siempre presenta el mismo error y pese a que he buscado la soluciones por Internet, no la encuentro. me las he ingeniado para cargar el código con otra herramienta de stm que es el stm32 st-LINK utility. cargando el código .hex... pero no me convence ya que se pierde la herramienta para debugar código. no se si puedas ayudarme con este pequeño error: Error in final launch sequence: Failed to start GDB server Failed to start GDB server Error in initializing ST-LINK device. Reason: (18) Could not verify ST device! Abort connection.
Hola, Sergio. Ahorita no estoy en mi pc, pero las pruebas que yo haría antes de intentar algo más complejo son: 1. Verificar la conexión del programador al micro. 2. Verificar la correcta posición de los pines boot. 3. Verificar si el driver del st link está correctamente instalado Pregunta. Cuando te actualizas el firmware del stlink, te sale "update successful" o algún mensaje que indique que la actualización fue un éxito? Cuando yo quiero actualizar el firmware y no me sale eso, primero reviso que mi pc detecte el programador con ayuda del administrador de dispositivos. Sí mi pc lo detecta, pero mi ide no, o no me sale el mensaje de actualización exitosa, lo desconecto y vuelvo a conectar y generalmente eso basta para que el IDE reconozca el dispositivo y actualiza el firmware de forma exitosa. Prueba con lo que te digo y cuéntame cómo te va.
Hola, tengo un problema al pasar el programa al microcontrolador por medio del stlink v2 y pensé que podrías ayudame. El caso, al momento de cargarlo me aparece el error: "Failed to start GDB server", ya actualicé el firmware del stlink v2 y verifique los pines del micro pero nada, incluso probé cargar un programa por medio del Arduino ide y si me funcionó, por eso pienso que el problema es o son los servidores gdb. Agradecería tu opinión.
A ver, espero estoy te funcione. En la barra de menú ve a Run>Debug Configurations... Entra a la pestaña Debugger y, en Debug probe, prueba las otras dos opciones de depurador disponibles en ST: SERGGER-LINK y OpenOCD
Eso sale cuando se genera un problema con el programador/debugger. Desconectarlo, vuelvo a conectar y actualiza el firmware del programador. Eso debería solucionarlo.
Hola gracias por tus ayudas. Me gustaria saber si el delay() que usaste no detiene el programa como lo hace en el arduino. la verdad que quiero aprender a usar el STM32 por sus avanzadas caracteristicas y que superan al al ATMEGA328
Hola, Agra! :D Sí, como cualquier otro delay, este genera un retardo en donde ninguna instrucción del flujo de código principal es ejecutada hasta que este retardo termine. Ló única que sí puede ejecutarse dentro del retardo son las rutinas de interrupción. El retardo de la librería HAL se maneja mediante el TIMER SYSTICK, un timer dedicado al cumplimiento de esta clase de funciones. Creo que en arduino también usan un TIMER, no estoy del todo seguro. Espero te haya sido de ayuda :D
gracias por tu rápida respuesta. Podrías hacer un ejemplo con el STM32 en donde NO se use delay(), y en su lugar uses una función parecida a millis(). Asi quedaría más clara tu explicación. Te reitero las gracias.
Consulta podrías explicar un poco más a detalle pq siempre todos(al menos la mayoría de vídeos que vi) programan los stm en C y no en C++ pq según entiendo es lo mismo pero con la posibilidad de POO, lo cual me parece mejor, aunque yo actualmente no lo domine. Mi ideal a futuro es crear una librería que haga compatible arduino con stm32, más que nada para poder usar librerías de arduino en stm32 ya que bueno hay millones de librerías con ejemplos en arduino pero no en stm32, lo cual es una lástima ya que es muy notoria la diferencia en cuanto a potencia. Se agradecen muchos los videos,yo ya me suscribi y por supuesto di like, seguí asi
tal vez la programación con C++ no es muy recomendada para micros ya que al ser un lenguaje de mas alto nivel puede consumir mas recursos del micro lo cual en la programador de sistemas embebidos es crucial yo creo que c es el mejor lenguaje hasta el momento para programar sistemas embebidos ya que nos permite estar mas cercanos al harware pero a la vez programar en alto nivel arduino es una plataforma que esta orientada hacia el aprendizaje por lo que es tolerable sacrificar recursos en pos de la facilidad de su uso
Para empezar Arduino es una plataforma de desarrollo para novatos o niños es por eso que no se recomienda usar en proyectos más avanzados. Es como contruir un casa con ladrillos de LEGO ,pues no Arduino Arduino no está creado para usarse sino para enseñar a los novatos. Segundo hacer una librería es fácil solo nesecita un datasheet y hasta dinoelectro( ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-1i0CQiBA3TI.html ) ya tiene su propio tutoria de como hacer una librería. Por último si existe un librería para usar Arduino con stm32 pero no obtiene todas las funciones del stm32 el ide stmcubeide tiene cosas que Arduino no ,pero repito usar stm32 con Arduino es como contruir una casa con ladrillos de LEGO porque Arduino está hecho para enseñar. www.luisllamas.es/programar-stm32-con-ide-de-arduino-y-conversor-usb-ttl/
Hola, Dante! Excelente pregunta. En verdad muy buena. Y las respuestas que han dado Carlos y JJJ son acertadas. C++ tiene ventaja frente a C en temas de portabilidad. Con buenas bases en C++ podemos hacer librerías que sean compatibles con diferentes plataformas, es por ello que se usa en Arduino, ya que Arduino brinda soporte a diferentes micros y fabricantes. El problema está en el consumo de recursos, especialmente de la RAM. Los lenguajes POO usan clases, la cual es una gran herramienta cuando no tenemos que preocuparnos por los recursos consumidos, como cuando usamos una raspberry. Pero en un micro, al tener tan poca RAM, y tan pocos recursos en general (comparador con un computador multipropósito), el lenguaje C++ no permite sacarle lo mejor al microcontrolador. La ventaja de portabilidad que tiene el lenguaje C++ frente el C, puede resolverse con buenos conocimientos C. EL C++ lo facilita, sí, pero no significa que no se pueda hacer con C. Ahora, esto no significa que nunca podremos usar librerías de arduino con un STM32 trabajando con C. Ya lo he hecho antes y planeo enseñarlo por este medio, pero esto será en un futuro no muy cercano xd... Tenemos varias cosas pendientes antes de llegar eso :D Espero haber podido ser de ayuda. PD: Sólo para añadir que actualmente Arduino no me parece una mala plataforma, tiene muchas cosas positivas. El problema está cuando entras a un mercado más competitivo. En ese territorio, donde los desarrolladores tienen más experiencia y conocimiento, Arduino no tiene nada que hacer. Y esto es lo que no te dicen los que venden cursos de Arduino. Si vez mis videos del ATMEGA328P verás que programar sin arduino no es difícil, sólo hay que darle algo más de tiempo, pero lo que obtienes a cambio lo vale totalmente. Lo mismo para con los STM32. El único escenario en donde recomiendo usar Arduino es cuando programamos los ESP. Esto debido a que ESPRESSIF, el fabricante de los ESP tiene un pésimo soporte en un plataforma de desarrollo, mientras que Arduino ha hecho un excelente trabaj con este micro.