Curso de STM32 en español.
El curso lo puede desarrollar casi en cualquier tarjeta STM32 (
En primera instancia le ayudará a generar el primer programa "Hola Mundo", compilarlo y aprovechar las herramientas de depuración.
Consta de más de 8 Horas de video para su mejor entendimiento.
En el Curso tiene guías y puntos clave en PDF a tener en cuenta con sus respectivas imagenes y explicaciones que le servirán para complementar su conocimiento con el video práctico el cual le guiará de manera adecuada para entrar en el mundo de los STM32. El curso está dirigido a ser bastante práctico.
Curso de STM32 en español.
El curso lo puede desarrollar casi en cualquier tarjeta STM32 (
En primera instancia le ayudará a generar el primer programa "Hola Mundo", compilarlo y aprovechar las herramientas de depuración.
Consta de más de 8 Horas de video para su mejor entendimiento.
En el Curso tiene guías y puntos clave en PDF a tener en cuenta con sus respectivas imagenes y explicaciones que le servirán para complementar su conocimiento con el video práctico el cual le guiará de manera adecuada para entrar en el mundo de los STM32. El curso está dirigido a ser bastante práctico.
Los ejemplos RAR expuestos están disponibles para descarga libre.
El uso HAL Drivers hace que sea relativamente más fácil reciclar funciones y código.
Temas fundamentales para aplicaciones Casuales e
Esta temática le servirá para siguientes Cursos de GUI Básicos, GUI avanzados con emWin, FreeRTOS, lwIP, ModBus, HMI con
En este video generaremos el primer programa que se cargará a la tarjeta STM32F429 Discovery, en general los laboratorios están orientados para poder implementarlos casi en cualquier microcontrolador de cualquier familia de STM32, configuraremos el Reloj de Procesador al cual va a trabajar, usaremos el HSI RC (High Speed Internal) que es un oscilador de tipo Resistencia-Capacitor interno que trabaja a 16 Mhz, el cual lo configuraremos para subir la frecuencia al reloj principal del procesador, asimismo configuraremos el HSE (High Speed External) que es el oscilador externo que tiene la tarjeta soldada con sus respectivos capacitores, lo haremos en el IDE STM32CubeIDE propio y libre (GRATIS) de ST Microelectronics, insertaremos variables vara visualizar su comportamiento a lo largo del programa depurando con la herramienta STLink embebida de la tarjeta STM32F429 Discovery y el software libre STMStudio que usa el protocolo SWD del STLink para acceder a las direcciones de memoria (variables) del procesador y visualizar su contenido en tabla, curva o barras.
In this video we will generate the first program that will be loaded to the STM32F429 Discovery card, in general the laboratories are oriented to be able to implement them almost in any microcontroller of any STM32 family, we will configure the Processor Clock to which it will work, we will use the HSI RC (High Speed Internal) which is an internal Resistance-Capacitor type oscillator that works at 16 Mhz, which we will configure to raise the frequency to the processor's main clock, we will also configure the HSE (High Speed External) which is the external oscillator that has the card soldered with their respective capacitors, we will do it in ST Microelectronics' own free STM32CubeIDE IDE (FREE), we will insert variables to visualize their behavior throughout the program debugging with the embedded STLink tool of the STM32F429 Discovery card and the software free STMStudio that uses the STLink SWD protocol to access memory addresses (variable es) of the processor and display its content in a table, curve or bars
En este video generaremos desde cero un programa para probar la funcionalidad de los GPIOS en función digital, para demostrar el funcionamiento de las salidas usaremos el diodo LED de la tarjeta STM32F429 Discovery (Casi todas las tarjetas STM32 poseen un diodo LED conectado a una de sus salidas y un Push Button a otro GPIO), además del Push Button (Botón Azul) de las misma.
In this video we will generate from scratch a program to test the functionality of the GPIOS in digital function, to demonstrate the operation of the outputs we will use the LED diode of the STM32F429 Discovery card (Almost all STM32 cards have an LED diode connected to one of their outputs and a Push Button to another GPIO), in addition to the Push Button (Blue Button) of the same.
En este video programaremos la entrada PA0 de la tarjeta STM32F429 Discovery como entrada de Interrupción, la cual tiene un Botón Azul (User Button) para poder generar en terminos matemáticos un escalón unitario que no es mas que un pulso, debemos tomar en cuenta lo antes aclarado en el video anterior sobre el ruido o rebote de los elementos de acción mecánica, también manipularemos el vector de prioridades NVIC al cual responde CMSIS en donde cambiaremos la prioridad de nuestra interrupción.
In this video we will program the PA0 input of the STM32F429 Discovery card as an Interrupt input, which has a Blue Button (User Button) to be able to generate in mathematical terms a unit step that is not more than a pulse, we must take into account the above clarified in the previous video about the noise or rebound of the mechanical action elements, we will also manipulate the NVIC priority vector to which CMSIS responds where we will change the priority of our interruption.
En este video vamos a aprender a manipular el periférico USART (huart1) para transmitir y recibir datos en modo polling, por interrupción y por DMA desde una terminal serial (Software libre RealTerm) con la ayuda de un conversor de USB a serial TTL (ch340 converter), además configuraremos el USART para poder usar la función printf() de librería stdio.h.
In this video we are going to learn how to manipulate the USART peripheral (huart1) to transmit and receive data in polling mode, by interruption and by DMA from a serial terminal (RealTerm free software) with the help of a USB to serial TTL converter (ch340 converter), we will also configure the USART to be able to use the printf () function from the stdio.h library.
En este video aprenderemos sobre el uso del periférico IWDG (WatchDog Independiente) que es un temporizador de tiempo programable el cual tiene la capacidad de reiniciar nuestro microcontrolador por completo, este es muy útil para poder recuperar el control si por algun motivo el CPU no logra recuperar la correcta ejecucion del codigo de nuestra aplicación (Se pierde en un bucle no deseado), calcularemos el tiempo requerido para que satisfaga nuestras necesidades.
In this video we will learn about the use of the IWDG peripheral (Independent WatchDog) which is a programmable time timer which has the ability to restart our microcontroller completely, this is very useful to be able to regain control if for some reason the CPU fails recover the correct execution of the code of our application (It is lost in an unwanted loop), we will calculate the time required to satisfy our needs.
En este video calcularemos los valores del periodo y prescaler para que un timer nos genere una interrupción, probaremos cuando se habilita la opción de que el timer genera la interrupción periodicamente o solo una vez, usaremos el datasheet del microcontrolador para determinar la frecuencia a las que está oscilando el timer seleccionado.
In this video we will calculate the values of the period and prescaler so that a timer generates an interruption, we will test when the option is enabled that the timer generates the interruption periodically or only once, we will use the microcontroller datasheet to determine the frequency at which the selected timer is oscillating.
En este video generaremos una señal de tipo PWM (Modulación en Ancho de Pulso) con la ayuda de un Timer de hardware, calcularemos la frecuencia a la cual necesitamos nuestro PWM, asimismo recordaremos ciertos criterios del video anterior.
In this video we will generate a PWM (Pulse Width Modulation) signal with the help of a hardware Timer, we will calculate the frequency at which we need our PWM, we will also remember certain criteria from the previous video.
En este video capturaremos una señal PWM generada con otro timer en el mismo microcontrolador para asi con las configuraciones adecuadas poder calcular la frecuencia y el dutty al cual se está generando dicha señal, para ello solo necesitaremos un pequeño puente o conexión entre los GPIOS involucrados.
In this video we will capture a PWM signal generated with another timer in the same microcontroller so that with the appropriate settings we can calculate the frequency and the dutty at which said signal is being generated, for this we will only need a small bridge or connection between the GPIOS involved.
En este video configuraremos un Timer de Hardware para poder capturar pulsos y contabilizarlos de tal manera que el periférico lo haga automáticamente, es decir que ahora vamos a separar la señal de reloj del timer (APB1 o APB2) para poder alimentar sus ciclos de procesamiento mediante ETR (External Trigger), esta característica de los Timers es muy útil para poder conectar elementos de alta frecuencia para poder determinar el número de pulsos como por ejemplo un Caudalímetro o un Encoder de pulsos, etc.
In this video we will configure a Hardware Timer to be able to capture pulses and count them in such a way that the peripheral does it automatically, that is, now we are going to separate the clock signal from the timer (APB1 or APB2) to be able to feed its processing cycles through ETR (External Trigger), this feature of the Timers is very useful to be able to connect high frequency elements to be able to determine the number of pulses such as a Flowmeter or a Pulse Encoder, etc..
En este video generaremos una señal de tren de pulsos usando la característica del Timer de Output Capture, esto lo haremos a una baja frecuencia, el programa empezará generando la señal programada a cierta frecuencia y habilitaremos la entrada del pulsador de usuario para detener la generación de pulsos, el tren de pulsos generado es de período simétrico, es decir mismo tiempo en el alto y bajo nivel TTL.
In this video we will generate a pulse train signal using the Output Capture Timer feature, we will do this at a low frequency, the program will start generating the programmed signal at a certain frequency and we will enable the user button input to stop the generation of pulses, the generated pulse train is period symmetric, that is, the same time at the high and low level ttl.
En este video vamos a simular la señales AB que normalmente genera un encoder de cuadratura, estas señales las podremos insertar a un Timer (El timer debe poder aceptar señal de encoder) de nuestro microcontrolador y poder determinar si el encoder esta girando en un sentido u otro, esta característica de los Timers es muy usada para el manejo de motores para determinar su sentido y recorrido del eje.
In this video we are going to simulate the AB signals that a quadrature encoder normally generates, these signals can be inserted into a Timer (The timer must be able to accept an encoder signal) of our microcontroller and be able to determine if the encoder is rotating in one direction. Another, this feature of the Timers is widely used for the management of motors to determine their direction and axis travel.
En este video usaremos el periférico ADC1 y ADC3 para convertir la señal ADC que podemos generar con la ayuda de 3 potenciometros o resistencias variables , además de poder leer el valor del voltaje de referencia conectado al microcontrolador, voltaje de la bateria (VBat) y el valor de la temperatura interna del mismo, todas estas lecturas las realizaremos en modo polling, es decir que en el while infinito ordenaremos las conversiones y esperaremos a que el periférico las realice.
In this video we will use the ADC1 and ADC3 peripheral to convert the ADC signal that we can generate with the help of 3 potentiometers or variable resistors, in addition to being able to read the value of the reference voltage connected to the microcontroller, battery voltage (VBat) and the value of the internal temperature of the same, all these readings will be carried out in polling mode, that is, in the infinite while we will order the conversions and wait for the peripheral to perform them.
En este video usaremos el periférico ADC para convertir señales analógicas a un valor digital, por cuestiones didácticas este ejemplo lo haremos en resolución de 8 bits para ADC1, es decir un valor máximo de 255 en 3,3VDC, habilitaremos la interrupción del ADC para que nos informe cuando el periférico haya terminado una conversión completa de un canal o un conjunto de canales, este aviso nos puede servir para agregar filtros adicionales a nuestos valores resultantes.
In this video we will use the ADC peripheral to convert analog signals to a digital value, for didactic reasons we will do this example in 8-bit resolution for ADC1, that is, a maximum value of 255 at 3.3VDC, we will enable the ADC interrupt so that inform us when the peripheral has finished a complete conversion of a channel or a set of channels, this notice can be used to add additional filters to our resulting values.
En este video realizaremos la conversión de señal analógica a un valor digital de varios canales, todo esto lo haremos usando la ayuda del periférico DMA que como sabemos es un periferico de tipo Master como el CPU , el cual lo configuraremos para que al finalizar una conversión completa del ADC proceda a copiar los valores resultantes en un vector de lecturas, al usar este método de lectura del ADC estamos quitando carga al CPU y aprovechando para realizar otras actividades de procesamiento.
In this video we will perform the conversion of the analog signal to a digital value of several channels, we will do all this using the help of the DMA peripheral that as we know is a Master type peripheral such as the CPU, which we will configure so that at the end of a conversion complete the ADC proceed to copy the resulting values into a reading vector, by using this ADC reading method we are taking the load off the CPU and taking advantage of it to perform other processing activities.
En este video aprenderemos a usar el periférico DAC para poder generar señal analógica en un GPIO a partir de un valor digital, este periférico puede ser muy útil para generar señales especiales como señal triangular, senoidal, etc, el rango de salida es de 0 a 3.3 VDC y su máxima resolución de entrada al periférico es de 12 bits 0b111111111111, es decir cuando insertemos 4095 al DAC, obtendremos 3.3 VDC a la salida del GPIO configurado.
In this video we will learn to use the DAC peripheral to be able to generate analog signal in a GPIO from a digital value, this peripheral can be very useful to generate special signals such as triangular, sinusoidal, etc., the output range is from 0 to 3.3 VDC and its maximum input resolution to the peripheral is 12 bits 0b111111111111, that is, when we insert 4095 to the DAC, we will obtain 3.3 VDC at the output of the configured GPIO.
En este video aprenderemos a implementar el protocolo de comunicación I2C por medio de los periféricos disponibles en el microcontrolador, la velocidad de transmisión de datos por este protocolo es normalmente de 100 y 400 KHz, en algunos otros microcontroladores STM32 podemos subir a 1 MHz, es un protocolo diseñado para comunicarse con procesasdores o periféricos externos al microcontrolador, una de las ventajas de este protocolo es la cantidad de lineas a usar para varios esclavos I2C frente a otros protocolos, y una de las principales desventajas es la velocidad a la que se puede trabajar.
In this video we will learn to implement the I2C communication protocol through the peripherals available in the microcontroller, the data transmission speed through this protocol is normally 100 and 400 KHz, in some other STM32 microcontrollers we can go up to 1 MHz, it is a protocol designed to communicate with processors or peripherals external to the microcontroller, one of the advantages of this protocol is the number of lines to use for several I2C slaves compared to other protocols, and one of the main disadvantages is the speed at which it can be used. to work.
En este video usaremos similares recursos que el video anterior para el uso del I2C de nuestro microcontrolador, podemos usar dos tarjetas o una sola con doble periférico I2C, en esta vez habilitaremos las interrupciones del I2C, podemos tener 2 tipos de interrupción para los protocolos de comunicación, uno para transmitir y otro para recibir datos, nos ayudaremos de igual manera de un botón para probar el ejemplo.
Investigando Problemas con el desarrollo de la Transmisión en Modo Interrupción con las librerías HAL Drivers, se ha encontrado con la novedad que en muchas instancias se tiene problemas con su implementacion, por ello a continuación se lista los procesadores con los cuales se ha probado.
Sin novedad:
STM32F051
STM32F303
Con Errores:
STM32F429
STM32F746
In this video we will use similar resources as the previous video to use the I2C of our microcontroller, we can use two cards or a single card with double I2C peripherals, this time we will enable the I2C interruptions, we can have 2 types of interruption for the protocols of communication, one to transmit and another to receive data, we will help each other in the same way with a button to test the example.
Investigating Problems with the development of the Transmission in Interruption Mode with the HAL Drivers libraries, he has found the novelty that in many instances there are problems with its implementation, therefore the processors with which it has been tested are listed below.
No news:
STM32F051
STM32F303
With mistakes:
STM32F429
STM32F746
En este video usaremos el protocolo SPI para comunicar 2 tarjetas STM32 (STM32F3 Discovery y STM32F429 Discovery), enviaremos una trama desde el SPI master STM32F3 Discovery al Slave STM32F429 Discovery en modo Full Duplex, esto se lo hará a 9 Mbit/s y un ancho de dato de 8 bits, una de las ventajas frente a otros protocolos de comunicación entre procesadores o con periféricos es la cantidad de líneas necesarias para implementarlo, además de ello se requiere una línea adicional por cada esclavo extra que se quiera añadir a la red SPI en cuestión, asimismo hay ventajas sobre los otros protocolos y pues con SPI se puede tener altas velocidades de transmisión.
In this video we will use the SPI protocol to communicate 2 STM32 cards (STM32F3 Discovery and STM32F429 Discovery), we will send a frame from the SPI master STM32F3 Discovery to the Slave STM32F429 Discovery in Full Duplex mode, this will be done at 9 Mbit / s and a width of 8-bit data, one of the advantages compared to other communication protocols between processors or with peripherals is the number of lines necessary to implement it, in addition to this, an additional line is required for each extra slave that you want to add to the SPI network in Question, there are also advantages over the other protocols and because with SPI you can have high transmission speeds.
En este video usaremos el protocolo SPI para comunicar 2 tarjetas STM32 (STM32F3 Discovery y STM32F429 Discovery) en modo interrupción, enviaremos una trama desde el SPI master STM32F3 Discovery al Slave STM32F429 Discovery en modo Full Duplex, contaremos el número de veces que interrumpe el programa principal al finalizar un proceso de transmisión y recepción de datos, esto se lo hara a 9 Mbit/s y un ancho de dato de 8 bits.
In this video we will use the SPI protocol to communicate 2 STM32 cards (STM32F3 Discovery and STM32F429 Discovery) in interrupt mode, we will send a frame from the SPI master STM32F3 Discovery to the Slave STM32F429 Discovery in Full Duplex mode, we will count the number of times the program interrupts main at the end of a data transmission and reception process, this will be done at 9 Mbit / s and a data width of 8 bits.
En este video usaremos el protocolo SPI para comunicar 2 tarjetas STM32 (STM32F3 Discovery y STM32F429 Discovery) en modo DMA, enviaremos una trama desde el SPI master STM32F3 Discovery al Slave STM32F429 Discovery en modo Full Duplex, al usar DMA quitaremos carga al CPU, esto se lo hará a 9 Mbit/s y un ancho de dato de 8 bits.
In this video we will use the SPI protocol to communicate 2 STM32 cards (STM32F3 Discovery and STM32F429 Discovery) in DMA mode, we will send a frame from the SPI master STM32F3 Discovery to the Slave STM32F429 Discovery in Full Duplex mode, by using DMA we will remove the load from the CPU, this it will be done at 9 Mbit / s and a data width of 8 bits.
En este video pondremos al microcontrolador de un estado normal (Titilando Leds) al modo Sleep que es uno de los estados de bajo consumo de energía, para levantarlo y restablecer su normal funcionamiento se lo hará mediante el uso del botón azul de usuario conectado al GPIO PA0 que sera configurado en modo EXTI.
In this video we will put the microcontroller from a normal state (Blinking LEDs) to Sleep mode, which is one of the states of low power consumption, to lift it up and restore its normal operation will be done by using the blue user button connected to the GPIO PA0 that will be configured in EXTI mode.
En este video pondremos al microcontrolador de un estado normal (Titilando Leds) al modo Stop que es uno de los estados de bajo consumo de energía, mas bajo consumo que el modo Sleep, se requiere mas tiempo para regresar a un estado normal ya que en este modo se configura también el reloj del sistema y no solo los GPIO, para levantarlo y restablecer su normal funcionamiento se lo hara mediante el uso del botón azul de usuario conectado al GPIO PA0 que sera configurado en modo EXTI.
In this video we will put the microcontroller from a normal state (Blinking LEDs) to Stop mode, which is one of the states of low energy consumption, lower consumption than Sleep mode, it takes more time to return to a normal state since in This mode also configures the system clock and not only the GPIO, to lift it up and restore its normal operation, it will be done by using the blue user button connected to the GPIO PA0 that will be configured in EXTI mode.
En este video pondremos al microcontrolador de un estado normal (Titilando Leds) al modo Standby que es uno de los estados de mas bajo consumo de energía, para levantarlo y restablecer su normal funcionamiento se lo hace solamente con el GPIO WKPP del botón azul de usuario conectado al GPIO PA0.
In this video we will put the microcontroller from a normal state (Blinking LEDs) to Standby mode, which is one of the states with the lowest power consumption, to lift it and restore its normal operation it is done only with the GPIO WKPP of the blue user button connected to GPIO PA0.
En este video generaremos números aleatorios de 32 bits con ayuda del periférico de hardware RNG (Random Numeric Generator), para ello nos ayudaremos del botón de ususario para que cada vez que se presione el botón se genere 10 números y se los guarde en un vector para poder apreciarlo.
In this video we will generate 32-bit random numbers with the help of the RNG hardware peripheral (Random Numeric Generator), for this we will use the user button so that each time the button is pressed, 10 numbers are generated and saved in a vector to be able to appreciate it.
En este video aprenderemos a configurar y usar el RTC (Reloj de Tiempo Real) de la tarjeta STM32F429 Discovery, por cuestiones didácticas usaremos el oscilador interno del microcontrolador, es poco preciso pero nos ayudará a entender su funcionamiento, para aplicaciones reales se recomienda usar un buen oscilador para RTC y colocar los capacitores adecuados para su correcto funcionamiento (Consultar datasheet para RTC).
In this video we will learn to configure and use the RTC (Real Time Clock) of the STM32F429 Discovery card, for didactic reasons we will use the internal oscillator of the microcontroller, it is not very precise but it will help us to understand its operation, for real applications it is recommended to use a good oscillator for RTC and place the appropriate capacitors for its correct operation (Consult datasheet for RTC).
En este video usaremos la opción de programar alarmas con el RTC, habilitar su interrupción para que nos avise que ha ocurrido un evento, podemos tener hasta 2 alarmas en este microcontrolador (STM32F429).
In this video we will use the option of programming alarms with the RTC, enabling its interruption to notify us that an event has occurred, we can have up to 2 alarms in this microcontroller (STM32F429).
En este video aprenderemos a usar los Backup Registers, los mismo que nos ayudaran a retener información de forma remanente mientras este con energía la bateria que se vaya a usar en nuestra aplicación.
In this video we will learn to use the Backup Registers, the same ones that will help us to retain information remotely while the battery that is going to be used in our application is energized.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.