新手上路一文中我们编译的应用是官方提供的example,官方一次性将所有的example全部编译出来了。
那我们自己应该如何来创建自己的工程项目呢?getting-started-with-pico.pdf文档“Chapter 8. Creating your own Project”中详细介绍了相关流程。本文按照该流程完成项目创建,并成功完成从串口输出“Hello world!”
1、创建项目目录,如pico_user_project
2、创建源文件hello_world.c并编辑输入:
#include <stdio.h>
#include "pico/stdlib.h"
int main()
{
setup_default_uart();
while(1) {
printf("Hello World!\r\n");
sleep_ms(1000);
}
return 0;
}
3、从pico-sdk/external目录下复制pico_sdk_import.cmake文件至pico_user_project根目录下
4、创建CMakeLists.txt文件并编辑输入:
cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(hello_world C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
add_executable(hello_world
hello_world.c
)
pico_add_extra_outputs(hello_world)
target_link_libraries(hello_world pico_stdlib)
5、按照新手上路一文,在命令行中依次输入:
- 设置PICO_SDK_PATH:export PICO_SDK_PATH=/home/share/samba/pico/pico-sdk
- 生成Makefile文件:mkdir build && cd build && cmake ..
- 编译:make
一切正常的话,会在build目录下生成hello_world.uf2文件,按照新手上路一文对应步骤,将该文件下载到Pico中, 在UART0上每隔1000ms输出一串“Hello World!”
UART0默认管脚分布如下:
UART0_TX | GP0,Pin1 |
UART0_RX | GP1,Pin2 |
GND | Pin3 |
7、CMakeLists.txt文件pico相关解析:
include(pico_sdk_import.cmake) #导入pico_sdk_import.cmake
pico_sdk_init() #定义在pico_sdk_import.cmake中的宏,等同于add_subdirectory(${PICO_SDK_PATH} pico-sdk)
pico_add_extra_outputs(hello_world) #用于生成uf2文件,否则只会生成elf文件