Qt Creator como IDE para desarrollo de proyectos con libopencm3 y PlatformIO.
17 de Octubre 2016
Y obtenemos la lista completa de placas de ST que soporta PlatformIO (a mi solo me interesa una xD STM32F4DISCOVERY):
Despues:
1. Abrimos Qt Creator y abrimos el proyecto (File > Open File or Project) seleccionando el archivo platformio.pro que se encuentra en el directorio del proyecto.
2. Seleccionamos el kit desktop y nos vamos a la configuración del proyecto (modo Projects, en el panel izquierdo).
3. Seleccionamos el directorio del proyecto en la opción General > Build directory.
4. Removemos todos los Build Steps, clic en Build Steps > Add Build Step > Custom Process Step y escribimos:
Command: platformio
Arguments: -f -c qtcreator run
Working directory: %{buildDir}
5. Removemos todos los items de Clean Steps, clic en Clean Steps > Add Clean Step > Custom Process Step y escribimos:
Command: platformio
Arguments: -f -c qtcreator run --target clean
Working directory: %{buildDir}
Al final de estos pasos me quedo configurado asi:
6. Vamos al modo edicion (Edit mode en el panel izquierdo), incluimos el directorio src y los archivos que contiene (yo tuve que crear el archivo main.c dentro de src para poder incluir el directorio y sus contenidos).
7. Escribimos nuestra aplicación, como voy aprendiendo hice el clásico blink en uno de los LEDs de usuario de la STM32F4Discovery:
8. Clic en Build > Build all y nos genera el .elf de la aplicación, el .elf se genera en un directorio oculto (en mi caso se generó en .pioenvs/disco_f407vg/firmware.elf ), estoy investigando como poder grabar la placa dando click en el botón Run de Qt Creator.
9. Ya tenemos el .elf de nuestra aplicación generado, solamente tenemos que grabarlo en la placa, conectamos la placa, abrimos una terminal y nos ubicamos en el directorio del proyecto, y hacemos:
y si todo salio bien la placa se grabo de manera exitosa!!!
Iré dejando en el siguiente índice los proyectos que vaya haciendo:
Tengo que aprender a usar microcontroladores que no sean PSoC xD, así que intentaré aprender a usar los micros de ST, tengo la clásica STM32F4Discovery que tiene un Cortex M4.
Por fortuna(?) esta soportada por el proyecto libopencm3, así que vamos a aprovechar eso (también tengo que aprender a usar las HAL que provee ST xD, pero eso ira en otro post).
PlatformIO es una herramienta que nos ayuda al desarrollo de proyectos y nos da soporte para el framework libopencm3 y como voy empezando usaré PlatformIO para ayudarme a ir aprendiendo a usar libopencm3, ya después se vera si puedo hacer proyectos solamente con libopencm3 (se puede usar como submodulo de git en proyectos que desarrollemos).
Los pasos para la instalación de PlatformIO estan aqui.
Los pasos para la instalación de PlatformIO estan aqui.
En mi caso para instalar PlatformIO:
$ sudo -H pip2 install -U platformio
Esto instala PlatformIO de forma global y como esta escrito en python2.7 tenemos que usar pip2.
Y para terminar instalé las reglas udev para las placas, el archivo esta aqui.
Las descargué en el escritorio e hice:
Ahora para ver que placas de ST soporta PlatformIO podemos hacer:Y para terminar instalé las reglas udev para las placas, el archivo esta aqui.
Las descargué en el escritorio e hice:
$ sudo mv 99-platformio-udev.rules /etc/udev/rules.d/99-platformio-udev.rules
$ platformio boards ststm32
Y obtenemos la lista completa de placas de ST que soporta PlatformIO (a mi solo me interesa una xD STM32F4DISCOVERY):
Platform: ststm32 ------------------------------------------------------------------------------------------------------------------------ ID MCU Frequency Flash RAM Name ------------------------------------------------------------------------------------------------------------------------ armstrap_eagle1024 STM32F417VGT6 168Mhz 1024kB 192kB Armstrap Eagle 1024 armstrap_eagle2048 STM32F427VIT6 168Mhz 2042kB 256kB Armstrap Eagle 2048 armstrap_eagle512 STM32F407VET6 168Mhz 512kB 192kB Armstrap Eagle 512 b96b_f446ve STM32F446VET6 168Mhz 512kB 128kB 96Boards B96B-F446VE bluepill_f103c8 STM32F103C8T6 72Mhz 64kB 20kB BluePill F103C8 disco_f051r8 STM32F051R8T6 48Mhz 64kB 8kB ST STM32F0DISCOVERY disco_f100rb STM32F100RBT6 24Mhz 128kB 8kB ST STM32VLDISCOVERY disco_f303vc STM32F303VCT6 72Mhz 256kB 48kB ST STM32F3DISCOVERY disco_f334c8 STM32F334C8T6 72Mhz 64kB 12kB ST 32F3348DISCOVERY disco_f401vc STM32F401VCT6 84Mhz 256kB 64kB ST 32F401CDISCOVERY disco_f407vg STM32F407VGT6 168Mhz 1024kB 128kB ST STM32F4DISCOVERY ... ... ...
Qt Creator como IDE.
No quería instalar Atom (por ejemplo) o usar VIM para hacer los proyectos, y como ya tengo Qt Creator instalado lo usaré como IDE, además PlatformIO se puede integrar en el para el desarrollo de proyectos en Qt Creator, más información aqui.
Primer proyecto
Siguiendo las instrucciones para usar Qt como IDE cree un directorio donde voy a tener mi proyecto, luego se tiene que inicializar un proyecto de PlatformIO en ese directorio, en mi caso usé:$ platformio init --ide qtcreator --board disco_f407vg --project-option "framework=libopencm3"
Despues:
1. Abrimos Qt Creator y abrimos el proyecto (File > Open File or Project) seleccionando el archivo platformio.pro que se encuentra en el directorio del proyecto.
2. Seleccionamos el kit desktop y nos vamos a la configuración del proyecto (modo Projects, en el panel izquierdo).
3. Seleccionamos el directorio del proyecto en la opción General > Build directory.
4. Removemos todos los Build Steps, clic en Build Steps > Add Build Step > Custom Process Step y escribimos:
Command: platformio
Arguments: -f -c qtcreator run
Working directory: %{buildDir}
5. Removemos todos los items de Clean Steps, clic en Clean Steps > Add Clean Step > Custom Process Step y escribimos:
Command: platformio
Arguments: -f -c qtcreator run --target clean
Working directory: %{buildDir}
Al final de estos pasos me quedo configurado asi:
Configuración de Build Settings |
6. Vamos al modo edicion (Edit mode en el panel izquierdo), incluimos el directorio src y los archivos que contiene (yo tuve que crear el archivo main.c dentro de src para poder incluir el directorio y sus contenidos).
7. Escribimos nuestra aplicación, como voy aprendiendo hice el clásico blink en uno de los LEDs de usuario de la STM32F4Discovery:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | #include <stdint.h> #include <libopencm3/stm32/rcc.h> #include <libopencm3/stm32/gpio.h> void configGPIO(void); void myDelay(volatile uint32_t delay); int main(void){ configGPIO(); while(1){ /* LED ON */ gpio_set(GPIOD, GPIO12); myDelay(500000); /* LED OFF */ gpio_clear(GPIOD, GPIO12); myDelay(500000); } } void configGPIO(void){ rcc_periph_clock_enable(RCC_GPIOD); gpio_mode_setup(GPIOD, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO12); } void myDelay(volatile uint32_t delay){ static uint32_t i; for(i = 0; i < delay; ++i); } |
8. Clic en Build > Build all y nos genera el .elf de la aplicación, el .elf se genera en un directorio oculto (en mi caso se generó en .pioenvs/disco_f407vg/firmware.elf ), estoy investigando como poder grabar la placa dando click en el botón Run de Qt Creator.
9. Ya tenemos el .elf de nuestra aplicación generado, solamente tenemos que grabarlo en la placa, conectamos la placa, abrimos una terminal y nos ubicamos en el directorio del proyecto, y hacemos:
$ platformio run -t upload
Iré dejando en el siguiente índice los proyectos que vaya haciendo:
- Interrupción del botón de usuario
- ADC
- SPI
- I2C
Comentarios
Publicar un comentario