本帖最后由 ckdsx.cn 于 2023-11-23 09:04 编辑
工程目录:AiPi-Open-Kits/ AiPi-DSL_Watch
文件目录:AiPi-Open-Kits/ AiPi-DSL_Watch / main / main.c
小安派-DSL 1.28寸圆屏手表Demo
一、概述小安派-DSL(AiPi-DSL) 是安信可开源团队专门为Ai-M61-32S设计的一款屏幕驱动开发板,支持2.8/3.5寸等30Pin SPI显示屏、2.4寸及1.28寸等18Pin SPI显示屏。 本工程即在1.28寸圆形显示屏上实现智能手表的功能,可以实现网络时间更新。 二、使用说明圆形手表Demo 一共有两个界面:主页和配置页面。主页主要显示时间等信息,配置页面用于WiFi 网络配置.
操作说明- 主页 点击最右边的位置或者点击WiFi图片即可进入配置界面。
- 配置界面 SSID 输入框用于输入WiFi 名称,PASSWORD输入框用于输入WiFi密码,输入完成之后点击连接 按钮即可触发WiFi 连接。连接成功之后会自动切换到主页,也可以点击主页按钮切换到主页。
main 工程代码:
--------------------------------------------------
/**
* @file main.c
* @author your name (you@domain.com)
* @brief
* @version 0.1
* @date 2023-06-29
*
* @copyright Copyright (c) 2023
*
*/
#include <stdio.h> //导入各个所需库文件
#include <stdlib.h>
#include <string.h>
#include <FreeRTOS.h>
#include <task.h>
#include <queue.h>
#include "log.h"
#include "board.h"
#include "mem.h"
//easy flash 简易存储库
#include "easyflash.h"
#include "bflb_mtd.h"
#include "bl_fw_api.h"
#include "wifi_mgmr_ext.h"
#include "wifi_mgmr.h"
//lvgl 图形库
#include "lv_conf.h"
#include "lvgl.h"
#include "lv_port_disp.h"
#include "lv_port_indev.h"
//GuiGuider UI 界面库
#include "gui_guider.h"
#include "custom.h"
#include "wifi_event.h"
#include "lv_user_config.h"
/********** user define *************/
#define DBG_TAG "MIAN"
/**************************************/
/***************** extern ************/
lv_ui guider_ui;
/**************************************/
/***************** extern ************/
static int bl61x_get_heap_size(void);
static void bl61x_show_heap_size_task(void* arg) //bl61x显示堆大小任务
{
while (1) {
printf("[%s:%d]heap_size-------> %d\r\n", DBG_TAG, __LINE__, bl61x_get_heap_size());
vTaskDelay(3000/portTICK_PERIOD_MS);
}
}
/**************************************/
int main(void) //主函数
{
board_init(); //开发板初始化
tcpip_init(NULL, NULL); // tcpip 初始化
wifi_start_firmware_task(); //wifi启动固件任务
// wifi_mgmr_ap_stop();
//init easyflash
bflb_mtd_init(); //mtd 是啥目前不明白,请高手解答?
easyflash_init(); //简易存储初始化
/* lvgl init */
lv_log_register_print_cb(lv_log_print_g_cb);
lv_init();
lv_port_disp_init();
lv_port_indev_init();
setup_ui(&guider_ui);
custom_init(&guider_ui);
xTaskCreate(lvgl_tick_task, (char*)"lvgl", 1024, NULL, 1, NULL);
xTaskCreate(bl61x_show_heap_size_task, (char*)"heap", 1024, NULL, 2, NULL);
vTaskStartScheduler(); //v任务启动计划程序
// while (1) {
// vTaskDelay(1000/portTICK_PERIOD_MS);
// }
}
static int bl61x_get_heap_size(void) // bl61x获取堆大小
{
struct meminfo info1 = { 0 };
struct meminfo info2 = { 0 };
uint32_t total_free_size = 0;
// return xPortGetFreeHeapSize();
bflb_mem_usage(KMEM_HEAP, &info1); //存储器用法?
bflb_mem_usage(PMEM_HEAP, &info2);
total_free_size = info1.free_size + info2.free_size;
return total_free_size;
}
|