Link de la documentación oficial del fabricante: Pico C SDK - Documentation
Documentos útiles:
La configuración del archivo CMakeLists.txt nos permite darle al compilador distintas indicaciones de cómo queremos que "arme" nuestro proyecto de C. El archivo base que tenemos es el siguiente:
cmake_minimum_required(VERSION 3.12)
include(pico_sdk_import.cmake)
include(pico_extras_import_optional.cmake)
project(PicoProject C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
add_compile_options(-Wall
-Wno-format
-Wno-unused-function
-Wno-maybe-uninitialized
)
add_executable(PicoProject
main.c
)
target_link_libraries(PicoProject pico_stdlib cmsis_core)
pico_enable_stdio_usb(PicoProject 1)
pico_enable_stdio_uart(PicoProject 0)
pico_add_extra_outputs(PicoProject)
Repasemos algunas líneas que nos puede interesar cambiar:
project(PicoProject C CXX ASM)
Con lo que está en rojo definimos el nombre del proyecto que se va a compilar. Tiene mas sentido en proyectos mas grandes, que contienen subproyectos, pero tampoco está mal poner un nombre que se relacione con lo que estamos haciendo.
add_compile_options(-Wall
-Wno-format
-Wno-unused-function
-Wno-maybe-uninitialized
)
Acá definimos las flags u opciones del compilador que definirán cómo se comportará el compilador. Por defecto tenemos estas primeras 4 que nos definen que tipo de alertas o warnings nos van a aparecer a la hora de construir el proyecto. Acá tienen una lista de algunas de las opciones de compilación de GCC.
add_executable(PicoProject
main.c
)
Acá es donde indicamos cuáles archivos .c son los que el compilador tiene que tomar en cuenta a la hora de construir el archivo ejecutable. Hay que tener en cuenta que el nombre en rojo debe ser el mismo que indicamos más arriba. En caso de tener varios archivos quedaría algo así:
add_executable(PicoProject
main.c
gpio.c
rtc.c
)
target_link_libraries(PicoProject pico_stdlib)
Acá es donde le decimos al compilador qué bibliotecas adicionales tiene que incluir a la hora de armar el archivo ejecutable. Aplica lo mismo que antes para el nombre que está en rojo. Las primeras dos bibliotecas que están por defecto siempre tendrán que estar. A medida que avancemos con el año vamos a ir agregando algunas.
# enable usb output, disable uart output
pico_enable_stdio_usb(PicoProject 1)
pico_enable_stdio_uart(PicoProject 0)
Acá es donde definimos cómo se va a comportar la función printf en el entorno del microcontrolador. Si la primera línea está en uno y la segunda en cero, el printf se imprimirá por el USB de la placa. Si la segunda línea (UART) está en uno y la primera en 0, la salida del printf será en los pines de UART del microcontrolador. En principio usaremos la primera opción porque no necesitaríamos un conversor USB a TTL para poder ver en una computadora lo que está imprimiendo el microcontrolador. Por otro lado, también estaremos usando la UART sin la función de printf más adentrado el año. Aplica lo mismo que antes para el nombre en rojo.
pico_add_extra_outputs(PicoProject)
Por último, esta línea es la que hace que se cree el ejecutable que después arrastramos al microcontrolador "como pendrive" para programarlo. Siempre debe estar. Aplica lo mismo que antes para el nombre en rojo.