OpenEdv-开源电子网

 找回密码
 立即注册
查看: 3654|回复: 4

stm32F407 跑LVGL,屏幕突然白屏

[复制链接]

16

主题

103

帖子

0

精华

高级会员

Rank: 4

积分
830
金钱
830
注册时间
2020-7-1
在线时间
110 小时
发表于 2022-6-13 16:53:52 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 q879524825 于 2022-6-13 16:57 编辑

stm32F407 跑LVGL,屏幕不定时 突然白屏
开了debug看 也没有进入 硬件错误。
这个界面是开了20个textarea 、21个label、一个键盘、2个button,
大约占了21KB,我给lvgl分配的是 36K


仔细检查过代码,不清楚哪里有内存泄露还是?
另外还有个bug, 用的40cm fpc排线接的 2.8寸屏幕, 屏幕一直闪烁,有时候闪烁的很厉害,是电源不稳吗? 按说不至于啊

  1. #include "my_app/settingPage.h"
  2. #include "my_app/mainWindow.h"

  3. #include "application.h"
  4. #include "stdio.h"

  5. static uint32_t userData[2] = { 0 }; //记录子对象 ID
  6. //偶尔会 白屏
  7. //char ta_string[20][15] = { "","","","","","","","","","","","","","","","","","","","" }; //记录textarea 字符串

  8. static void btn_event_cb(lv_event_t* e)
  9. {
  10.     lv_event_code_t code = lv_event_get_code(e); //获取 触发回调的 事件
  11.     lv_obj_t* target = lv_event_get_target(e); //获取触发回调的 对象
  12.     uint32_t* data = lv_event_get_user_data(e);
  13.     uint32_t ID = lv_obj_get_child_id(target);
  14.     lv_obj_t* parent = lv_obj_get_parent(target);
  15.     LV_LOG_USER("btn cb! ID:%d", ID);

  16.     if (code == LV_EVENT_CLICKED && data[0] == ID) //验证子对象的ID
  17.     {

  18.         LV_LOG_USER("return_btn clicked!");//
  19.         lv_obj_del(parent); //返回到主界面
  20.         mainWin();

  21.     }
  22.     if (code == LV_EVENT_CLICKED && data[1] == ID) //验证子对象的ID
  23.     {

  24.         LV_LOG_USER("save_btn clicked!");//
  25.         
  26.                         //直接从 ta对象提取 到参数结构体
  27.                                 APP_Para.s_p_L_t=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 4)));//ta子对象 ID从4-42
  28.                                 APP_Para.s_p_H_t=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 6)));
  29.                                 APP_Para.l_p_L_t=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 8)));
  30.                                 APP_Para.l_p_H_t=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 10)));
  31.                         
  32.                                 APP_Para.Z_C_x_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 12)));  //8位
  33.                                 APP_Para.Y_C_y_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 14)));
  34.                                 APP_Para.T1_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 16)));
  35.                                 APP_Para.T2_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 18)));        
  36.                                 APP_Para.T3_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 20)));
  37.                                 APP_Para.T4_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 22)));
  38.                                 APP_Para.T5_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 24)));
  39.                                 APP_Para.T6_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 26)));
  40.                                 APP_Para.T7_s=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 28)));
  41.                                 APP_Para.Type=atoi(lv_textarea_get_text(lv_obj_get_child(parent, 30)));
  42.                                        
  43.                                 strcpy(APP_Para.login_ID,                lv_textarea_get_text(lv_obj_get_child(parent, 32)));
  44.                                 strcpy(APP_Para.login_PWD,        lv_textarea_get_text(lv_obj_get_child(parent, 34)));
  45.                                 strcpy(APP_Para.wifi_ID,                lv_textarea_get_text(lv_obj_get_child(parent, 36)));
  46.                                 strcpy(APP_Para.wifi_PWD,                lv_textarea_get_text(lv_obj_get_child(parent, 38)));
  47.                                 strcpy(APP_Para.wifi_server_IP,                lv_textarea_get_text(lv_obj_get_child(parent, 40)));
  48.                                 strcpy(APP_Para.wifi_server_PORT,        lv_textarea_get_text(lv_obj_get_child(parent, 42)));
  49.                        
  50.                                 APP_Para_Save(&APP_Para);      //将结构体参数进行存储   **********没保存到flash
  51.                                 
  52.         //mesgbox提示保存完毕
  53.         lv_obj_t* msgbox = lv_msgbox_create(parent, "Success!", "have saved", NULL, true);
  54.         lv_obj_set_size(msgbox, 140, 60);
  55.         lv_obj_align_to(msgbox, parent, LV_ALIGN_TOP_MID, 0, 20);
  56.         //bug:一直触发一个事件[Warn]  (508834.750, +32)        lv_draw_letter: lv_draw_letter: glyph dsc. not found for U+FF01
  57.         //排查问题是 "Success!" 中的感叹号用的 中文符号 "Success!",所以这个字符识别不到
  58.     }

  59. }



  60. static void textarea_event_cb(lv_event_t* e)
  61. {
  62.     //LV_LOG_USER("event_cb!");  //PC端的 LOG打印
  63.     //const char* str_buff;

  64.     lv_event_code_t code = lv_event_get_code(e); //获取 触发回调的 事件
  65.     lv_obj_t* target = lv_event_get_target(e); //获取触发回调的 对象
  66.     lv_obj_t* kb = lv_event_get_user_data(e);
  67.     uint32_t ID = lv_obj_get_child_id(target);
  68.     //LV_LOG_USER("ta cb! ID:%d", ID);

  69.     if (code == LV_EVENT_CLICKED)
  70.     {
  71.         LV_LOG_USER("ta cb! ID:%d.keyboard!", ID);
  72.         lv_keyboard_set_textarea(kb, target);
  73.         lv_obj_align_to(kb, target, LV_ALIGN_OUT_BOTTOM_RIGHT,0,30);  //将键盘位置 放置最下
  74.         lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN);
  75.         lv_group_focus_obj(kb);
  76.         lv_group_set_editing(lv_obj_get_group(kb), kb);
  77.         //str_buff=lv_textarea_get_text(target);
  78.         //strcpy(ta_string[(ID) / 2], str_buff);
  79.         
  80.     }
  81.     /*if (code == LV_EVENT_DEFOCUSED)
  82.     {
  83.         LV_LOG_USER("hide keyboard!");
  84.         lv_keyboard_set_textarea(kb, NULL);
  85.         lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);

  86.     }*/
  87.     if (code == LV_EVENT_READY || code == LV_EVENT_CANCEL )//|| code == LV_EVENT_LEAVE 在键盘出现时点击另一个对象 会卡住
  88.     {
  89.         LV_LOG_USER("ta cb! ID:%d.hide keyboard!", ID);
  90.         lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
  91.         //str_buff = lv_textarea_get_text(target);
  92.         //strcpy(ta_string[(ID) / 2], str_buff);   //可以直接查各个 ta子对象了
  93.         
  94.     }

  95. }


  96. void settingPage()
  97. {
  98.     //列表+text area?    表格?
  99.     //flex 布局,label+textarea  一行一行下去。
  100.     //SAVE  EXIT 两个按键  和一个 setting 大标题,放在最上边
  101.         char ta_buf[15];
  102.         
  103.     uint16_t parent_width, parent_height,i=0;
  104.     lv_obj_t* parent= lv_obj_create(lv_scr_act());
  105.     parent_width = lv_obj_get_width(lv_scr_act());
  106.     parent_height = lv_obj_get_height(lv_scr_act());
  107.     lv_obj_set_size(parent, parent_width, parent_height);//建立全屏的页面对象,在这个页面上布局



  108.     //画一条分界线
  109.     static lv_style_t style_line;
  110.     lv_style_init(&style_line);
  111.     lv_style_set_line_width(&style_line, 2);
  112.     lv_style_set_line_color(&style_line, lv_palette_main(LV_PALETTE_BLUE));
  113.     lv_style_set_line_rounded(&style_line, true);
  114.     static lv_point_t line_points[] = { {10, 30},  {220, 30} };
  115.     lv_obj_t* line1 = lv_line_create(parent);
  116.     lv_line_set_points(line1, line_points, 2);
  117.     lv_obj_add_style(line1, &style_line, 0);

  118.     //setting  label 中间
  119.     lv_obj_t* title_label = lv_label_create(parent);  //return
  120.     lv_label_set_text(title_label, "setting");
  121.     lv_obj_align_to(title_label, line1, LV_ALIGN_CENTER, 0, -8);
  122.    
  123.    
  124.     lv_obj_t* return_btn = lv_btn_create(parent);      //return按钮 在左边
  125.     lv_obj_set_size(return_btn, (parent_width - 10) / 4, 25);
  126.     lv_obj_align_to(return_btn, title_label, LV_ALIGN_OUT_LEFT_MID, -20, 0);
  127.     lv_obj_t* return_btn_label = lv_label_create(return_btn);  //return
  128.     lv_label_set_text(return_btn_label, "return");
  129.     lv_obj_align(return_btn_label, LV_ALIGN_CENTER, 0, 0);

  130.     lv_obj_t* save_btn = lv_btn_create(parent);      //save按钮 在右边
  131.     lv_obj_set_size(save_btn, (parent_width-10)/4, 25);
  132.     lv_obj_align_to(save_btn, title_label, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
  133.     lv_obj_t* save_btn_label = lv_label_create(save_btn);  //save
  134.     lv_label_set_text(save_btn_label, "save");
  135.     lv_obj_align(save_btn_label, LV_ALIGN_CENTER, 0, 0);

  136. /*    lv_obj_t* setPage_con = lv_obj_create(parent);           //不要这个框体了,以免寻找 爷孙对象(无法达成)
  137.     lv_obj_set_size(setPage_con, parent_width, parent_height-40);
  138.     lv_obj_align_to(setPage_con, line1, LV_ALIGN_OUT_BOTTOM_MID, 0, 5);   */
  139.    

  140.     //****获取结构体中 的数据,然后 改成字符串放入 字符串数组,以下逐个进行显示
  141.    
  142.     i=0;
  143.   
  144. //    for (i = 0; i < 20; i++)
  145. //        sprintf(ta_string[i], "test:%d", i); // 测试代码,给每个ta 赋字符串
  146.    
  147. /*   ta_string[0] = "text:1";
  148.     ta_string[1] = "text:1";
  149.     ta_string[2] = "text:1";
  150.     ta_string[3] = "text:1";
  151.     ta_string[4] = "text:1";
  152.     ta_string[5] = "text:1";
  153.     ta_string[6] = "text:1";
  154.     ta_string[7] = "text:1";
  155.     ta_string[8] = "text:1";
  156.     ta_string[9] = "text:1";

  157.     ta_string[10] = "text:19";
  158.     ta_string[11] = "text:19";
  159.     ta_string[12] = "text:19";
  160.     ta_string[13] = "text:19";
  161.     ta_string[14] = "text:19";
  162.     ta_string[15] = "text:19";
  163.     ta_string[16] = "text:19";
  164.     ta_string[17] = "text:19";
  165.     ta_string[18] = "text:19";
  166.     ta_string[19] = "text:19";*/
  167.                
  168.     i = 0;
  169.    
  170.         sprintf(ta_buf, "%d", APP_Para.s_p_L_t);
  171.                                 
  172.         lv_obj_t* textarea1 = lv_textarea_create(parent);                          //先建立 ta  子对象ID就从0开始了 0、2、4、、、38
  173.         lv_obj_set_size(textarea1, parent_width / 3 * 2 - 20, parent_height / 16);
  174.         lv_textarea_set_max_length(textarea1, 10);
  175.         lv_obj_align_to(textarea1, line1, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 0);
  176.         lv_textarea_set_text(textarea1, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  177.         //lv_textarea_set_placeholder_text(textarea1, ":");   //提示文本
  178.         lv_textarea_set_one_line(textarea1, true);                //单行模式   
  179.       
  180.         lv_obj_t* label1 = lv_label_create(parent);
  181.         lv_obj_set_size(label1, parent_width / 3, parent_height / 16);
  182.         lv_label_set_text(label1, "supply pressure low threshold:");
  183.         lv_label_set_long_mode(label1, LV_LABEL_LONG_SCROLL);
  184.         lv_obj_align_to(label1, textarea1, LV_ALIGN_OUT_LEFT_MID, 0, 0); //label 放在 ta 左边

  185.   sprintf(ta_buf, "%d", APP_Para.s_p_H_t);

  186.         lv_obj_t* textarea2 = lv_textarea_create(parent);
  187.         lv_obj_set_size(textarea2, parent_width / 3 * 2 - 20, parent_height / 16);
  188.         lv_textarea_set_max_length(textarea2, 10);
  189.         lv_obj_align_to(textarea2, textarea1, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  190.         lv_textarea_set_text(textarea2, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  191.         lv_textarea_set_one_line(textarea2, true);                //单行模式

  192.         lv_obj_t* label2 = lv_label_create(parent);
  193.         lv_obj_set_size(label2, parent_width / 3, parent_height / 16);
  194.         lv_label_set_text(label2, "supply pressure high threshold:");
  195.         lv_label_set_long_mode(label2, LV_LABEL_LONG_SCROLL);
  196.         lv_obj_align_to(label2, textarea2, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  197.             sprintf(ta_buf, "%d", APP_Para.l_p_L_t);
  198.         
  199.         lv_obj_t* textarea3 = lv_textarea_create(parent);
  200.         lv_obj_set_size(textarea3, parent_width / 3 * 2 - 20, parent_height / 16);
  201.         lv_textarea_set_max_length(textarea3, 10);
  202.         lv_obj_align_to(textarea3, textarea2, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  203.         lv_textarea_set_text(textarea3, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  204.         lv_textarea_set_one_line(textarea3, true);                //单行模式

  205.         lv_obj_t* label3 = lv_label_create(parent);
  206.         lv_obj_set_size(label3, parent_width / 3, parent_height / 16);
  207.         lv_label_set_text(label3, "leakage pressure low threshold:");
  208.         lv_label_set_long_mode(label3, LV_LABEL_LONG_SCROLL);
  209.         lv_obj_align_to(label3, textarea3, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  210.                  sprintf(ta_buf, "%d", APP_Para.l_p_H_t);
  211.   
  212.         lv_obj_t* textarea4 = lv_textarea_create(parent);
  213.         lv_obj_set_size(textarea4, parent_width / 3 * 2 - 20, parent_height / 16);
  214.         lv_textarea_set_max_length(textarea4, 10);
  215.         lv_obj_align_to(textarea4, textarea3, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  216.         lv_textarea_set_text(textarea4, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  217.         lv_textarea_set_one_line(textarea4, true);                //单行模式

  218.         lv_obj_t* label4 = lv_label_create(parent);
  219.         lv_obj_set_size(label4, parent_width / 3, parent_height / 16);
  220.         lv_label_set_text(label4, "leakage pressure high threshold:");
  221.         lv_label_set_long_mode(label4, LV_LABEL_LONG_SCROLL);
  222.         lv_obj_align_to(label4, textarea4, LV_ALIGN_OUT_LEFT_MID, 0, 0);
  223.          
  224.                 sprintf(ta_buf, "%d", APP_Para.Z_C_x_s);
  225.                

  226.         lv_obj_t* textarea5 = lv_textarea_create(parent);
  227.         lv_obj_set_size(textarea5, parent_width / 3 * 2 - 20, parent_height / 16);
  228.         lv_textarea_set_max_length(textarea5, 10);
  229.         lv_obj_align_to(textarea5, textarea4, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  230.         lv_textarea_set_text(textarea5, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  231.         lv_textarea_set_one_line(textarea5, true);                //单行模式

  232.         lv_obj_t* label5 = lv_label_create(parent);
  233.         lv_obj_set_size(label5, parent_width / 3, parent_height / 16);
  234.         lv_label_set_text(label5, "z clamp time");
  235.         lv_label_set_long_mode(label5, LV_LABEL_LONG_SCROLL);
  236.         lv_obj_align_to(label5, textarea5, LV_ALIGN_OUT_LEFT_MID, 0, 0);
  237.                
  238.                 sprintf(ta_buf, "%d", APP_Para.Y_C_y_s);

  239.         lv_obj_t* textarea6 = lv_textarea_create(parent);
  240.         lv_obj_set_size(textarea6, parent_width / 3 * 2 - 20, parent_height / 16);
  241.         lv_textarea_set_max_length(textarea6, 10);
  242.         lv_obj_align_to(textarea6, textarea5, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  243.         lv_textarea_set_text(textarea6, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  244.         lv_textarea_set_one_line(textarea6, true);                //单行模式

  245.         lv_obj_t* label6 = lv_label_create(parent);
  246.         lv_obj_set_size(label6, parent_width / 3, parent_height / 16);
  247.         lv_label_set_text(label6, "y clamp time");
  248.         lv_label_set_long_mode(label6, LV_LABEL_LONG_SCROLL);
  249.         lv_obj_align_to(label6, textarea6, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  250.            sprintf(ta_buf, "%d", APP_Para.T1_s);
  251.                
  252.         lv_obj_t* textarea7 = lv_textarea_create(parent);
  253.         lv_obj_set_size(textarea7, parent_width / 3 * 2 - 20, parent_height / 16);
  254.         lv_textarea_set_max_length(textarea7, 10);
  255.         lv_obj_align_to(textarea7, textarea6, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  256.         lv_textarea_set_text(textarea7, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  257.         lv_textarea_set_one_line(textarea7, true);                //单行模式

  258.         lv_obj_t* label7 = lv_label_create(parent);
  259.         lv_obj_set_size(label7, parent_width / 3, parent_height / 16);
  260.         lv_label_set_text(label7, "(T1)pre inflation time:");
  261.         lv_label_set_long_mode(label7, LV_LABEL_LONG_SCROLL);
  262.         lv_obj_align_to(label7, textarea7, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  263.                  sprintf(ta_buf, "%d", APP_Para.T2_s);        
  264.    
  265.         lv_obj_t* textarea8 = lv_textarea_create(parent);
  266.         lv_obj_set_size(textarea8, parent_width / 3 * 2 - 20, parent_height / 16);
  267.         lv_textarea_set_max_length(textarea8, 10);
  268.         lv_obj_align_to(textarea8, textarea7, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  269.         lv_textarea_set_text(textarea8, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  270.         lv_textarea_set_one_line(textarea8, true);                //单行模式

  271.         lv_obj_t* label8 = lv_label_create(parent);
  272.         lv_obj_set_size(label8, parent_width / 3, parent_height / 16);
  273.         lv_label_set_text(label8, "(T2)inflation time:");
  274.         lv_label_set_long_mode(label8, LV_LABEL_LONG_SCROLL);
  275.         lv_obj_align_to(label8, textarea8, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  276.                         sprintf(ta_buf, "%d", APP_Para.T3_s);
  277.                
  278.         lv_obj_t* textarea9 = lv_textarea_create(parent);
  279.         lv_obj_set_size(textarea9, parent_width / 3 * 2 - 20, parent_height / 16);
  280.         lv_textarea_set_max_length(textarea9, 10);
  281.         lv_obj_align_to(textarea9, textarea8, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  282.         lv_textarea_set_text(textarea9, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  283.         lv_textarea_set_one_line(textarea9, true);                //单行模式

  284.         lv_obj_t* label9 = lv_label_create(parent);
  285.         lv_obj_set_size(label9, parent_width / 3, parent_height / 16);
  286.         lv_label_set_text(label9, "(T3)balance time:");
  287.         lv_label_set_long_mode(label9, LV_LABEL_LONG_SCROLL);
  288.         lv_obj_align_to(label9, textarea9, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  289.                         sprintf(ta_buf, "%d", APP_Para.T4_s);        
  290.    
  291.         lv_obj_t* textarea10 = lv_textarea_create(parent);
  292.         lv_obj_set_size(textarea10, parent_width / 3 * 2 - 20, parent_height / 16);
  293.         lv_textarea_set_max_length(textarea10, 10);
  294.         lv_obj_align_to(textarea10, textarea9, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  295.         lv_textarea_set_text(textarea10, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  296.         lv_textarea_set_one_line(textarea10, true);                //单行模式

  297.         lv_obj_t* label10 = lv_label_create(parent);
  298.         lv_obj_set_size(label10, parent_width / 3, parent_height / 16);
  299.         lv_label_set_text(label10, "(T4)stabilization time:");
  300.         lv_label_set_long_mode(label10, LV_LABEL_LONG_SCROLL);
  301.         lv_obj_align_to(label10, textarea10, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  302.                 sprintf(ta_buf, "%d", APP_Para.T5_s);
  303.                
  304.         lv_obj_t* textarea11 = lv_textarea_create(parent);
  305.         lv_obj_set_size(textarea11, parent_width / 3 * 2 - 20, parent_height / 16);
  306.         lv_textarea_set_max_length(textarea11, 10);
  307.         lv_obj_align_to(textarea11, textarea10, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  308.         lv_textarea_set_text(textarea11, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  309.         lv_textarea_set_one_line(textarea11, true);                //单行模式

  310.         lv_obj_t* label11 = lv_label_create(parent);
  311.         lv_obj_set_size(label11, parent_width / 3, parent_height / 16);
  312.         lv_label_set_text(label11, "(T5)test time:");
  313.         lv_label_set_long_mode(label11, LV_LABEL_LONG_SCROLL);
  314.         lv_obj_align_to(label11, textarea11, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  315.                  sprintf(ta_buf, "%d", APP_Para.T6_s);        
  316.    
  317.         lv_obj_t* textarea12 = lv_textarea_create(parent);
  318.         lv_obj_set_size(textarea12, parent_width / 3 * 2 - 20, parent_height / 16);
  319.         lv_textarea_set_max_length(textarea12, 10);
  320.         lv_obj_align_to(textarea12, textarea11, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  321.         lv_textarea_set_text(textarea12, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  322.         lv_textarea_set_one_line(textarea12, true);                //单行模式

  323.         lv_obj_t* label12 = lv_label_create(parent);
  324.         lv_obj_set_size(label12, parent_width / 3, parent_height / 16);
  325.         lv_label_set_text(label12, "(T6)exhaust time:");
  326.         lv_label_set_long_mode(label12, LV_LABEL_LONG_SCROLL);
  327.         lv_obj_align_to(label12, textarea12, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  328.                   sprintf(ta_buf, "%d", APP_Para.T7_s);
  329.                
  330.         lv_obj_t* textarea13 = lv_textarea_create(parent);
  331.         lv_obj_set_size(textarea13, parent_width / 3 * 2 - 20, parent_height / 16);
  332.         lv_textarea_set_max_length(textarea13, 10);
  333.         lv_obj_align_to(textarea13, textarea12, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  334.         lv_textarea_set_text(textarea13, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  335.         lv_textarea_set_one_line(textarea13, true);                //单行模式

  336.         lv_obj_t* label13 = lv_label_create(parent);
  337.         lv_obj_set_size(label13, parent_width / 3, parent_height / 16);
  338.         lv_label_set_text(label13, "(T7)waiting time:");
  339.         lv_label_set_long_mode(label13, LV_LABEL_LONG_SCROLL);
  340.         lv_obj_align_to(label13, textarea13, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  341.                  sprintf(ta_buf, "%d", APP_Para.Type);
  342.                  
  343.         lv_obj_t* textarea14 = lv_textarea_create(parent);
  344.         lv_obj_set_size(textarea14, parent_width / 3 * 2 - 20, parent_height / 16);
  345.         lv_textarea_set_max_length(textarea14, 10);
  346.         lv_obj_align_to(textarea14, textarea13, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  347.         lv_textarea_set_text(textarea14, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  348.         lv_textarea_set_one_line(textarea14, true);                //单行模式

  349.         lv_obj_t* label14 = lv_label_create(parent);
  350.         lv_obj_set_size(label14, parent_width / 3, parent_height / 16);
  351.         lv_label_set_text(label14, "type:");
  352.         lv_label_set_long_mode(label14, LV_LABEL_LONG_SCROLL);
  353.         lv_obj_align_to(label14, textarea14, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  354.                 sprintf(ta_buf, "%s", APP_Para.login_ID);
  355.                
  356.         lv_obj_t* textarea15 = lv_textarea_create(parent);
  357.         lv_obj_set_size(textarea15, parent_width / 3 * 2 - 20, parent_height / 16);
  358.         lv_textarea_set_max_length(textarea15, 14);
  359.         lv_obj_align_to(textarea15, textarea14, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  360.         lv_textarea_set_text(textarea15, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  361.         lv_textarea_set_one_line(textarea15, true);                //单行模式

  362.         lv_obj_t* label15 = lv_label_create(parent);
  363.         lv_obj_set_size(label15, parent_width / 3, parent_height / 16);
  364.         lv_label_set_text(label15, "loginID:");
  365.         lv_label_set_long_mode(label15, LV_LABEL_LONG_SCROLL);
  366.         lv_obj_align_to(label15, textarea15, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  367.                  sprintf(ta_buf, "%s", APP_Para.login_PWD);
  368.                
  369.         lv_obj_t* textarea16 = lv_textarea_create(parent);
  370.         lv_obj_set_size(textarea16, parent_width / 3 * 2 - 20, parent_height / 16);
  371.         lv_textarea_set_max_length(textarea16, 14);
  372.         lv_obj_align_to(textarea16, textarea15, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  373.         lv_textarea_set_text(textarea16, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  374.         lv_textarea_set_one_line(textarea16, true);                //单行模式

  375.         lv_obj_t* label16 = lv_label_create(parent);
  376.         lv_obj_set_size(label16, parent_width / 3, parent_height / 16);
  377.         lv_label_set_text(label16, "loginPWD:");
  378.         lv_label_set_long_mode(label16, LV_LABEL_LONG_SCROLL);
  379.         lv_obj_align_to(label16, textarea16, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  380.                  sprintf(ta_buf, "%s", APP_Para.wifi_ID);
  381.                
  382.         lv_obj_t* textarea17 = lv_textarea_create(parent);
  383.         lv_obj_set_size(textarea17, parent_width / 3 * 2 - 20, parent_height / 16);
  384.         lv_textarea_set_max_length(textarea17, 14);
  385.         lv_obj_align_to(textarea17, textarea16, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  386.         lv_textarea_set_text(textarea17, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  387.         lv_textarea_set_one_line(textarea17, true);                //单行模式

  388.         lv_obj_t* label17 = lv_label_create(parent);
  389.         lv_obj_set_size(label17, parent_width / 3, parent_height / 16);
  390.         lv_label_set_text(label17, "wifiID:");
  391.         lv_label_set_long_mode(label17, LV_LABEL_LONG_SCROLL);
  392.         lv_obj_align_to(label17, textarea17, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  393.                  sprintf(ta_buf, "%s", APP_Para.wifi_PWD);
  394.                
  395.         lv_obj_t* textarea18 = lv_textarea_create(parent);
  396.         lv_obj_set_size(textarea18, parent_width / 3 * 2 - 20, parent_height / 16);
  397.         lv_textarea_set_max_length(textarea18, 14);
  398.         lv_obj_align_to(textarea18, textarea17, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  399.         lv_textarea_set_text(textarea18, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  400.         lv_textarea_set_one_line(textarea18, true);                //单行模式

  401.         lv_obj_t* label18 = lv_label_create(parent);
  402.         lv_obj_set_size(label18, parent_width / 3, parent_height / 16);
  403.         lv_label_set_text(label18, "wifiPWD:");
  404.         lv_label_set_long_mode(label18, LV_LABEL_LONG_SCROLL);
  405.         lv_obj_align_to(label18, textarea18, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  406.                  sprintf(ta_buf, "%s", APP_Para.wifi_server_IP);
  407.                
  408.         lv_obj_t* textarea19 = lv_textarea_create(parent);
  409.         lv_obj_set_size(textarea19, parent_width / 3 * 2 - 20, parent_height / 16);
  410.         lv_textarea_set_max_length(textarea19, 14);
  411.         lv_obj_align_to(textarea19, textarea18, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  412.         lv_textarea_set_text(textarea19, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  413.         lv_textarea_set_one_line(textarea19, true);                //单行模式

  414.         lv_obj_t* label19 = lv_label_create(parent);
  415.         lv_obj_set_size(label19, parent_width / 3, parent_height / 16);
  416.         lv_label_set_text(label19, "serverIP:");
  417.         lv_label_set_long_mode(label19, LV_LABEL_LONG_SCROLL);
  418.         lv_obj_align_to(label19, textarea19, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  419.                  sprintf(ta_buf, "%s", APP_Para.wifi_server_PORT);        
  420.         lv_obj_t* textarea20 = lv_textarea_create(parent);
  421.         lv_obj_set_size(textarea20, parent_width / 3 * 2 - 20, parent_height / 16);
  422.         lv_textarea_set_max_length(textarea20, 5);
  423.         lv_obj_align_to(textarea20, textarea19, LV_ALIGN_OUT_BOTTOM_MID, 0, 0);
  424.         lv_textarea_set_text(textarea20, ta_buf); //将读取flash到 结构体后 的字符串设置到这里
  425.         lv_textarea_set_one_line(textarea20, true);                //单行模式

  426.         lv_obj_t* label20 = lv_label_create(parent);
  427.         lv_obj_set_size(label20, parent_width / 3, parent_height / 16);
  428.         lv_label_set_text(label20, "serverPort:");
  429.         lv_label_set_long_mode(label20, LV_LABEL_LONG_SCROLL);
  430.         lv_obj_align_to(label20, textarea20, LV_ALIGN_OUT_LEFT_MID, 0, 0);

  431.    

  432.     lv_obj_t* kb = lv_keyboard_create(parent);      //创建键盘,点击textarea才显示
  433.     lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);            //隐藏
  434.     lv_keyboard_set_textarea(kb, textarea1);           //先把键盘关联到textarea1

  435. //好像白屏 和键盘有关。。。尽量不要在这多停留吧。
  436. /*   //添加全部事件 会频繁的进入 事件回调函数  ,死机白屏 可能就是因为这个 。tips: 非必要事件不要开启。
  437.     lv_obj_add_event_cb(textarea1, textarea_event_cb, LV_EVENT_ALL, kb);
  438.     lv_obj_add_event_cb(textarea2, textarea_event_cb, LV_EVENT_ALL, kb);
  439.     lv_obj_add_event_cb(textarea3, textarea_event_cb, LV_EVENT_ALL, kb);
  440.     lv_obj_add_event_cb(textarea4, textarea_event_cb, LV_EVENT_ALL, kb);
  441.     lv_obj_add_event_cb(textarea5, textarea_event_cb, LV_EVENT_ALL, kb);
  442.     lv_obj_add_event_cb(textarea6, textarea_event_cb, LV_EVENT_ALL, kb);
  443.     lv_obj_add_event_cb(textarea7, textarea_event_cb, LV_EVENT_ALL, kb);
  444.     lv_obj_add_event_cb(textarea8, textarea_event_cb, LV_EVENT_ALL, kb);
  445.     lv_obj_add_event_cb(textarea9, textarea_event_cb, LV_EVENT_ALL, kb);
  446.     lv_obj_add_event_cb(textarea10, textarea_event_cb, LV_EVENT_ALL, kb);
  447.     lv_obj_add_event_cb(textarea11, textarea_event_cb, LV_EVENT_ALL, kb);
  448.     lv_obj_add_event_cb(textarea12, textarea_event_cb, LV_EVENT_ALL, kb);
  449.     lv_obj_add_event_cb(textarea13, textarea_event_cb, LV_EVENT_ALL, kb);
  450.     lv_obj_add_event_cb(textarea14, textarea_event_cb, LV_EVENT_ALL, kb);
  451.     lv_obj_add_event_cb(textarea15, textarea_event_cb, LV_EVENT_ALL, kb);
  452.     lv_obj_add_event_cb(textarea16, textarea_event_cb, LV_EVENT_ALL, kb);
  453.     lv_obj_add_event_cb(textarea17, textarea_event_cb, LV_EVENT_ALL, kb);
  454.     lv_obj_add_event_cb(textarea18, textarea_event_cb, LV_EVENT_ALL, kb);
  455.     lv_obj_add_event_cb(textarea19, textarea_event_cb, LV_EVENT_ALL, kb);
  456.     lv_obj_add_event_cb(textarea20, textarea_event_cb, LV_EVENT_ALL, kb);
  457. */        

  458.                 //只添加必要的触发事件
  459.                 lv_obj_add_event_cb(textarea1, textarea_event_cb, LV_EVENT_CLICKED, kb);
  460.     lv_obj_add_event_cb(textarea1, textarea_event_cb, LV_EVENT_READY, kb); //添加更多事件
  461.     lv_obj_add_event_cb(textarea1, textarea_event_cb, LV_EVENT_CANCEL, kb);

  462.     lv_obj_add_event_cb(textarea2, textarea_event_cb, LV_EVENT_CLICKED, kb);
  463.     lv_obj_add_event_cb(textarea2, textarea_event_cb, LV_EVENT_READY, kb);
  464.     lv_obj_add_event_cb(textarea2, textarea_event_cb, LV_EVENT_CANCEL, kb);

  465.     lv_obj_add_event_cb(textarea3, textarea_event_cb, LV_EVENT_CLICKED, kb);
  466.     lv_obj_add_event_cb(textarea3, textarea_event_cb, LV_EVENT_READY, kb);
  467.     lv_obj_add_event_cb(textarea3, textarea_event_cb, LV_EVENT_CANCEL, kb);

  468.     lv_obj_add_event_cb(textarea4, textarea_event_cb, LV_EVENT_CLICKED, kb);
  469.     lv_obj_add_event_cb(textarea4, textarea_event_cb, LV_EVENT_READY, kb);
  470.     lv_obj_add_event_cb(textarea4, textarea_event_cb, LV_EVENT_CANCEL, kb);

  471.     lv_obj_add_event_cb(textarea5, textarea_event_cb, LV_EVENT_CLICKED, kb);
  472.     lv_obj_add_event_cb(textarea5, textarea_event_cb, LV_EVENT_READY, kb);
  473.     lv_obj_add_event_cb(textarea5, textarea_event_cb, LV_EVENT_CANCEL, kb);

  474.     lv_obj_add_event_cb(textarea6, textarea_event_cb, LV_EVENT_CLICKED, kb);
  475.     lv_obj_add_event_cb(textarea6, textarea_event_cb, LV_EVENT_READY, kb);
  476.     lv_obj_add_event_cb(textarea6, textarea_event_cb, LV_EVENT_CANCEL, kb);

  477.     lv_obj_add_event_cb(textarea7, textarea_event_cb, LV_EVENT_CLICKED, kb);
  478.     lv_obj_add_event_cb(textarea7, textarea_event_cb, LV_EVENT_READY, kb);
  479.     lv_obj_add_event_cb(textarea7, textarea_event_cb, LV_EVENT_CANCEL, kb);

  480.     lv_obj_add_event_cb(textarea8, textarea_event_cb, LV_EVENT_CLICKED, kb);
  481.     lv_obj_add_event_cb(textarea8, textarea_event_cb, LV_EVENT_READY, kb);
  482.     lv_obj_add_event_cb(textarea8, textarea_event_cb, LV_EVENT_CANCEL, kb);

  483.     lv_obj_add_event_cb(textarea9, textarea_event_cb, LV_EVENT_CLICKED, kb);
  484.     lv_obj_add_event_cb(textarea9, textarea_event_cb, LV_EVENT_READY, kb);
  485.     lv_obj_add_event_cb(textarea9, textarea_event_cb, LV_EVENT_CANCEL, kb);

  486.     lv_obj_add_event_cb(textarea10, textarea_event_cb, LV_EVENT_CLICKED, kb);
  487.     lv_obj_add_event_cb(textarea10, textarea_event_cb, LV_EVENT_READY, kb);
  488.     lv_obj_add_event_cb(textarea10, textarea_event_cb, LV_EVENT_CANCEL, kb);

  489.     lv_obj_add_event_cb(textarea11, textarea_event_cb, LV_EVENT_CLICKED, kb);
  490.     lv_obj_add_event_cb(textarea11, textarea_event_cb, LV_EVENT_READY, kb);
  491.     lv_obj_add_event_cb(textarea11, textarea_event_cb, LV_EVENT_CANCEL, kb);

  492.     lv_obj_add_event_cb(textarea12, textarea_event_cb, LV_EVENT_CLICKED, kb);
  493.     lv_obj_add_event_cb(textarea12, textarea_event_cb, LV_EVENT_READY, kb);
  494.     lv_obj_add_event_cb(textarea12, textarea_event_cb, LV_EVENT_CANCEL, kb);

  495.     lv_obj_add_event_cb(textarea13, textarea_event_cb, LV_EVENT_CLICKED, kb);
  496.     lv_obj_add_event_cb(textarea13, textarea_event_cb, LV_EVENT_READY, kb);
  497.     lv_obj_add_event_cb(textarea13, textarea_event_cb, LV_EVENT_CANCEL, kb);

  498.     lv_obj_add_event_cb(textarea14, textarea_event_cb, LV_EVENT_CLICKED, kb);
  499.     lv_obj_add_event_cb(textarea14, textarea_event_cb, LV_EVENT_READY, kb);
  500.     lv_obj_add_event_cb(textarea14, textarea_event_cb, LV_EVENT_CANCEL, kb);

  501.     lv_obj_add_event_cb(textarea15, textarea_event_cb, LV_EVENT_CLICKED, kb);
  502.     lv_obj_add_event_cb(textarea15, textarea_event_cb, LV_EVENT_READY, kb);
  503.     lv_obj_add_event_cb(textarea15, textarea_event_cb, LV_EVENT_CANCEL, kb);

  504.     lv_obj_add_event_cb(textarea16, textarea_event_cb, LV_EVENT_CLICKED, kb);
  505.     lv_obj_add_event_cb(textarea16, textarea_event_cb, LV_EVENT_READY, kb);
  506.     lv_obj_add_event_cb(textarea16, textarea_event_cb, LV_EVENT_CANCEL, kb);

  507.     lv_obj_add_event_cb(textarea17, textarea_event_cb, LV_EVENT_CLICKED, kb);
  508.     lv_obj_add_event_cb(textarea17, textarea_event_cb, LV_EVENT_READY, kb);
  509.     lv_obj_add_event_cb(textarea17, textarea_event_cb, LV_EVENT_CANCEL, kb);

  510.     lv_obj_add_event_cb(textarea18, textarea_event_cb, LV_EVENT_CLICKED, kb);
  511.     lv_obj_add_event_cb(textarea18, textarea_event_cb, LV_EVENT_READY, kb);
  512.     lv_obj_add_event_cb(textarea18, textarea_event_cb, LV_EVENT_CANCEL, kb);

  513.     lv_obj_add_event_cb(textarea19, textarea_event_cb, LV_EVENT_CLICKED, kb);
  514.     lv_obj_add_event_cb(textarea19, textarea_event_cb, LV_EVENT_READY, kb);
  515.     lv_obj_add_event_cb(textarea19, textarea_event_cb, LV_EVENT_CANCEL, kb);

  516.     lv_obj_add_event_cb(textarea20, textarea_event_cb, LV_EVENT_CLICKED, kb);
  517.     lv_obj_add_event_cb(textarea20, textarea_event_cb, LV_EVENT_READY, kb);
  518.     lv_obj_add_event_cb(textarea20, textarea_event_cb, LV_EVENT_CANCEL, kb);

  519.     userData[0] = lv_obj_get_child_id(return_btn);   //获取各个子对象的id;
  520.     userData[1] = lv_obj_get_child_id(save_btn);
  521.                 //userData[2] = lv_obj_get_child_id(setPage_con);
  522.                
  523.     lv_obj_add_event_cb(return_btn,   btn_event_cb, LV_EVENT_CLICKED, userData);
  524.     lv_obj_add_event_cb(save_btn,     btn_event_cb, LV_EVENT_CLICKED, userData);
  525. }





复制代码

刚跨过大门,入眼是海洋
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2018-2-6
在线时间
12 小时
发表于 2024-2-5 15:00:11 | 显示全部楼层
我的战舰V3 下载原子官方的 LVGL 例程,  所有例程下载到开发板  4.3寸的MCU TFTLCD  都是 白屏,   你们遇到过这种情况吗?
回复

使用道具 举报

3

主题

5

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-10-31
在线时间
3 小时
发表于 2024-2-26 16:35:56 | 显示全部楼层
xiaozhang123 发表于 2024-2-5 15:00
我的战舰V3 下载原子官方的 LVGL 例程,  所有例程下载到开发板  4.3寸的MCU TFTLCD  都是 白屏,   你们遇到 ...

我也是
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
483
金钱
483
注册时间
2020-10-10
在线时间
114 小时
发表于 2024-4-29 13:29:41 来自手机 | 显示全部楼层
我f407也是  LVGL8.2
回复

使用道具 举报

4

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
483
金钱
483
注册时间
2020-10-10
在线时间
114 小时
发表于 2024-4-29 20:36:21 | 显示全部楼层
xiaozhang123 发表于 2024-2-5 15:00
我的战舰V3 下载原子官方的 LVGL 例程,  所有例程下载到开发板  4.3寸的MCU TFTLCD  都是 白屏,   你们遇到 ...

解决了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:32

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表