Programas listos para usar para microcontroladores stm32. Estamos preparando un entorno de desarrollo "para adultos" para STM32 en Linux. hardware de desarrollo

Publicado el 10.08.2016

Para desarrollar nuestros programas, necesitamos un entorno de desarrollo, preferiblemente con un depurador y un compilador de C.

me detuve en Código de CooCox Y CCG. En primer lugar, este software no cuesta dinero y, en segundo lugar, no hubo preguntas con él. Instalado y comenzado a trabajar. Es cierto que CooCox está hecho solo para Windows. No es muy bueno. Y aunque en Ubuntu CooCox funciona bajo Wine e incluso la compilación es exitosa, hay un problema con el depurador. Y trabajar a través del vino no es el verdadero camino.

Instalar IDE CooCox CoIDE en Windows

  • Descarga e instala el programa CooCox(COIDE-1.7.8.exe)
    En el momento de escribir este artículo, estaba disponible la versión 2.0 Beta. Pero trato de no usar versiones beta, por lo que la versión 1.7.8 aparecerá en los ejemplos.
  • Descargar e instalar CCG(gcc-brazo-ninguno-eabi-5_3-2016q1-20160330-win32.exe)

primer programa

lanzamos CooCox.

Ejecutar el elemento del menú Proyecto -> Nuevo

Especifique el nombre del proyecto:

Elegir una ficha:


En el repositorio, seleccione qué módulos usaremos:


Nosotros abrimos C Principal y escriba el siguiente código de programa:

#include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" int main(void) ( int i; /* Inicializa los LED montados en la placa STM32 */ GPIO_InitTypeDef GPIO_InitStructure; /* Inicializa el LED que se conectó a PC13, Enable the Clock*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /* Configure the GPIO_LED pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed ​​​​= GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); while (1 ) ( /* Alternar LED que se conectó a PC13*/ GPIOC->ODR ^= GPIO_Pin_13; /* retraso */ for(i=0;i

Compilar ( Proyecto->Construir)

Al compilar por primera vez, el IDE puede pedirle que especifique la ubicación del compilador.

Es necesario indicar correctamente el lugar donde se instaló CCG.

Después de una compilación exitosa, cargue el programa en el microcontrolador. Este programa hará parpadear el LED en el tablero. Consideramos cómo cargar el programa en el microcontrolador.

Si carga el firmware a través de UART con un adaptador UART-USB, encontrará el archivo de carga en el directorio:
C:\CooCox\CoIDE\workspace\Example_GPIO\Example_GPIO\Debug\bin\Example_GPIO.bin

Si ha instalado Enlace ST programador, el programa se puede cargar en el microcontrolador directamente desde el IDE ( Flash -> Descarga del programa).

Si ocurre este error “ Error: error de ejecución de la función del controlador flash" Recomendado:

  1. Ejecute la utilidad STM32 ST-LINK y ejecutar actualización de firmware.
  2. Copie el archivo STLinkUSBDriver.dll de una carpeta
    C:\Archivos de programa\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility
    a una carpeta
    C:\CooCox\CoIDE\bin
    luego reinicie CooCox IDE

Algunas configuraciones de IDE y opciones del compilador

repositorio

Ejecutar el elemento del menú Ver -> Repositorio

Aquí seleccionamos las bibliotecas que se requieren para nuestro proyecto. Al mismo tiempo, el IDE copia a la carpeta stm_lib su proyecto los archivos necesarios.

Configuración del proyecto

Pestaña Compilar

Las claves del compilador se establecen en esta pestaña. Volveremos aquí de nuevo, pero por ahora prestemos atención al campo. Mejoramiento. Este campo especifica una opción de optimización para el compilador. Habrá una discusión por separado sobre la optimización, mientras que usted necesita aprender que la optimización Optimizar tamaño (-Os) minimiza la cantidad de programas compilados. Pero al mismo tiempo, el compilador puede desechar (optimizar) algunas operaciones, y el programa puede no funcionar como le gustaría. Por lo tanto, en las primeras etapas, no recomiendo usar este método de optimización. Instalar Optimizar (-O1).

Pestaña de enlace

En esta pestaña, por ahora, solo nos interesa el campo Biblioteca Y Bibliotecas vinculadas. Si usa las bibliotecas estándar de C, como la biblioteca de matemáticas matemáticas Deberá seleccionar " Usar biblioteca base C“. Si esto no se hace, el compilador generará un error.

Pestaña Salida

Especifica dónde colocar los archivos compilados y en qué formatos.

Pestaña de usuario

Hasta entonces, no haremos nada.

Pestaña Depurador

Los parámetros del depurador se establecen en esta pestaña. Ya que estaremos usando Enlace ST, no tienes que cambiar nada aquí.

Marcador Descargar

Aquí se establecen los parámetros para cargar el programa en el microcontrolador. No necesitamos cambiar nada aquí tampoco.

depurador

Por supuesto, puede cargar el programa en el microcontrolador y ver cómo funciona. Pero a veces surgen problemas y esto no es suficiente. Me gustaría entender cómo funciona el programa escrito. CooCox CoIDE tiene un depurador incorporado, que es muy útil en la etapa de aprendizaje del microcontrolador. Además, el depurador te ayudará a encontrar errores en proyectos complejos. CooCox CoIDE ya está configurado para funcionar con ST-Link y no es necesario realizar configuraciones adicionales. Basta con ejecutar el menú del depurador (Depurar -> Depurar). En este caso, el programador debe estar conectado a la computadora y el microcontrolador al programador. Cuando se lanza el depurador, se compila el proyecto, se carga el programa en el microcontrolador y se realiza su ejecución paso a paso.

Tienes los siguientes botones para controlar el depurador.

Experimenta con ellos para entender cómo funcionan.

marcado Variables se puede observar el valor de las variables.

También puede pasar el cursor sobre una variable y ver su valor en la información sobre herramientas.

Si está configurado Punto de ruptura(menú Depurar -> Alternar punto de interrupción) a las líneas necesarias en el código, durante la ejecución del programa, el depurador se detendrá en los puntos de interrupción establecidos.


Ahora, después del primer contacto con el IDE, puede pasar directamente a estudiar el microcontrolador STM32F103 y escribir sus programas.

¡Doy la bienvenida a todos los amantes de la programación, los microcontroladores y la electrónica en general en nuestro sitio web! En este artículo, hablaré un poco sobre lo que haremos aquí, es decir, el curso de capacitación sobre microcontroladores ARM.

Entonces, primero, averigüemos lo que necesita saber y poder comenzar a aprender ARM. Y, en principio, nada súper complicado y encantador 😉 Por supuesto, la gente suele cambiarse a los controladores ARM después de jugar lo suficiente con PIC y AVR, es decir, la mayoría de ellos son desarrolladores experimentados. Pero intentaré describir todo lo que analizaremos de la manera más detallada y comprensible, para que aquellos que primero decidieron intentar programar microcontroladores puedan entender fácilmente el material. Por cierto, si tiene alguna pregunta, o simplemente algo no funciona según lo previsto, escriba en los comentarios, intentaré resolverlo y ayudar.

Ahora pasemos a las cuestiones técnicas) Varias veces ya he mencionado el nombre "Curso de capacitación ARM", pero, en general, esto no es del todo cierto. No existe tal cosa como un microcontrolador ARM. Hay un controlador con un núcleo (!) ARM, y esto, como ves, todavía no es lo mismo. Por lo tanto, dichos dispositivos son producidos por varias empresas, entre las que se destacan STMicroelectronics y NXP Semiconductors. En consecuencia, lanzan controladores STM y LPC. Opté por STM32, simplemente me gustaron más =) STM es muy cautivador que habiendo tratado con cualquier MK de la línea STM32F10x, no habrá problemas con ningún otro. Una regla, una hoja de datos. Por cierto, hay una gran cantidad de placas de depuración costosas y no muy costosas con controladores STM32, lo cual es muy agradable, aunque al principio depuraremos nuestros programas en el simulador para evaluar las capacidades del controlador antes de comprar hardware. . Aquí, por si acaso, está el sitio web oficial de STMicroelectronics -.

De alguna manera, dejamos sin problemas el tema del compilador, por lo que diré algunas palabras al respecto. Sin pensarlo dos veces, elegí Keil, sobre todo por el poderoso simulador incorporado. Puede mirar el UART allí, y en cualquier registro, e incluso hay disponible un analizador lógico. En una palabra, Keil me dejó en su mayoría solo impresiones agradables, aunque también hay desventajas, por supuesto, pero no catastróficas. Entonces puede descargar Keil uvision4 de manera segura desde apagado. sitio(). Es cierto, hay uno PERO: el IDE se paga, pero hay un modo de demostración disponible con un límite de código de 32kB, que es más que suficiente para nosotros hasta ahora. Para quien esto no es suficiente, hay una gran cantidad de grietas para Keil 😉 Todo se instala sin problemas: empujamos más un par de veces y todo está perfectamente configurado y funciona sin bailes adicionales con una pandereta.

En realidad, eso es todo lo que quería contar aquí, es hora de pasar de las palabras a los hechos, pero esto ya está en el próximo artículo. ¡Aprendamos a programar microcontroladores STM32 desde cero!

Una de las razones de la popularidad de los microcontroladores STM32 producción STMicroelectrónica- una variedad de herramientas de desarrollo y depuración. Esto se aplica tanto al hardware como al software. Es posible crear y depurar software residente para STM32 sin costes de material utilizando el kit programas gratis. El artículo proporciona una descripción general de las herramientas de desarrollo de software libre más importantes: Buscador de microcontroladores ST, STM32CubeMX, SW4STM32, STM32 Studio.

Compañía STMicroelectrónica(ST) es el mayor fabricante de microcontroladores del mundo, siendo la mayor parte las familias STM32. Al desarrollar nuevas líneas de controladores, STMicroelectronics persigue varios objetivos estratégicos:

  • aumento de la productividad;
  • aumentando el nivel de integración: aumentando la cantidad de memoria, ampliando la lista de periféricos;
  • consumo reducido;
  • reducción de costo.

Es obvio para cualquier ingeniero que estos objetivos muy a menudo resultan ser mutuamente excluyentes. Por esta razón, STMicroelectronics lanza familias y líneas de microcontroladores con énfasis en una u otra de las propiedades anteriores. Actualmente, la nomenclatura incluye diez familias, cada una de las cuales tiene sus propias ventajas y ocupa un determinado nicho en el mercado (Figura 1).

Demos una breve descripción de las familias de microcontroladores STM32 de ST.

Microcontroladores de bajo consumo de las familias STM32L. Este grupo reúne familias enfocadas principalmente en lograr un nivel mínimo de consumo. Para ello, se utilizan varios métodos: control dinámico de la tensión de alimentación, un sistema de reloj flexible, periféricos especializados (LP-Timer, LP-UART), un sistema desarrollado de modos de bajo consumo, etc.

Familias básicas STM32F0, STM32F1, STM32F3. Este grupo incluye familias con características equilibradas y un valor de compromiso de rendimiento/consumo/precio.

A su vez, los paquetes individuales de STMCube incluyen:

  • bibliotecas HAL independientes del hardware para trabajar con hardware de microcontroladores;
  • bibliotecas de nivel intermedio. Por ejemplo, como parte del paquete de software más avanzado STM32CuboF7 incluye las siguientes bibliotecas y pilas: CMSIS-RTOS basado en FreeRTOS, pila TCP/IP basada en LwIP, sistema de archivos FAT basado en FatFs con compatibilidad con NAND Flash, StemWin: pila de gráficos basada en SEGGER emWin, pila USB completa (host y dispositivo). Para varias familias, la biblioteca táctil para aplicaciones táctiles está disponible;
  • ejemplos y plantillas de proyectos para varios entornos y kits de depuración (Discovery, Nucleo, Evaluation Boards).

Para comprender cómo se produce la interacción entre los componentes de la plataforma de software STM32Cube, debe consultar el ejemplo que se muestra en la Figura 9. En este ejemplo, el usuario configura el microcontrolador utilizando STM32CubeMX. Después del final de la configuración visual (salidas, sincronización, etc.), STM32CubeMX genera un código C, para esto se utilizan bibliotecas del paquete de software STM32CubeF4. Como resultado, el usuario recibe un proyecto C completo, generado para un entorno de desarrollo integrado específico: IAR™ EWARM, Keil™MDK-ARM, Atollic® TrueSTUDIO y AC6 System Workbench (SW4STM32). Este proyecto ya incluye todas las bibliotecas y archivos necesarios.

El programa STM32CubeMX simplifica enormemente el trabajo de los programadores, pero sus posibilidades no son ilimitadas. Antes de continuar, vale la pena señalar las limitaciones existentes:

  • el código C generado cubre solo la configuración de bloques y periféricos del microcontrolador. Esto significa que la parte algorítmica del programa no se puede generar automáticamente, deberá agregarse manualmente;
  • STM32CubeMX lo ayudará a crear solo una configuración inicial. A veces, durante la operación, el usuario necesita cambiar la frecuencia de la unidad periférica o cambiar la configuración de salida. Todo ello deberá registrarse de forma independiente;
  • para generar código, se utilizan bibliotecas estándar desarrolladas por ST en el nivel inferior (HAL y LL) y en el nivel intermedio, por ejemplo, StemWin o STM32_USB_Device_Library;
  • durante el proceso de generación, el archivo C se construye de tal manera que se asignan secciones especiales para el usuario en las que puede colocar su código. Si el código de usuario está fuera de estos límites, se sobrescribirá durante las próximas generaciones;
  • existen otras limitaciones para bloques individuales, para más información sobre las cuales debe consultar el manual STM32CubeMX.

Ahora que se han descrito la composición, el principio de funcionamiento y las limitaciones de STM32CubeMX, podemos dar un ejemplo de trabajo con este programa, crear un "esqueleto" de un proyecto simple y demostrar el funcionamiento de las utilidades individuales.

Construyendo un programa simple con STM32CubeMX

Echemos un vistazo más de cerca a la creación de un esqueleto de proyecto en el entorno STM32CubeMX. Primero debe descargar el propio entorno STM32CubeMX. Esto se puede hacer de forma totalmente gratuita desde el sitio web de ST. Después de la instalación, tanto el propio STM32CubeMX como las carpetas con las bibliotecas STM32Cube se colocarán en el disco del usuario.

El proceso de creación de un esqueleto de proyecto se lleva a cabo en pasos.

Paso uno. Descarga de las últimas versiones de bibliotecas utilizando una utilidad especial. Para hacer esto, primero debe configurar los ajustes de red (Ayuda → Configuración del actualizador) y luego iniciar la actualización automática (Ayuda → Buscar actualizaciones). Si la PC no está conectada a la red, deberá actualizar las bibliotecas manualmente.

Segundo paso. Después de iniciar STM32CubeMX en la pantalla de inicio o en el menú "Archivo", debe crear un nuevo proyecto haciendo clic en "Nuevo proyecto". A continuación, STM32CubeMX le pedirá que seleccione la plataforma de destino: un controlador con los parámetros especificados o una placa de depuración. Como ejemplo, la Figura 10 muestra cómo la búsqueda integrada recogió una lista de controladores por parámetros: familia STM32F4, paquete TQFP100, tamaño de Flash de al menos 592 kb, RAM de más de 214 kb.

Paso tres. En el tercer paso, el diseñador deberá determinar la asignación de pines mediante el asistente de pines (Figura 11). Esta utilidad ayuda a crear la configuración necesaria y comprobar si hay errores. Vale la pena señalar un conveniente sistema de retroiluminación, por ejemplo, las salidas del sistema están pintadas en amarillo pálido.

Paso cuatro. El sistema de reloj se configura mediante la pestaña Configuración de reloj (utilidad Asistente de reloj). En este caso, el usuario trabaja con un árbol de reloj visualizado (Figura 12). Con la ayuda de Clock Wizard, es posible seleccionar la fuente de la señal de reloj del sistema, los valores de los determinantes y multiplicadores, así como las fuentes de reloj de las unidades periféricas con unos pocos clics del mouse. Al escribir código a mano, esto requeriría mucho esfuerzo.

Paso cinco. La creación de código C comienza con la elección del marco de destino en la configuración del proyecto (Proyecto → Configuración). Actualmente, se ofrece al usuario: IAR™ EWARM, Keil™MDK-ARM, Atollic® TrueSTUDIO y AC6 System Workbench (SW4STM32) (Figura 13). A continuación, en la pestaña Generador de código, debe determinar la composición de las bibliotecas copiadas en el directorio del proyecto, la configuración para procesar el código personalizado durante la regeneración (por ejemplo, guardar o eliminar) y la configuración para usar HAL (Figura 13).

Para configuraciones más detalladas del generador, vaya a la pestaña Configuración avanzada (Figura 14). La característica principal del generador C en STM32CubeMX es la capacidad de usar controladores HAL y LL. En este punto, debemos detenernos en más detalles.

HAL es un conjunto de controladores abstractos que proporcionan la máxima multiplataforma entre los controladores STM32. Al mismo tiempo, algunos controladores son absolutamente universales (adecuados para todos los controladores STM32), y algunos son aplicables solo a líneas individuales con las unidades periféricas correspondientes (por ejemplo, unidades de cifrado). Las principales ventajas de HAL son:

  • máxima multiplataforma;
  • orientación funcional. Estos controladores no están enfocados en trabajar con bloques de controladores individuales, sino en realizar tareas específicas. Esto hace posible trabajar no con registros, sino con funciones significativas;
  • no se requiere un conocimiento profundo de la arquitectura del microcontrolador.

Al mismo tiempo, HAL también tiene desventajas: una cantidad significativa de código, una optimización insuficiente de la ejecución de tareas y un rendimiento relativamente bajo. Si estas deficiencias son críticas, se deben usar controladores LL.

Las API de capa baja (LL) son controladores dependientes del hardware que le permiten trabajar directamente con los periféricos del controlador, incluido el uso de funciones en línea y el acceso atómico a los registros. Este enfoque no requiere costos de memoria significativos, las funciones son lo más breves posible y eficientes en velocidad. Las desventajas obvias de los controladores LL son la disminución de la compatibilidad del código al pasar de un controlador a otro y la necesidad de un conocimiento profundo de la arquitectura del controlador.

Dentro del mismo proyecto en STM32CubeMX, puede usar HAL y LL simultáneamente, pero para diferentes unidades periféricas. Por ejemplo, la Figura 15 muestra la configuración del oscilador C, en el que se utilizan controladores LL para UART/TIM/RTC y HAL para otros bloques.

Paso seis. Después de configurar el proyecto, debe realizar la generación de código yendo al menú Proyecto → Generar código. Como resultado, se generará un esqueleto de proyecto para el entorno de desarrollo dado en el directorio de proyecto especificado.

A veces se hace necesario migrar un proyecto de una plataforma a otra. Con STM32CubeMX, esto se puede hacer en un tiempo mínimo.

Migración de proyectos con STM32CubeMX

Para migrar un proyecto de una plataforma a otra, use la utilidad adicional Archivo → Importar proyecto (Figura 15). Requiere que especifique el tipo de microcontrolador nuevo y el modo de migración. Después de eso, el programa genera automáticamente un nuevo código o, en presencia de una compatibilidad incompleta de los núcleos, indica las dificultades que han surgido, incitando al usuario a eliminarlas.

Las incompatibilidades encontradas durante la migración pueden ser reparables o irrecuperables. Un caso irrecuperable ocurre cuando la composición de los periféricos de los controladores es significativamente diferente. Por ejemplo, anteriormente se usaba un módulo Ethernet, que no está disponible en el nuevo MK (Figura 15). Obviamente, en este caso, la migración es imposible.

Pero a menudo la incompatibilidad es de naturaleza local, cuando, por ejemplo, solo necesita reconfigurar los parámetros del árbol del reloj para que coincidan con las frecuencias operativas, o cambiar el número de canal ADC o DMA, etc. (Figura 16). En tales casos, STM32CubeMX ofrecerá realizar la migración en modo manual, eliminando las dificultades que han surgido al editar el proyecto en las utilidades comentadas anteriormente. En este caso, el STM32CubeMX le indicará al usuario la presencia de problemas antes de que se solucionen.

Después de recibir el esqueleto final del proyecto, queda agregar la parte algorítmica del usuario del código, compilar y depurar. Para ello se utilizan entornos especializados. El entorno SW4STM32 para STM32 producido por AC6 le permite hacer esto absolutamente gratis.

Banco de trabajo del sistema AC6: IDE gratuito para STM32

Los entornos IDE integrados especiales están diseñados para editar, compilar y depurar programas. La mayoría de ellos son productos comerciales (IAR™ EWARM, Keil™MDK-ARM, Atollic® TrueSTUDIO y otros), pero también hay herramientas gratuitas como System Workbench de AC6. Dentro del sistema de nombres de STMicroelectronics, este IDE se llama SW4STM32.

El entorno integrado SW4STM32 está diseñado para funcionar con microcontroladores STM32. Está basado en la plataforma Eclipse y es gratuito y multiplataforma. Sus principales ventajas son:

  • soporte para trabajar con microcontroladores STM32, kits de depuración de hardware (placas STM32 Nucleo, Discovery y Evaluation), con bibliotecas de software (biblioteca de periféricos estándar y STM32Cube HAL);
  • sin restricciones en la cantidad de código de programa;
  • compilador GCC C/C++ gratuito;
  • depurador gratuito GDB (proyecto GNU);
  • plataforma abierta Eclipse IDE con soporte para desarrollo grupal de software embebido con sistema de control de versiones SVN/GIT;
  • compatibilidad con complementos de Eclipse;
  • soporte ST-LINK;
  • multiplataforma y compatible con Windows®, Linux y OS X®.

Con SW4STM32 puede editar, compilar y depurar programas para STM32. Para ello es conveniente utilizar esqueletos de programas creados en STM32CubeMX. Para importarlos, debe realizar las operaciones más simples: seleccione el menú Archivo -> Importar, establezca el tipo de importación en "Proyectos existentes en el espacio de trabajo", especifique el directorio del proyecto, seleccione el proyecto en sí y haga clic en Finalizar.

Cuando trabaje con proyectos creados en STM32CubeMX, debe colocar el código de usuario en secciones especiales:

/*COMIENZO DEL CÓDIGO DE USUARIO…*/

/*CÓDIGO DE USUARIO FIN…*/

Esto debe hacerse para que cuando se regenere el código en el STM32CubeMX, no se sobrescriba la parte manuscrita del programa. La regeneración es necesaria en dos casos:

  • al reconfigurar el MK usado;
  • al migrar de un MC a otro.

Así, al trabajar en conjunto con STM32CubeMX + SW4STM32, el usuario puede en cualquier momento reconfigurar el controlador y migrar manteniendo el código de usuario con un tiempo mínimo.

Al depurar programas en SW4STM32, está disponible la posibilidad de un monitoreo extenso del estado de la memoria, registros y variables. Además, el entorno tiene soporte para puntos de interrupción (Figura 17). Para iniciar el proceso de depuración, debe hacer clic en el icono "Depurar" (en forma de escarabajo), seleccionar el tipo de proyecto "Aplicación Ac6 STM32 C / C ++", definir el tipo de depurador e interfaz, hacer clic en " botón Aceptar”.

SW4STM32 tiene soporte para sistemas de control de versiones SVN/GIT. Esto es importante para proyectos grandes con múltiples desarrolladores trabajando en ellos. El sistema de control de versiones le permite: registrar todos los cambios realizados en el proyecto; comparar versiones de proyectos; restaurar versiones anteriores; resolver conflictos cuando varios programadores trabajan en el mismo archivo; mantener varias versiones en paralelo, y así sucesivamente.

En el marco de este artículo, no tiene sentido profundizar en el análisis de las sutilezas y diferencias entre SVN y GIT. Digamos que GIT, al ser un sistema distribuido, permite a los programadores trabajar localmente, teniendo un repositorio de proyectos completo en la máquina de trabajo. Al mismo tiempo, GIT conserva los metadatos de los cambios, lo que facilita la combinación de versiones y el cambio entre versiones. SVN requiere una conexión de red entre los desarrolladores y guarda archivos completos. SW4STM32 brinda soporte para SVN y GIT.

Considere la secuencia de acciones al conectar un proyecto a SVN (Figura 18).

  • en un proyecto abierto, haga clic derecho en su nombre en el panel de directorio y vaya a Equipo → Compartir proyecto(s) (Figura 18a);
  • seleccione el tipo de sistema SVN/GIT y haga clic en “Siguiente” (Figura 18b);
  • seleccione un directorio para SVN y haga clic en "Siguiente" (Figura 18c);
  • seleccione el directorio de almacenamiento del proyecto en SVN, haga clic en "Finalizar" (Figura 18d);
  • en la pestaña "General" (Figura 18e), seleccione la URL SVN, la etiqueta para el repositorio, el nombre de usuario, la contraseña, haga clic en "Siguiente";
  • ingrese un comentario para el proyecto, seleccione un archivo para colocarlo bajo el control de SVN, haga clic en "Aceptar" (Figura 18e).

En el futuro, para sincronizar un archivo o todo el proyecto, haga clic derecho en su nombre en el panel de directorio y seleccione Equipo → Confirmar. En la ventana que se abre, escriba una explicación de los cambios y haga clic en "Aceptar".

Para deshabilitar SVN, use el comando Equipo → Desconectar.

Para importar un proyecto desde SVN, use el comando de menú Importar → SVN → Proyecto desde SVN. A continuación, debe realizar una serie de ajustes de importación en los cuadros de diálogo emergentes.

SW4STM32 tiene características muy amplias, pero el entorno también tiene desventajas que son bastante típicas de los entornos libres:

  • sin simulador incorporado;
  • el compilador GCC pierde frente a sus contrapartes comerciales en términos de tamaño de código y velocidad;
  • El soporte para SW4STM32 por parte de los desarrolladores no será tan rápido como en el caso de entornos pagos.

Sin embargo, vale la pena señalar que estas deficiencias pueden no ser tan críticas, especialmente para proyectos simples.

La depuración de código se puede realizar no solo en SW4STM32, sino también con la ayuda de herramientas adicionales. Consideremos algunos de ellos.

STMStudio: una manera fácil de depurar aplicaciones en STM32

Estudio STM es una utilidad patentada producida por STMicroelectronics, que ayuda a depurar un programa y le permite rastrear los valores de las variables del usuario al ejecutar el código en tiempo real. Este programa se ejecuta bajo el sistema operativo Windows y utiliza el depurador ST-LINK para comunicarse con el microcontrolador.

STM Studio tiene las siguientes características:

  • leer variables de la RAM "sobre la marcha", sin afectar el funcionamiento del programa de usuario;
  • usando archivos ejecutivos .elf, .out, .axf para importar variables;
  • salida de valores variables en forma tabular y gráfica;
  • salida gráfica en forma de gráficos o diagramas;
  • la capacidad de mostrar dependencias de variables, cuando una de las variables se traza a lo largo del eje X y la segunda, a lo largo del eje Y;
  • registrar datos en un archivo para verlos más tarde.

La ventana de STM Studio consta de varios paneles (Figura 19).

Trabajar con STM Studio comienza con la importación de variables. Para hacer esto, debe cargar el mismo archivo ejecutable que se encuentra en el microcontrolador en el programa. Los siguientes formatos que se generan durante la compilación son adecuados para esto: .elf, .out, .axf. A continuación, debe ejecutar el comando Archivo → Importar variables. En el cuadro de diálogo, al seleccionar el elemento "Expandir elementos de la tabla", el usuario podrá seleccionar manualmente cualquier variable global de la tabla propuesta. Para comenzar la depuración, debe ejecutar el comando "Ejecutar".

Como se mencionó anteriormente, STM Studio le permite mostrar variables en tres formas: en forma de texto, tablas y gráficos (Figura 20). La configuración del tipo de pantalla se puede cambiar en cualquier momento. Además, todos los datos se registran adicionalmente en un archivo de registro para su posterior análisis. Una característica interesante de STM Studio es la capacidad de mostrar las dependencias de algunas variables sobre otras, así como generar expresiones a partir de variables.

Un medio popular de pasar información de depuración es usar la consola y la función de salida printf().

Implementando la salida del terminal printf() a través de USART

El uso de la función estándar printf() es uno de los métodos de salida de depuración más populares. Con esta función de salida, el usuario puede transferir cualquier dato a la consola o terminal del entorno de desarrollo. La mayoría de los marcos admiten esta característica. Al usar STM32, hay dos formas de implementar este método: tradicional, usando UART y adicional, a través de la interfaz SWO usando el depurador ST-LINK. La implementación de cada uno de ellos se simplifica al máximo cuando se utilizan STM32CubeMX y SW4STM32.

Considere primero la primera opción de implementación: a través de UART. Para hacer esto, deberá realizar la siguiente secuencia de acciones:

  • proporcionar una conexión de hardware a una PC;
  • configurar la UART en el entorno STM32CubeMX;
  • implementar la función printf() en el entorno SW4STM32.

Hay tres formas de conectarse a una PC: a través de un puerto COM y un chip transceptor RS-232; a través de un puerto USB y un chip convertidor UART-USB (por ejemplo, FT232); utilizando la interfaz USB del depurador ST-LINK. Independientemente del método elegido, el siguiente paso es configurar el hardware UART.

Con la ayuda de STM32CubeMX, la configuración de UART se realiza con unos pocos clics (Figura 21). Primero, en la pestaña Pin Wizard, los pines del controlador correspondientes se cambian al modo UART. Además, en la pestaña "Configuración", se configuran los parámetros de UART: tipo de intercambio, velocidad, presencia de bits de parada, etc. Después de eso, se genera el código C.

En el entorno SW4STM32, debe incluir la biblioteca estándar y definir las funciones _io_putchar() y _write(), por ejemplo, así:

/*CÓDIGO DE USUARIO INICIO Incluye*/

#incluir

/*CÓDIGO DE USUARIO FIN Incluye*/

/*CÓDIGO DE USUARIO EMPIEZA 1*/

int __io_putchar(pulgar)

c = canal y 0x00FF;

HAL_UART_Transmit(&huart2,&*c,1,10);

int _write(int archivo, char *ptr, int len)

para (DataIdx = 0; DataIdx< len; DataIdx++)

Las ventajas de este enfoque para la transferencia de información de depuración se pueden considerar:

  • utilizando la interfaz UART, que está presente en todos los microcontroladores STM32 sin excepción;
  • facilidad de configuración y familiaridad para los programadores. Puede utilizar desarrollos antiguos de proyectos con otros controladores;
  • sin hardware complejo (excepto puente UART-USB o transceptor RS-232);
  • sin software complejo. Se trabaja con todos los programas IDE o terminales.

Sin embargo, este método también tiene desventajas. Primero, debe sacrificar el canal UART para la depuración. Y en segundo lugar, dicha implementación afecta el funcionamiento del controlador, ya que ocupa el núcleo para procesar el código de la función printf (). En el caso de STM32, existe una forma más especializada y, lo que es más importante, simple que no consume recursos del microcontrolador: usar un paquete de SWO y ST-LINK.

Implementando la salida del terminal printf() a través de SWO

Cuando se usa un montón de SWO y ST-LINK, crear E/S de terminal es aún más fácil que en el método anterior con un UART de hardware. En este caso, la comunicación con un PC se realiza a través de la interfaz SWO y la interfaz USB utilizada en ST-LINK. La secuencia de acciones sigue siendo aproximadamente la misma que en el caso anterior.

Primero, usando el STM32CubeMX, los pines de la interfaz SWO se configuran en las pestañas "Asistente de pines" y "Configuración" (Figura 22). Después de eso, se regenera el código para el entorno de desarrollo.

El siguiente paso es escribir el código del controlador __io_putchar(int ch) así:

/*CÓDIGO DE USUARIO EMPIEZA 1*/

int __io_putchar(pulgar)

ITM_SendChar(canal);

/*CÓDIGO DE USUARIO FIN 1*/

Para la depuración, es conveniente utilizar la Utilidad STLink (Figura 23).

Ventajas del método:

  • no requiere recursos adicionales y no ocupa interfaces de comunicación;
  • funciona en paralelo con el programa principal y no afecta la velocidad de su ejecución, ya que no utiliza el núcleo para los cálculos;
  • una opción ideal para kits de depuración con ST-LINK a bordo, ya que representa una solución llave en mano.

Entre las desventajas de este método de implementación, se puede señalar la dependencia del hardware, ya que se requiere la presencia de ST-LINK.

Conclusión

STMicroelectronics produce más de setecientos modelos de microcontroladores STM32, que difieren en rendimiento/consumo/precio/nivel de integración. Cada usuario podrá elegir el modelo óptimo para sí mismo, teniendo en cuenta los requisitos de una aplicación en particular.

Una ventaja importante de STM32 es la presencia de un sistema desarrollado de herramientas de depuración. A los desarrolladores se les ofrecen más de cien placas de depuración (Nucleo, Discovery, Evaluation Boards). Una ayuda aún mayor para los programadores será la disponibilidad de un conjunto completo de software de aplicación gratuito para crear, compilar y depurar el código del programa:

ST MCU Finder: una aplicación para teléfonos inteligentes que lo ayuda a elegir el mejor MK para una aplicación en particular;

STM32CubeMX es un editor gráfico multiplataforma para configurar microcontroladores STM32 y generación automática de código. El STM32CubeMX también puede ayudarlo a seleccionar el microcontrolador óptimo, estimar el consumo de energía y simplificar la migración de proyectos entre diferentes MCU.

SW4STM32 es un entorno de desarrollo de software integrado multiplataforma para microcontroladores STM32.

STM32 Studio es una utilidad para el seguimiento y visualización gráfica de valores de variables mientras se ejecuta código en tiempo real.

La utilidad ST-LINK permite, junto con el programador ST-Link, ingresar y generar información de depuración a través de la interfaz SWO.

Este conjunto de software le permite completar el ciclo completo de desarrollo de software residente sin gastar un solo rublo.

Literatura

  1. resumen de datos NÚCLEO-XXXXKX. Placa STM32 Nucleo-32. Rev. 3. ST Microelectrónica, 2016.
  2. resumen de datos NUCLEO-XXXXRX. Placa STM32 Nucleo-64. Rev. 8. ST Microelectrónica, 2016.
  3. resumen de datos NÚCLEO-XXXXZX. Placa STM32 Nucleo-144. Rev. 5. ST Microelectrónica, 2017.
  4. UM1718. manual de usuario. STM32CubeMX para la generación de código C de configuración e inicialización de STM32. Rev 18. ST Microelectrónica, 2017.
  5. UM1884. manual de usuario. Descripción de STM32L4 HAL y controladores de capa baja. Rev. 5. ST Microelectrónica, 2016.
  6. UM1025. manual de usuario. Primeros pasos con STM-STUDIO. Rev6. ST Microelectrónica, 2013.
  7. UM0892. Manual del usuario Descripción del software de utilidad STM32 ST-LINK. Rev. 22. ST Microelectrónica, 2016.

Selección de microcontrolador STM32 de la empresa STMicroelectrónica, uno de los líderes en el campo de la fabricación de semiconductores y que ofrece soluciones para todo el espectro de aplicaciones electrónicas, es la forma más fácil para que los innovadores lancen nuevos productos. Los desarrolladores de hoy tienen una amplia variedad de IDE gratuitos para elegir ( IDE) para microcontroladores STM32.

Usuarios STM32 puede elegir entre tres IDE de los principales fabricantes, que son gratuitos y creados en estrecha colaboración con STMicroelectrónica. Se pueden considerar alternativas entre Eclipse entornos de desarrollo como Código de CooCox o Banco de trabajo del sistema Ac6 Para STM32, así como el medio ambiente Keil MDK-BRAZO. No tienen restricciones en el tamaño del código, todo lo necesario para STM32 archivos de configuración y firmware, así como hardware intuitivo como placas STM32Núcleo o equipos Kit de descubrimiento utilizado para la depuración y el diseño.

Banco de trabajo del sistema Ac6 Para STM32 Y IDE de CooCox admite todos los dispositivos STM32, que se basan en los núcleos BRAZO Cotex-M0, M0+, M3 Y M4. ambiente libre Keil MDK-BRAZO Para STM32 ayuda a pasar de la arquitectura heredada de 8 bits al desarrollo de 32 bits Corteza, serie de apoyo STM32F0 Y STM32L0, incluido Corteza-M0 Y M0+ sin ninguna restricción.

Los tres entornos de desarrollo pueden ejecutarse en plataformas. ventanas. Se afirma que Banco de trabajo del sistema Ac6 en 2015 estará disponible para OS linux Y Mac OS X. Fabricantes IDE brindar soporte técnico y actualizaciones continuas a los usuarios.

Estas herramientas se pueden descargar de forma absolutamente gratuita desde los sitios web de los fabricantes:

Resultados de la Encuesta entre los desarrolladores STM32:

Como se puede ver en los resultados de la encuesta, la mayoría de las veces los desarrolladores usan Keil MDK-ARM, que en la versión gratuita tiene un límite de longitud de código de 32 kilobytes para series de microcontroladores superiores a STM32F0 Y STM32L0. PAG completamente libre CODIGO empresa china CooCox ocupa un honroso segundo lugar en este ranking.

Para Mac OS X, y este es exactamente el sistema operativo en el que trabajo principalmente , Traté de instalar un montón de editor de código Eclipse+ compilador BRAZO GCC + OpenOCD para firmware y depuración. Después de pasar unos días, pero aún sin entender cómo trabajar con el depurador OpenOCD, decidí probar una opción más simple e hice mi elección a favor de código, aunque la versión es solo para ventanas Me tomó mucho tiempo tomar esta decisión. Por el momento, llevaré a cabo y describiré mis experimentos usando este particular IDE. Quizá un poco más tarde vuelva al grupo otra vez. Eclipse + BRAZO GCC + openocd, O esperar a que salga la versión Banco de trabajo del sistema Ac6 Para Mac OS X y pruébalo .

¿Cómo calificas esta publicación?

En los últimos años, los microcontroladores (MC) de 32 bits basados ​​en procesadores ARM están conquistando rápidamente el mundo de la electrónica. Este avance se debe a su alto rendimiento, arquitectura perfecta, bajo consumo de energía, bajo costo y herramientas de programación avanzadas.

CUENTO
El nombre ARM es un acrónimo de Advanced RISC Machines, donde RISC significa Arquitectura de computadora con conjunto de instrucciones reducido. La gran mayoría de los MK populares, y un ejemplo de las familias PIC y AVR, también cuentan con la arquitectura RISC, lo que permitió aumentar el rendimiento al simplificar la decodificación de instrucciones y acelerar su ejecución. La aparición de microcontroladores ARM de 32 bits avanzados y productivos le permite pasar a resolver tareas más complejas que los microcontroladores de 8 y 16 bits ya no pueden hacer frente. La arquitectura del microprocesador ARM con núcleo de 32 bits y conjunto de instrucciones RISC fue desarrollada por la empresa británica ARM Ltd, que se dedica exclusivamente al desarrollo de kernels, compiladores y herramientas de depuración. La empresa no produce MK, pero vende licencias para su producción. MK ARM es uno de los segmentos de más rápido crecimiento del mercado MK. Estos dispositivos utilizan tecnologías de ahorro de energía, por lo que se utilizan ampliamente en sistemas integrados y dominan el mercado de dispositivos móviles, para el cual el bajo consumo de energía es importante. Además, los microcontroladores ARM se utilizan activamente en dispositivos de comunicaciones, portátiles e integrados donde se requiere un alto rendimiento. Una característica de la arquitectura ARM es el núcleo informático del procesador, que no está equipado con ningún elemento adicional. Cada desarrollador de procesadores debe equipar este núcleo de forma independiente con los bloques necesarios para sus tareas específicas. Este enfoque ha demostrado ser bueno para los grandes fabricantes de chips, aunque inicialmente se centró en las soluciones de procesadores clásicos. Los procesadores ARM ya han pasado por varias etapas de desarrollo y son bien conocidos por las familias ARM7, ARM9, ARM11 y Cortex. Este último se divide en subfamilias de procesadores CortexA clásicos, procesadores en tiempo real CortexR y núcleos de microprocesador CortexM. Fueron los núcleos CortexM los que se convirtieron en la base para el desarrollo de una gran clase de MCU de 32 bits. Se diferencian de otras variantes de la arquitectura Cortex principalmente en el uso del conjunto de instrucciones Thumb2 de 16 bits. Este conjunto combinó el rendimiento y la compacidad de las instrucciones ARM y Thumb "clásicas" y fue desarrollado específicamente para trabajar con lenguajes C y C ++, lo que mejora significativamente la calidad del código. Una gran ventaja de los MC basados ​​en el núcleo CortexM es su compatibilidad de software, que teóricamente permite usar el código del programa en un lenguaje de alto nivel en modelos de diferentes fabricantes. Además de indicar el alcance del núcleo, los desarrolladores de MK indican el rendimiento del núcleo CortexM en una escala de diez puntos. Hasta la fecha, las opciones más populares son CortexM3 y CortexM4. Los MC de arquitectura ARM son fabricados por empresas como Analog Devices, Atmel, Xilinx, Altera, Cirrus Logic, Intel, Marvell, NXP, STMicroelectronics, Samsung, LG, MediaTek, MStar, Qualcomm, SonyEricsson, Texas Instruments, nVidia, Freescale, Milandr, HiSilicon y otros.
Gracias a la arquitectura optimizada, el costo de las MCU basadas en el núcleo CortexM es, en algunos casos, incluso más bajo que el de muchos dispositivos de 8 bits. Los modelos "más jóvenes" se pueden comprar actualmente por 30 rublos. para el cuerpo, lo que crea competencia para las generaciones anteriores de MK. MICROCONTROLADORES STM32 Considere el MK más asequible y extendido de la familia STM32F100 de STMicroelectronics, que es uno de los principales fabricantes mundiales de MK. La compañía anunció recientemente el inicio de la producción de un MK de 32 bits, aprovechando la industria
Núcleos STM32 en aplicaciones de bajo costo. Los MCU de línea de valor STM32F100 están diseñados para dispositivos en los que el rendimiento de los MCU de 16 bits no es suficiente y la rica funcionalidad de los dispositivos "ordinarios" de 32 bits es redundante. La línea de MCU STM32F100 se basa en el núcleo ARM CortexM3 de última generación con periféricos optimizados para su uso en aplicaciones típicas donde se utilizaron MCU de 16 bits. El rendimiento de la MCU STM32F100 a 24 MHz es superior al de la mayoría de las MCU de 16 bits. Esta línea incluye dispositivos con varios parámetros:
● de 16 a 128 kb de memoria flash de programa;
● de 4 a 8 kb de RAM;
● hasta 80 puertos de entrada/salida GPIO;
● hasta nueve temporizadores de 16 bits con funciones avanzadas;
● dos temporizadores de vigilancia;
● ADC de 12 bits de alta velocidad de 16 canales;
● dos DAC de 12 bits con generadores de señales incorporados;
● hasta tres interfaces UART compatibles con los modos IrDA, LIN e ISO7816;
● hasta dos interfaces SPI;
● hasta dos interfaces I2C compatibles con los modos SMBus y PMBus;
● Bloque de 7 canales de acceso directo a memoria (DMA);
● Interfaz CEC (Consumer Electronics Control) incluida en el estándar HDMI;
● reloj en tiempo real (RTC);
● Controlador de interrupción anidado NVIC.

El diagrama funcional del STM32F100 se muestra en la Figura 1.

Arroz. 1. Arquitectura del MK de la línea STM32F100

Una comodidad adicional es la compatibilidad de dispositivos por pines, lo que permite, si es necesario, utilizar cualquier MK de la familia con mayor funcionalidad y memoria sin procesar la placa de circuito impreso. La línea de controladores STM32F100 se produce en tres tipos de paquetes LQFP48, LQFP64 y LQFP100, que tienen 48, 64 y 100 pines, respectivamente. El propósito de los pines se muestra en las Figuras 2, 3 y 4. Estos casos se pueden instalar en placas de circuito impreso sin el uso de equipo especial, lo cual es un factor importante en la producción a pequeña escala.


Arroz. Fig. 2. MK STM32 en paquete LQFP48 3. MK STM32 en paquete LQFP64


Arroz. 4. MK STM32 en el paquete LQFP100

STM32F100 es un dispositivo asequible y optimizado basado en el núcleo CortexM3, respaldado por un entorno de desarrollo avanzado para la familia de MCU STM32, que contiene
bibliotecas gratuitas para todos los periféricos, incluido el control del motor y los teclados táctiles.

ESQUEMA ELÉCTRICO STM32F100C4
Considere el uso práctico de MK usando el dispositivo más simple STM32F100C4 como ejemplo, que, sin embargo, contiene todos los bloques principales de la línea STM32F100. El diagrama esquemático de encendido de STM32F100C4 se muestra en la Figura 5.


Arroz. 5. Esquema de encendido MK STM32F100C4

El condensador C1 proporciona un reinicio del MK cuando se enciende la alimentación, y los condensadores C2-C6 filtran el voltaje de suministro. Las resistencias R1 y R2 limitan la corriente de la señal de las salidas MK. Se utiliza un oscilador interno como fuente de reloj, por lo que no es necesario utilizar un oscilador de cristal externo.


Las entradas BOOT0 y BOOT1 le permiten seleccionar el método de carga del MK cuando se enciende la alimentación de acuerdo con la tabla. La entrada BOOT0 está conectada al bus de potencial cero a través de la resistencia R2, lo que evita que el pin BOOT0 se cortocircuite cuando se usa como puerto de salida PB2. Usando el conector J1 y un puente, puede cambiar el potencial en la entrada BOOT0, determinando así cómo se carga el MK, desde la memoria flash o desde el cargador de arranque incorporado. Si es necesario cargar el MK desde la RAM, se puede conectar un conector similar con un puente a la entrada BOOT1.
La programación MK se lleva a cabo a través del puerto serie UART1 o mediante programadores especiales: depuradores JTAG o STLink. Este último es parte del popular dispositivo de depuración STM32VLDISCOVERY, que se muestra en la Figura 6. En la placa STM32VLDIS COVERY, el conector de 4 pines del programador STLink (depurador) se designa como SWD. El autor del artículo sugiere programar el MK a través del puerto serie UART1, ya que es mucho más simple, no requiere equipo especial y no es inferior en velocidad a JTAG o ST Link. Como dispositivo de control capaz de generar comandos y mostrar los resultados del programa MC, así como programador, puede utilizar cualquier computadora personal (PC) que tenga un puerto serial COM o un puerto USB con un convertidor USBRS232.

Cualquier convertidor de señales RS232 a niveles de señal lógica de 0 a 3,3 V, por ejemplo, el chip ADM3232, es adecuado para emparejar el puerto COM de la PC con el MK. La línea de transmisión TXD del puerto serial de la computadora, después del convertidor de nivel, debe conectarse a la entrada PA10 del microcontrolador, y la línea de recepción RXD, a través de un convertidor similar, a la salida PA9.

Si es necesario utilizar un reloj MK no volátil, se le debe conectar una batería tipo CR2032 con un voltaje de 3 V y un resonador de cuarzo a una frecuencia de 32768 Hz. Para ello, el MK está equipado con pines Vbat/GND y OSC32_IN/OSC32_OUT. La salida Vbat primero debe desconectarse del riel de alimentación de 3.3 V.

Las restantes conclusiones libres del MC se pueden utilizar según sea necesario. Para ello, se deben conectar a los conectores que se encuentran en el perímetro de la placa de circuito impreso del MK, por analogía con los populares dispositivos Arduino y la placa de depuración STM32VLDISCOVERY.


Arroz. 6. Depurador STM32VLDISCOVERY


Diagrama del circuito eléctrico STM32VLDISCOVERY.

Por lo tanto, según el propósito y el método de uso de la MC, es posible conectarle los elementos necesarios para usar otros bloques funcionales y puertos, por ejemplo, ADC, DAC, SPI, I2C, etc. En lo que sigue, estos dispositivos se considerarán con más detalle.

PROGRAMACIÓN
Hoy en día, muchas empresas ofrecen herramientas para crear y depurar programas de microcontroladores STM32. Estos incluyen Keil by ARM Ltd, IAR Embedded Workbench para ARM, Atol lic TrueStudio, CooCox IDE, GCC y Eclipse IDE. El desarrollador puede seleccionar el software de su elección. A continuación se describirá el kit de herramientas Keil uVision 4 de la empresa Keil, que admite una gran cantidad de tipos de microcontroladores, tiene un sistema desarrollado de herramientas de depuración y se puede usar de forma gratuita con restricciones de tamaño de código generado de 32 kb (que, en de hecho, es el máximo para los microcontroladores considerados).

Inicio fácil y rápido con CooCox CoIDE.

Entonces empecemos. Vaya al sitio web oficial de CooCox y descargue la última versión de CooCox CoIDE. Para descargar, debe registrarse, el registro es simple y gratuito. Luego instale el archivo descargado y ejecute.

Código de CooCox- un entorno de desarrollo basado en Eclipse que, además de STM32, admite muchas otras familias de microcontroladores: Freescale, Holtek, NXP, Nuvoton, TI, Atmel SAM, Energy Micro, etc. Con cada nueva versión de CoIDE, el La lista de MK se actualiza constantemente. Después de la instalación exitosa de CoIDE, ejecute:

Aparecerá la ventana de inicio Paso 1, en la que debe seleccionar el fabricante de nuestro microcontrolador. Presione ST y vaya al Paso 2 (selección del microcontrolador), en el que debe seleccionar un modelo específico. Tenemos STM32F100RBT6B, así que haga clic en el modelo apropiado:

A la derecha, en la ventana de Ayuda, se muestran breves características de cada chip. Después de seleccionar el microcontrolador que necesitamos, procedemos al tercer paso del Paso 3: para seleccionar las bibliotecas necesarias para el trabajo:

Creemos un proyecto simple para hacer parpadear un LED, como es habitual para estudiar microcontroladores.

Para hacer esto, necesitamos la biblioteca GPIO, cuando está habilitada, CoIDE le pedirá que cree un nuevo proyecto. En esta propuesta, haga clic en Sí, especifique la carpeta donde se almacenará nuestro proyecto y su nombre. Al mismo tiempo, CoIDE conectará al proyecto otras 3 bibliotecas necesarias para que la biblioteca funcione, y también creará toda la estructura necesaria del proyecto:

Otra cosa buena de CoIDE es que tiene la capacidad de cargar ejemplos directamente en el entorno de desarrollo. En la pestaña Componentes, puede ver que hay ejemplos para casi todas las bibliotecas, haga clic en GPIO (con 4 ejemplos) y véalos:

Puede agregar sus propios ejemplos allí. Como puede ver en la captura de pantalla anterior, el código para hacer parpadear el LED GPIO_Blink ya está presente en los ejemplos. Puede hacer clic en el botón Agregar y se agregará al proyecto, pero como un archivo incluido, por lo que lo haremos de manera diferente, simplemente copie el código de ejemplo completo en el archivo main.c. Lo único es reemplazar la línea void GPIO_Blink(void) con int main(void). Entonces, presionamos F7 (o seleccionamos Project-> Build del menú) para compilar el proyecto y... ¡no estaba allí!

El entorno necesita un compilador GCC y nosotros no tenemos uno. Por lo tanto, vamos a la página Herramientas GNU para procesadores integrados ARM, seleccionamos el tipo de sistema operativo a la derecha y descargamos la última versión de la cadena de herramientas. Luego ejecutamos el archivo e instalamos la cadena de herramientas gcc. A continuación, en la configuración de CoIDE, especifique la ruta correcta a la cadena de herramientas:

Presione F7 nuevamente (Proyecto-> Construir) y vea que la compilación fue exitosa:

Queda por flashear el microcontrolador. Para ello, conectamos nuestra placa al ordenador mediante USB. Luego, en la configuración del depurador, debe colocar ST-Link, para esto, seleccione Proyecto-> Configuración en el menú y abra la pestaña Depurador. En la lista desplegable, seleccione ST-Link y cierre la ventana:

Intentemos flashear el MK. En el menú, seleccione Flash-> Descarga del programa (o haga clic en el icono correspondiente en la barra de herramientas) y vea que el MK se ha flasheado con éxito:

Observamos un LED parpadeando en la placa, creo que no tiene sentido dar un video o una foto, porque todos lo vieron.

Además, varios modos de depuración funcionan en CoIDE, para esto presionamos CTRL + F5 (o en el menú Depurar-> Depurar):

Eso es todo. Como puede ver, configurar y trabajar con CoIDE es muy simple. Espero que este artículo lo anime a estudiar microcontroladores STM32 muy prometedores y económicos.

Si encuentra un error, seleccione un fragmento de texto y presione Ctrl+Enter.