776|3

101

帖子

1

TA的资源

一粒金砂(高级)

楼主
 

聆思MCU 分享2 [复制链接]

  本帖最后由 尹小舟 于 2024-3-30 11:16 编辑

实验目的

       我们通过GUI-Guider  使用按键控件 控制板子上的RGB

硬件电路

 

使用GUI-Guider 搭建界面

      1  创建新项目

      

 

     2 选择v8.3.5

 

 

3 选择模拟器

   

4 选择个空的模版

 

5. 选择面板类型

 

选择320*240

6. 搭建界面

 

 

7 添加事件

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

在事件中可以控制其他控件,我们添加3个按键控制显示旁边的提示器

 

9  生成C代码

 

 

10 导出Zephyr 代码

 

 

MCU 代码实现

聆思MCU 使用的是Zephyr RTOS ,它本身就就集成了LVGL ,将代码直接复制过去就好了

1 ,  要在prj.conf 加入GPIO和SPI LCD 的内容

CONFIG_GPIO=y
CONFIG_GPIO_CSK6_CH32V003=y

 

CONFIG_SPI=y
CONFIG_ST7789V=y

CONFIG_I2C=y
CONFIG_KSCAN=y
CONFIG_KSCAN_FT5336=y
CONFIG_KSCAN_FT5336_INTERRUPT=y

 

CONFIG_LV_Z_DISPLAY_DEV_NAME="ST7789V"
CONFIG_LV_Z_HOR_RES_MAX=320
CONFIG_LV_Z_VER_RES_MAX=480
CONFIG_LV_Z_POINTER_KSCAN=y
CONFIG_LV_Z_POINTER_KSCAN_DEV_NAME="FT5336"

 

2 在events_init.c中添加RGB 控制代码

#include "events_init.h"
#include <stdio.h>
#include "lvgl.h"

#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>

#define RGB_R_NODE    DT_ALIAS(led_rgb_red)
#define RGB_G_NODE    DT_ALIAS(led_rgb_green)
#define RGB_B_NODE    DT_ALIAS(led_rgb_blue)

static const struct gpio_dt_spec rgb_r = GPIO_DT_SPEC_GET(RGB_R_NODE, gpios);
static const struct gpio_dt_spec rgb_g = GPIO_DT_SPEC_GET(RGB_G_NODE, gpios);
static const struct gpio_dt_spec rgb_b = GPIO_DT_SPEC_GET(RGB_B_NODE, gpios);

int ret;
//rgb_b
static void screen_btn_1_event_handler (lv_event_t *e)   
{
	lv_event_code_t code = lv_event_get_code(e);

	switch (code) {
	case LV_EVENT_CLICKED:
	{
		lv_obj_add_flag(guider_ui.screen_led_3, LV_OBJ_FLAG_HIDDEN);
		lv_obj_add_flag(guider_ui.screen_led_2, LV_OBJ_FLAG_HIDDEN);
		lv_obj_clear_flag(guider_ui.screen_led_1, LV_OBJ_FLAG_HIDDEN);
        gpio_pin_set_dt(&rgb_r,GPIO_ACTIVE_HIGH);
	    gpio_pin_set_dt(&rgb_g,GPIO_ACTIVE_HIGH);
	    gpio_pin_set_dt(&rgb_b,GPIO_ACTIVE_LOW );
		break;
	}
	default:
		break;
	}
}

//rgb_g
static void screen_btn_2_event_handler (lv_event_t *e)
{
	lv_event_code_t code = lv_event_get_code(e);

	switch (code) {
	case LV_EVENT_CLICKED:
	{
		lv_obj_add_flag(guider_ui.screen_led_3, LV_OBJ_FLAG_HIDDEN);
		lv_obj_clear_flag(guider_ui.screen_led_2, LV_OBJ_FLAG_HIDDEN);
		lv_obj_add_flag(guider_ui.screen_led_1, LV_OBJ_FLAG_HIDDEN);
		gpio_pin_set_dt(&rgb_r,GPIO_ACTIVE_HIGH);
		gpio_pin_set_dt(&rgb_b,GPIO_ACTIVE_HIGH );
	    gpio_pin_set_dt(&rgb_g,GPIO_ACTIVE_LOW);
	
		break;
	}
	default:
		break;
	}
}

//rgb_
static void screen_btn_3_event_handler (lv_event_t *e)
{
	lv_event_code_t code = lv_event_get_code(e);

	switch (code) {
	case LV_EVENT_CLICKED:
	{
		lv_obj_clear_flag(guider_ui.screen_led_3, LV_OBJ_FLAG_HIDDEN);
		lv_obj_add_flag(guider_ui.screen_led_2, LV_OBJ_FLAG_HIDDEN);
		lv_obj_add_flag(guider_ui.screen_led_1, LV_OBJ_FLAG_HIDDEN);
		gpio_pin_set_dt(&rgb_g,GPIO_ACTIVE_HIGH);
		gpio_pin_set_dt(&rgb_b,GPIO_ACTIVE_HIGH );
	    gpio_pin_set_dt(&rgb_r,GPIO_ACTIVE_LOW);
		break;
	}
	default:
		break;
	}
}
void events_init_screen(lv_ui *ui)
{
	lv_obj_add_event_cb(ui->screen_btn_1, screen_btn_1_event_handler, LV_EVENT_ALL, NULL);
	lv_obj_add_event_cb(ui->screen_btn_2, screen_btn_2_event_handler, LV_EVENT_ALL, NULL);
	lv_obj_add_event_cb(ui->screen_btn_3, screen_btn_3_event_handler, LV_EVENT_ALL, NULL);
}

void events_init(lv_ui *ui)
{

    gpio_is_ready_dt(&rgb_r);
	gpio_is_ready_dt(&rgb_b);
	gpio_is_ready_dt(&rgb_g);
	
	gpio_pin_configure_dt(&rgb_r, GPIO_OUTPUT_ACTIVE);
	gpio_pin_configure_dt(&rgb_g, GPIO_OUTPUT_ACTIVE);
	gpio_pin_configure_dt(&rgb_b, GPIO_OUTPUT_ACTIVE);
	
	
	gpio_pin_set_dt(&rgb_r,GPIO_ACTIVE_HIGH);
	gpio_pin_set_dt(&rgb_g,GPIO_ACTIVE_HIGH);
	gpio_pin_set_dt(&rgb_b,GPIO_ACTIVE_LOW );
}

    通过GPIO_DT_SPEC_GET获取GPIO 在设备树的配置

    就可以使用gpio_pin_set_dt函数驱动GPIO了

 

编译下载

在工程目录下打开控制台 可以使用如下命令下载编译

               编译  lisa zep build -b csk6_duomotai_devkit -p

               下载  lisa zep flash -r pyocd --frequency 20000000

 

 

最新回复

聆思MCU ? 怎么界面上有NXP?   详情 回复 发表于 2024-4-15 18:53
点赞 关注
 
 

回复
举报

1130

帖子

1

TA的资源

五彩晶圆(初级)

沙发
 

感谢分享!点赞楼主!

貌似这个NXP的GUI Guider竟然还支持micropython

 
 
 

回复

7462

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

聆思MCU ? 怎么界面上有NXP?

点评

这个LVGL的上位机是NXP的  详情 回复 发表于 2024-4-20 16:55
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

101

帖子

1

TA的资源

一粒金砂(高级)

4
 
freebsder 发表于 2024-4-15 18:53 聆思MCU ? 怎么界面上有NXP?

这个LVGL的上位机是NXP的

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表