代码编织梦想

      FlyThings Lite 是中科世为基于STM32 平台开发的超低成本界面系统。低于 2K 的 RAM,16KFlash的硬件资源消耗。使用 FlyThingsLite IDE 开发工具快速设计界面。支持 ZKBITMAP 高达 90%压缩率的 BITMAP 编解码算法。Opencpu 的模式,更便于用户使用,相比传统串口屏直接节省一个 MCU。
     与传统串口屏的对比


  系统框架图:



新建 FlyThings Lite  项目



找到软件顶部菜单栏,依次选择 文件 -> 新建 -> FlyThings for MCU Project
输入项目名称,选择平台。选择分辨率,或者按照格式,输入自定义的分辨率。点击完成。
在软件的左侧,项目资源管理器区域,找到新建的项目。
选中项目名,右键,在弹出的菜单中,选择模拟器运行。
软件右下角给出正在编译的提示,几秒钟后,自动弹出模拟器,查看运行效果。
默认新建的项目,只有一个白色的窗口,参照下一章节添加控件。
添加控件
找到项目资源管理器,双击指定的项目名,打开目录。
双击 ui 文件夹下的 main.form 文件,将在右侧看到该 UI 文件的预览效果。
在预览图的右侧控件列表里,找到静态标签控件,
鼠标左键点击静态标签控件不松开,然后将其拖拽到预览图上的空白位置,松开左键,就能
看到自动生成的控件。
在软件的左下角,有一个大纲视图,可以查看底窗口下包含的所有控件。
在预览图中,左键点击刚才添加的控件,软件的最右侧属性栏,将显示该控件的所有可编辑
的属性。
在属性栏里,可以自由编辑,大部分的属性,在修改后,可以立即看到预览效果。
或者选择模拟器运行,查看完整效果。

下载程序到 MCU



保持电脑与 MCU 串口正常连接。
找到软件顶部的菜单栏,依次选择窗口->首选项->FlyThings Lite
在下载选项组中,选择与 MCU 连接的串口。
尽量选择 MCU 能支持的最高波特率,这将有效缩短下载时间。
其他保持默认。
设置完成后,点击应用并关闭保存设置。



main.c

#include "logic/main.h"

#include "other_app.h"



//static char index[2] = {1,0};



void ui_main_on_page_open(uint8_t page) {

        char buff[5];

        buff[0] = wash_mode.CurVal[wash_mode.pageid];

        buff[1] = '\0';

        imagetext_set_text(UI_WIDGET_MAIN_ArtText1, (const char*)buff);

}



/**

 * [url=home.php?mod=space&uid=247401]@brief[/url] 定时器回调接口

 * @param millisecond   定时器周期,单位 ms

 * @param count  累计次数

 */

void ui_main_on_timer(uint32_t millisecond, uint32_t count) {

//        if(count%50 == 0) {

//                index[0]++;

//                if(index[0] > 3) {

//                        index[0] = 1;

//                }

//                index[1] = '\0';

//                imagetext_set_text(UI_WIDGET_MAIN_ArtText1, (const char*)index);

//        }

}



/**

 * @brief 按钮点击事件回调接口

 * @param button   按钮控件指针

 * @param type     触摸事件类型

 */

void ui_main_on_button_touch_event(button_t *button, touch_type_e type) {



}



/**

 * @brief 进度条回调接口

 * @param progress  进度条控件指针

 * @param val       进度值

 */

void ui_main_on_progress_changed(progress_t *progress, uint16_t val) {



}



/**

 * @brief 动画播放结束回调接口

 * @param animation  动画控件指针

 */

void ui_main_on_animation_play_end(animation_t *animation) {



}


usermain




#include "main.h"

#include "devmodule.h"



#include "context/guicontext.h"

#include "event/event.h"

#include "timer/timer.h"

#include "graphics/video.h"

#include "input.h"

#include "other_app.h"

#include "dev_time17.h"





const S_DEV* uartdev;

const S_DEV* uart1dev;



static uint32_t tick5ms = 0;

static uint32_t tick10ms = 0;

static uint32_t tick50ms = 0;

static uint32_t tick100ms = 0;

static uint32_t tick500ms = 0;

static uint32_t tick1s = 0;

static uint32_t tick60s = 0;

static int proframe = 0;

uint8_t g_te;

extern const flythings_flash        m_flash;

const flythings_callback_t cbs={

        .init_event = event_init,

        .init_timer = timer_init,

        .init_video = video_init,

        .deinit_event = event_deinit,

        .deinit_timer = timer_deinit,

        .deinit_video = video_deinit,

        .cb_on_pageopen = on_page_open,

        .cb_on_animation_play_end = on_animation_play_end,

        .cb_on_button_touch_event = on_button_touch_event,

        .cb_on_progress_changed = on_progress_changed,

        .cb_on_timer = on_timer,

        .poll_timer = timer_check,

        .poll_event = event_poll,

        .flip_video = video_flip,

        .fly_debug = printf

};





void user_init(void){

#if LCD_BL_USE_PWM        

        DEV_TIM3_Init();

#endif

        MX_TIM17_Init();

        otherapp.init();

        uartdev = loadDev(&dev_uartupgrade);

        uart1dev = loadDev(&dev_uart1);

         printf("load uart \r\n");

        printf("led on\n");

        tick10ms = HAL_GetTick();

        tick50ms = HAL_GetTick();

        tick100ms = HAL_GetTick();

        tick500ms = HAL_GetTick();

        tick1s = HAL_GetTick();

        tick60s = HAL_GetTick();

        tick5ms = HAL_GetTick();

        

        LCD_BL_OFF();

        m_flash.flash_init();

        video_info_t vi = { 240, 240, 16, 0 };

        if(gui_context_init(&vi,&cbs,&m_flash)){

                gui_context_open_page(0);

                //LCD_BL_ON();

                printf("open page 0");

        }

        gui_context_run();

        HAL_Delay(10);

        LCD_BL_ON();

}



uint8_t ui_page = 0;        //test

uint8_t testmcudataflag = 0;        //for test

void user_loop(void){

        static uint32_t systick = 0;

        gui_context_run();

        systick = HAL_GetTick();

        if((systick-tick10ms) > 10){

          tick10ms = systick;

           uartdev->procMsg(DEVMSG_TIMER10ms,0,0);

           uart1dev->procMsg(DEVMSG_TIMER10ms,0,0);

           otherapp.procMsg(DEVMSG_TIMER10ms,0,0);

        }

        if((systick-tick5ms) > 5){

          tick5ms = systick;

          procKey();

        }

        if((systick-tick50ms) > 50){

          tick50ms = systick;

          uartdev->procMsg(DEVMSG_TIMER50ms,0,0);

           otherapp.procMsg(DEVMSG_TIMER50ms,0,0);

        }

        if((systick - tick100ms) >= 100){

          tick100ms = systick;

          uartdev->procMsg(DEVMSG_TIMER100ms,0,0);

           otherapp.procMsg(DEVMSG_TIMER100ms,0,0);

        }

        if((systick - tick500ms) >= 500){

          tick500ms = systick;

                

        }

        if((systick - tick1s) >= 1000){

                tick1s = systick;

                printf("tick1s\n");

                //ui_page++;

                //gui_context_open_page(ui_page%4);

        }

        if((systick - tick60s) >= (60000*10)){//10000){//

                tick60s = systick;

        }

}

---------------------
作者:abner_ma
链接:https://bbs.21ic.com/icview-3300266-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

stm32简单小实例_煽动MCU/MPU市场,STM32的生态图-爱代码爱编程

导言: 蝴蝶扇动翅膀, 便可引发彼岸的暴风雨。 STM32这只“蝴蝶”不仅掀起了MCU的风暴, 还走进了工程师和千家万户。 2020年STM32一年一度的全国巡回研讨会(STM32 Roadshow)火爆开场,一如既往,9月13日-9月25日STM32飞跃14个城市,为这个9月留下最美的“碟影”。 本次巡回研讨会

基于STM32和阿里云的智能家居-爱代码爱编程

1.需求分析 人类的生活品质和科学技术的发展息息相关。人类居所从高山洞穴演变为现代社会的摩天大楼。最开始人们对住所要求只要能够简单地遮挡风雨即可,得益物联网技术、无线传感技术和互联网技术等技术的飞速发展,各种家用电器带来的便利已经无法满足人们的生活需求,由于对互联网依赖程度逐渐加深,现代人类通过移动终端远程对家用设备进行智能控制,为人们的日常生活带来了极

【正点原子MP157连载】第二章 STM32MP1简介-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南-爱代码爱编程

1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-318813-1-1.html 4)正点原子官方B站:https://space.bil

基于stm32的无人机控制系统设计_stm32无人机-爱代码爱编程

基于stm32的无人机控制系统设计 **==整篇文章有两万字左右,字数太多了,实在是懒得全部放在这上面来,太废时间了。需要完整论文可主页联系==** 第一章 前言 1.1项目背景