<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[使用FR8008GP-U LVGLDemo 创建控件反复重启]]></title><description><![CDATA[<p>使用FR8008GP-U LVGLDemo创建控件反复重启<br />
工程：fr8000u_sdk\examples\evm\gui_demo_8_1_BLE<br />
修改部分：将蓝牙，PSRAM部分和触摸都去掉了，初始化LVGL和LCD7789驱动都没问题，只要我创建LVGL控件，芯片就会复位</p>
<p>屏蔽掉创建按键就不会复位了，是不是栈和堆溢出，如果是在哪设置呢</p>
<p>static void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)<br />
{<br />
		st7789v_disp_flush(area-&gt;x1,area-&gt;x2,area-&gt;y1,area-&gt;y2,color_p-&gt;full);<br />
		lv_disp_flush_ready(disp);<br />
}</p>
<p>void gui_main(void)<br />
{<br />
//touchpad_init(NULL);<br />
display_init();</p>
<pre><code>lv_init();
	static lv_disp_draw_buf_t draw_buf_dsc_1;;
	static lv_color_t buf_1[LV_BUFFER_SIZE];
</code></pre>
<p>//    static uint16_t buf[LV_BUFFER_SIZE];<br />
//    lv_disp_buf_init(&amp;disp_buf, buf, NULL, LV_BUFFER_SIZE);    /<em>Initialize the display buffer</em>/<br />
//    lv_disp_draw_buf_init(&amp;disp_buf, (void <em>)0x22000000, (void <em>)0x22050000/</em>(0x22000000+LV_HOR_RES_MAX * LV_VER_RES_MAX * sizeof(lv_color_t))</em>/, LV_HOR_RES_MAX * LV_VER_RES_MAX);    /<em>Initialize the display buffer</em>/<br />
		lv_disp_draw_buf_init(&amp;draw_buf_dsc_1,buf_1,NULL,LV_BUFFER_SIZE);</p>
<pre><code>/* Implement and register a function which can copy the rendered image to an area of your display */
static lv_disp_drv_t disp_drv;               /*Descriptor of a display driver*/
lv_disp_drv_init(&amp;disp_drv);          /*Basic initialization*/
disp_drv.flush_cb = my_disp_flush;    /*Set your driver function*/
disp_drv.draw_buf = &amp;draw_buf_dsc_1;        /*Assign the buffer to the display*/
disp_drv.hor_res = LV_HOR_RES_MAX;
disp_drv.ver_res = LV_VER_RES_MAX;
disp_drv.full_refresh = 0;
lv_disp_drv_register(&amp;disp_drv);      /*Finally register the driver*/

/* Implement and register a function which can read an input device. E.g. for a touch pad */
</code></pre>
<p>//    static lv_indev_drv_t indev_drv;                  /<em>Descriptor of a input device driver</em>/<br />
//    lv_indev_drv_init(&amp;indev_drv);             /<em>Basic initialization</em>/<br />
//    indev_drv.type = LV_INDEV_TYPE_POINTER;    /<em>Touch pad is a pointer-like device</em>/<br />
//    indev_drv.read_cb = my_touchpad_read;      /<em>Set your driver function</em>/<br />
//    lv_indev_drv_register(&amp;indev_drv);         /<em>Finally register the driver</em>/</p>
<pre><code>__SYSTEM_TIMER_CLK_ENABLE();
timer_init(Timer0, system_get_clock_config()*1000*LV_TICK_COUNT, TIMER_DIV_NONE);
timer_start(Timer0);
NVIC_SetPriority(TIMER0_IRQn, 5);
NVIC_EnableIRQ(TIMER0_IRQn);

os_timer_init(&amp;lv_schedule_timer, lv_schedule_timer_handler, NULL);
os_timer_start(&amp;lv_schedule_timer, 20, true);
</code></pre>
<p>//    timer_init(Timer1, system_get_clock_config()<em>1000</em>100, TIMER_DIV_NONE);<br />
//    timer_start(Timer1);<br />
//    NVIC_SetPriority(TIMER1_IRQn, 6);<br />
//    NVIC_EnableIRQ(TIMER1_IRQn);</p>
<pre><code>lv_obj_t *myBtn = lv_btn_create(lv_scr_act());                               // ????; ???:??????
lv_obj_set_pos(myBtn, 10, 10);                                               // ????
	lv_obj_set_style_bg_color(myBtn, lv_color_hex(0xFF0000), 0); // ?????
lv_obj_set_size(myBtn, 120, 50);                                             // ????
	lv_obj_center(myBtn);
	//create_btn(lv_scr_act(), 20, 20, 120, 50, &quot;btn1&quot;);
//lv_demo_widgets();
//lv_demo_benchmark();
//lv_ex_calendar_1();
//lv_demo_music();
</code></pre>
<p>}</p>
]]></description><link>http://www.freqchip.net:4567/topic/1880/使用fr8008gp-u-lvgldemo-创建控件反复重启</link><generator>RSS for Node</generator><lastBuildDate>Thu, 06 Aug 2026 13:40:18 GMT</lastBuildDate><atom:link href="http://www.freqchip.net:4567/topic/1880.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Aug 2026 07:57:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 使用FR8008GP-U LVGLDemo 创建控件反复重启 on Invalid Date]]></title><description><![CDATA[<p>使用FR8008GP-U LVGLDemo创建控件反复重启<br />
工程：fr8000u_sdk\examples\evm\gui_demo_8_1_BLE<br />
修改部分：将蓝牙，PSRAM部分和触摸都去掉了，初始化LVGL和LCD7789驱动都没问题，只要我创建LVGL控件，芯片就会复位</p>
<p>屏蔽掉创建按键就不会复位了，是不是栈和堆溢出，如果是在哪设置呢</p>
<p>static void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p)<br />
{<br />
		st7789v_disp_flush(area-&gt;x1,area-&gt;x2,area-&gt;y1,area-&gt;y2,color_p-&gt;full);<br />
		lv_disp_flush_ready(disp);<br />
}</p>
<p>void gui_main(void)<br />
{<br />
//touchpad_init(NULL);<br />
display_init();</p>
<pre><code>lv_init();
	static lv_disp_draw_buf_t draw_buf_dsc_1;;
	static lv_color_t buf_1[LV_BUFFER_SIZE];
</code></pre>
<p>//    static uint16_t buf[LV_BUFFER_SIZE];<br />
//    lv_disp_buf_init(&amp;disp_buf, buf, NULL, LV_BUFFER_SIZE);    /<em>Initialize the display buffer</em>/<br />
//    lv_disp_draw_buf_init(&amp;disp_buf, (void <em>)0x22000000, (void <em>)0x22050000/</em>(0x22000000+LV_HOR_RES_MAX * LV_VER_RES_MAX * sizeof(lv_color_t))</em>/, LV_HOR_RES_MAX * LV_VER_RES_MAX);    /<em>Initialize the display buffer</em>/<br />
		lv_disp_draw_buf_init(&amp;draw_buf_dsc_1,buf_1,NULL,LV_BUFFER_SIZE);</p>
<pre><code>/* Implement and register a function which can copy the rendered image to an area of your display */
static lv_disp_drv_t disp_drv;               /*Descriptor of a display driver*/
lv_disp_drv_init(&amp;disp_drv);          /*Basic initialization*/
disp_drv.flush_cb = my_disp_flush;    /*Set your driver function*/
disp_drv.draw_buf = &amp;draw_buf_dsc_1;        /*Assign the buffer to the display*/
disp_drv.hor_res = LV_HOR_RES_MAX;
disp_drv.ver_res = LV_VER_RES_MAX;
disp_drv.full_refresh = 0;
lv_disp_drv_register(&amp;disp_drv);      /*Finally register the driver*/

/* Implement and register a function which can read an input device. E.g. for a touch pad */
</code></pre>
<p>//    static lv_indev_drv_t indev_drv;                  /<em>Descriptor of a input device driver</em>/<br />
//    lv_indev_drv_init(&amp;indev_drv);             /<em>Basic initialization</em>/<br />
//    indev_drv.type = LV_INDEV_TYPE_POINTER;    /<em>Touch pad is a pointer-like device</em>/<br />
//    indev_drv.read_cb = my_touchpad_read;      /<em>Set your driver function</em>/<br />
//    lv_indev_drv_register(&amp;indev_drv);         /<em>Finally register the driver</em>/</p>
<pre><code>__SYSTEM_TIMER_CLK_ENABLE();
timer_init(Timer0, system_get_clock_config()*1000*LV_TICK_COUNT, TIMER_DIV_NONE);
timer_start(Timer0);
NVIC_SetPriority(TIMER0_IRQn, 5);
NVIC_EnableIRQ(TIMER0_IRQn);

os_timer_init(&amp;lv_schedule_timer, lv_schedule_timer_handler, NULL);
os_timer_start(&amp;lv_schedule_timer, 20, true);
</code></pre>
<p>//    timer_init(Timer1, system_get_clock_config()<em>1000</em>100, TIMER_DIV_NONE);<br />
//    timer_start(Timer1);<br />
//    NVIC_SetPriority(TIMER1_IRQn, 6);<br />
//    NVIC_EnableIRQ(TIMER1_IRQn);</p>
<pre><code>lv_obj_t *myBtn = lv_btn_create(lv_scr_act());                               // ????; ???:??????
lv_obj_set_pos(myBtn, 10, 10);                                               // ????
	lv_obj_set_style_bg_color(myBtn, lv_color_hex(0xFF0000), 0); // ?????
lv_obj_set_size(myBtn, 120, 50);                                             // ????
	lv_obj_center(myBtn);
	//create_btn(lv_scr_act(), 20, 20, 120, 50, &quot;btn1&quot;);
//lv_demo_widgets();
//lv_demo_benchmark();
//lv_ex_calendar_1();
//lv_demo_music();
</code></pre>
<p>}</p>
]]></description><link>http://www.freqchip.net:4567/post/4606</link><guid isPermaLink="true">http://www.freqchip.net:4567/post/4606</guid><dc:creator><![CDATA[yjx]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>