模板: RP2350-Touch-LCD-1.85C-Demo
来自Waveshare Wiki
目录结构
├── CMakeLists.txt ├── example_auto_set_url.cmake ├── examples # 示例程序 │ ├── CMakeLists.txt │ ├── audio_esp8311 # 音频测试程序 │ ├── battery_read # 串口打印电池电压的示例 │ ├── hello_world # 打印 hello world 的示例 │ │ ├── CMakeLists.txt │ │ ├── serial │ │ └── usb │ ├── lcd # 测试LCD的示例 │ │ ├── CMakeLists.txt │ │ ├── lcd_flush_rgb │ │ └── lcd_touch │ ├── lvgl # 一些使用LVGL的示例 │ │ ├── CMakeLists.txt │ │ ├── factory # 出厂自带的程序 │ │ ├── lv_port # LVGL对接硬件的源文件 │ │ ├── lvgl_battery # 使用LVGL显示电池电压 │ │ ├── lvgl_brightness # 使用LVGL控件控制屏幕亮度 │ │ ├── lvgl_example # 运行LVGL自带Demo的示例 │ │ └── lvgl_pcf85063 # 使用LVGL显示时间和日期的示例 │ ├── qmi8658_raw_out # 使用串口打印IMU数据的示例 │ ├── rtc_pcf85063 # 使用串口打印时间、日期的示例 │ └── sd_card_spi # 测试SD Card读写的示例 ├── libraries # 库文件 │ ├── CMakeLists.txt │ ├── Fonts │ ├── GUI │ ├── bsp # 硬件相关的库 │ ├── lvgl # LVGL库 │ └── no-OS-FatFS-SD-SDIO-SPI-RPi-Pico # SD Card 相关的库 ├── pico_extras_import_optional.cmake └── pico_sdk_import.cmake
编译
使用Pico-VScode插件
- 导入工程, 选择工程目录
- 点击Comple编译进行编译
使用Ubuntu
cd RP2350-Touch-LCD-1.85C-Demo/C mkdir build cd build cmake .. make -j8
编译的固件
- 编译完成后会在目录 build/examples 生成 .uf2 文件
烧录固件
- 按住板子的BOOT按键,通过 Type-C 线将板子接到电脑的 USB 接口,然后松开BOOT按键,电脑会将识别为一个可移动盘,最后将编译生成的 .uf2 格式的文件复制到可移动盘即可。
新建工程
- 下面我们以新建名为 lvgl_test 的工程为例。
- 在 examples/lvgl 目录下新建一个文件夹 lvgl_test ,在这个文件夹上新建 CMakeLists.txt 和 main.c 文件。
- CMakeLists.txt 文件的内容为
add_executable(lvgl_test
lvgl_test.c
../lv_port/lv_port_disp.c
../lv_port/lv_port_indev.c
)
pico_enable_stdio_usb(lvgl_test 1)
pico_enable_stdio_uart(lvgl_test 0)
# pull in common dependencies
target_link_libraries(lvgl_test
pico_stdlib
bsp
lvgl
lvgl::demos)
target_compile_definitions(lvgl_test PRIVATE
PICO_EMBED_XIP_SETUP=1
)
# create map/bin/hex/uf2 file etc.
pico_add_extra_outputs(lvgl_test)
- main.c 文件的内容为
#include <stdio.h>
#include "pico/stdlib.h"
#include "bsp_i2c.h"
#include "../lv_port/lv_port_disp.h"
#include "../lv_port/lv_port_indev.h"
#include "demos/lv_demos.h"
#include "hardware/pll.h"
#include "hardware/clocks.h"
#include "hardware/structs/pll.h"
#include "hardware/structs/clocks.h"
#define LVGL_TICK_PERIOD_MS 10
void set_cpu_clock(uint32_t freq_Mhz)
{
set_sys_clock_khz(freq_Mhz * 1000, true);
clock_configure(
clk_peri,
0,
CLOCKS_CLK_PERI_CTRL_AUXSRC_VALUE_CLKSRC_PLL_SYS,
freq_Mhz * 1000 * 1000,
freq_Mhz * 1000 * 1000);
}
static bool repeating_lvgl_timer_cb(struct repeating_timer *t)
{
lv_tick_inc(LVGL_TICK_PERIOD_MS);
return true;
}
int main()
{
static struct repeating_timer lvgl_timer;
set_cpu_clock(240);
stdio_init_all();
bsp_i2c_init();
lv_init();
lv_port_disp_init();
lv_port_indev_init();
add_repeating_timer_ms(LVGL_TICK_PERIOD_MS, repeating_lvgl_timer_cb, NULL, &lvgl_timer);
// lv_demo_benchmark();
lv_demo_music();
// lv_demo_widgets();
while (true)
{
lv_timer_handler();
sleep_ms(LVGL_TICK_PERIOD_MS);
}
}
- 在 examples/lvgl 目录下的 CMakeLists.txt 最后加上。
add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/lvgl_test)
- 重新编译,build/examples/lvgl 会新增一个文件夹 lvgl_test,其中包含编译生成的 .uf2 格式的文件。
