请选择 进入手机版 | 继续访问电脑版
查看: 1088|回复: 2

[主题月] 4月主题月:IMXRT1062显示界面

[复制链接]
  • TA的每日心情
    奋斗
    2022-10-24 09:14
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    1

    主题

    21

    帖子

    0

    注册会员

    Rank: 2

    积分
    171
    最后登录
    2022-10-25
    发表于 2022-5-3 00:01:35 | 显示全部楼层 |阅读模式

    有幸得到一块IMXRT1062开发板,所以主题月发一个IMXRT1062GUI开发。
    NXP在其很多单片机上做了LVGL的移植,同时还出了一款GUI Guider设计器,且一直在更新,所以本次就使用此软件完成设计开发。如下:
    图片14.png
    软件下载最新的安装,目前已经支持两代了,LVGL7和8.我们在mcu那里选择MIMXRT1062这个是比较接近我们开发板,但是我们开发板提供的分辨率和官方的是不一致的,所以我们需要自己定义下板子的宽高。 图片15.png
    之后我们在设计器中简单拖动一个switch按钮。然后生成代码,最后点击run target生成我们的keil代码,这里不使用官方的,因为不能修改代码。
    直接烧写工程是啥也不显示的,分辨率不一致。
    下面讲下修改那些地方修改分辨率。
    图片16.png 初始化屏幕这里,需要重新修改这两个宏。
    图片17.png 图片18.png 之后开头定义的地方这些也都得修改成新屏幕的。
    图片19.jpg 然后我们的按钮就显示出来了,后续我们通过添加其他代码来进行控制。
    注意到这里还有点偏色,我们需要修改下,LCD管脚初始化。
    图片20.png 多添加几个管脚。
    图片21.png 然后这里也需要从16修改成24bit。
    图片22.jpg 这样的状态就是正常的,后续我们接着添加控制代码吧。




    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    3 天前
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3297

    主题

    6542

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31909
    最后登录
    2024-3-29
    发表于 2022-5-5 09:03:38 | 显示全部楼层
    晚上发布,晚上还在学习,辛苦辛苦,支持一下
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2022-10-24 09:14
  • 签到天数: 13 天

    [LV.3]偶尔看看II

    1

    主题

    21

    帖子

    0

    注册会员

    Rank: 2

    积分
    171
    最后登录
    2022-10-25
     楼主| 发表于 2022-5-5 23:15:15 | 显示全部楼层
    1651763009663.gif 5d2136cb060233497d6152c44373da9.jpg
    本次更新一下触摸部分功能,完成了GT911的驱动,下面看下代码。
    #include "fsl_common.h"
    #include "fsl_lpi2c.h"
    #include "fsl_gt911_rt.h"


    #include "fsl_debug_console.h"
    #include "fsl_gpio.h"
    #include "FreeRTOS.h"
    #include "task.h"


    GT911_Dev Dev_Now,Dev_Backup;


    /*
    *********************************************************************************************************
    *        函 数 名: GT811_WriteReg
    *        功能说明: 写1个或连续的多个寄存器
    *        形    参: _usRegAddr : 寄存器地址
    *                          _pRegBuf : 寄存器数据缓冲区
    *                         _ucLen : 数据长度
    *        返 回 值: 无
    *********************************************************************************************************
    */
    static int GT911_WriteReg(uint16_t _usRegAddr, uint8_t *_pRegBuf, uint8_t _ucLen)
    {
            uint8_t i;

    //    i2c_Start();                                        /* 总线开始信号 */

    //    i2c_SendByte(g_GT811.i2c_addr);        /* 发送设备地址+写信号 */
    //        i2c_WaitAck();

    //    i2c_SendByte(_usRegAddr >> 8);        /* 地址高8位 */
    //        i2c_WaitAck();

    //    i2c_SendByte(_usRegAddr);                /* 地址低8位 */
    //        i2c_WaitAck();

    //        for (i = 0; i < _ucLen; i++)
    //        {
    //            i2c_SendByte(_pRegBuf);  /* 寄存器数据 */
    //                i2c_WaitAck();
    //        }

    //    i2c_Stop();                           /* 总线停止信号 */
           

    //    i2c_Start();                                        /* 总线开始信号 */

    //    i2c_SendByte(GT_CMD_WR);        /* 发送设备地址+写信号 */
    //        if (i2c_WaitAck() != 0)
    //        {
    //                goto cmd_fail;       
    //        }
           
            status_t reVal = kStatus_Fail;
           
            uint8_t addr;
       
        /* Send master blocking data to slave */
        if (kStatus_Success != LPI2C_MasterStart(GT911_I2C, GT_CMD_WR, kLPI2C_Write))                //起始信号
        {
            return -1;
        }
            /* Check communicate with slave successful or not */
        if (LPI2C_MasterGetStatusFlags(GT911_I2C) & kLPI2C_MasterNackDetectFlag)                        //等待应答
        {
            return kStatus_LPI2C_Nak;
        }
           

            addr = _usRegAddr>>8;
            reVal = LPI2C_MasterSend(GT911_I2C, (uint8_t *)&addr, 1);
        if (reVal != kStatus_Success)
        {
            if (reVal == kStatus_LPI2C_Nak)
            {
                LPI2C_MasterStop(GT911_I2C);
            }
            return -1;
            }
           

            addr = _usRegAddr;
             reVal = LPI2C_MasterSend(GT911_I2C, (uint8_t *)&addr, 1);
        if (reVal != kStatus_Success)
        {
            if (reVal == kStatus_LPI2C_Nak)
            {
                LPI2C_MasterStop(GT911_I2C);
            }
            return -1;
            }

            for (i = 0; i < _ucLen; i++)
            {
                    reVal = LPI2C_MasterSend(GT911_I2C, &_pRegBuf, 1);                                                                                        //发送
                    if (reVal != kStatus_Success)
                    {
                            if (reVal == kStatus_LPI2C_Nak)
                            {
                                    LPI2C_MasterStop(GT911_I2C);
                            }
                            return -1;
                    }
                   
            }
           

           
            reVal = LPI2C_MasterStop(GT911_I2C);
        if (reVal != kStatus_Success)
        {
            return -1;
        }
       
           
            return 1;
           
           

    }


    static int GT911_ReadReg(uint16_t _usRegAddr, uint8_t *_pRegBuf, uint8_t _ucLen)
    {
            int16_t i;

    //    i2c_Start();                                        /* 总线开始信号 */

    //    i2c_SendByte(GT_CMD_WR);        /* 发送设备地址+写信号 */
    //        if (i2c_WaitAck() != 0)
    //        {
    //                goto cmd_fail;       
    //        }
           
            status_t reVal = kStatus_Fail;
           
            uint8_t addr;
       
        /* Send master blocking data to slave */
        if (kStatus_Success != LPI2C_MasterStart(GT911_I2C, GT_CMD_WR, kLPI2C_Write))                //起始信号
        {
            return -1;
        }
            /* Check communicate with slave successful or not */
        if (LPI2C_MasterGetStatusFlags(GT911_I2C) & kLPI2C_MasterNackDetectFlag)                        //等待应答
        {
            return kStatus_LPI2C_Nak;
        }
           
    //       
    //    i2c_SendByte(_usRegAddr >> 8);        /* 地址高8位 */
    //        if (i2c_WaitAck() != 0)
    //        {
    //                goto cmd_fail;       
    //        }
            addr = _usRegAddr>>8;
            reVal = LPI2C_MasterSend(GT911_I2C, (uint8_t *)&addr, 1);
        if (reVal != kStatus_Success)
        {
            if (reVal == kStatus_LPI2C_Nak)
            {
                LPI2C_MasterStop(GT911_I2C);
            }
            return -1;
            }
           
    //    i2c_SendByte(_usRegAddr);                /* 地址低8位 */
    //        if (i2c_WaitAck() != 0)
    //        {
    //                goto cmd_fail;       
    //        }
            addr = _usRegAddr;
             reVal = LPI2C_MasterSend(GT911_I2C, (uint8_t *)&addr, 1);
        if (reVal != kStatus_Success)
        {
            if (reVal == kStatus_LPI2C_Nak)
            {
                LPI2C_MasterStop(GT911_I2C);
            }
            return -1;
            }

    //        i2c_Start();
    //    i2c_SendByte(g_GT811.i2c_addr + 0x01);        /* 发送设备地址+读信号 */
    //        if (i2c_WaitAck() != 0)
    //        {
    //                goto cmd_fail;       
    //        }
           
            if (kStatus_Success != LPI2C_MasterStart(GT911_I2C, GT_CMD_WR, kLPI2C_Read)) {        //起始信号
            return -1;
        }
        /* Check communicate with slave successful or not */
        if (LPI2C_MasterGetStatusFlags(GT911_I2C) & kLPI2C_MasterNackDetectFlag)                                //等待应答
        {
            return kStatus_LPI2C_Nak;
        }

    //        for (i = 0; i < _ucLen - 1; i++)
    //        {
    //            _pRegBuf = i2c_ReadByte();        /* 读寄存器数据 */
    //                i2c_Ack();
    //        }
            for (i = 0; i < _ucLen; i++)
            {
                    reVal = LPI2C_MasterReceive(GT911_I2C, &_pRegBuf, 1);                                                                                        //接收
                    if (reVal != kStatus_Success)
                    {
                            if (reVal == kStatus_LPI2C_Nak)
                            {
                                    LPI2C_MasterStop(GT911_I2C);
                            }
                            return -1;
                    }
                   
            }
           
    //       
    //        /* 最后一个数据 */
    //         _pRegBuf = i2c_ReadByte();                /* 读寄存器数据 */

    //        i2c_NAck();

    //    i2c_Stop();                                                        /* 总线停止信号 */
           
            reVal = LPI2C_MasterStop(GT911_I2C);
        if (reVal != kStatus_Success)
        {
            return -1;
        }
       
           
            return 1;
           
           
    //cmd_fail: /* 命令执行失败后,切记发送停止信号,避免影响I2C总线上其他设备 */
    //        /* 发送I2C总线停止信号 */
    //        reVal = LPI2C_MasterStop(GT911_I2C);
    //    if (reVal != kStatus_Success)
    //    {
    //        return -1;
    //    }
    //       

    //        return 0;
    }
    /*
    *********************************************************************************************************
    *        函 数 名: GT911_ReadID
    *        功能说明: 获得GT911的芯片ID
    *        形    参: 无
    *        返 回 值: 16位版本
    *********************************************************************************************************
    */
    uint32_t GT911_ReadID(void)
    {
           
            uint8_t buf[5];
            GT911_ReadReg(GT911_PRODUCT_ID_REG, buf, 3);
            GT911_ReadReg(GT911_CONFIG_REG, (uint8_t *)&buf[4], 1);
            PRINTF("TouchPad_ID:%2x,%2x,%2x\r\nTouchPad_Config_Version:%2x\r\n",buf[0],buf[1],buf[2],buf[4]);
            return ((uint32_t)buf[3] << 24) | ((uint32_t)buf[2] << 16) | ((uint32_t)buf[1] <<8) | buf[0];
    //        uint8_t buf[4];

    //        GT911_ReadReg(0x8140, buf, 4);

    //       
    }

    /*
    *********************************************************************************************************
    *        函 数 名: GT911_ReadVersion
    *        功能说明: 获得GT911的芯片版本
    *        形    参: 无
    *        返 回 值: 16位版本
    *********************************************************************************************************
    */
    uint16_t GT911_ReadVersion(void)
    {
            uint8_t buf[2];

            GT911_ReadReg(GT911_FIRMWARE_VERSION_REG, buf, 2);

            return ((uint16_t)buf[1] << 8) + buf[0];
    }

    void gpio_set_dir(GPIO_Type *gpio, uint32_t pin, uint8_t dir)
    {
        gpio_pin_config_t gpio_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
        gpio_config.direction = dir;
        GPIO_PinInit(gpio, pin, &gpio_config);
    }

    #define DEV_RST_PIN                GPIO5,0
    #define DEV_INT_PIN                GPIO5,1
    #define GPIO_PIN_SET        1
    #define GPIO_PIN_RESET        0
    #define DEV_Set_GPIOMode(_pin, _mode)        gpio_set_dir(_pin, _mode==0?kGPIO_DigitalOutput:kGPIO_DigitalInput)
    #define DEV_Digital_Write(_pin, _value)        GPIO_PinWrite(_pin, _value)
    #define DEV_Digital_Read(_pin)                        GPIO_PinRead(_pin)
    #define DEV_Delay_us(x)                                        SDK_DelayAtLeastUs(x, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY)
    #define DEV_Delay_ms(x)                                        SDK_DelayAtLeastUs(1000*x, SDK_DEVICE_MAXIMUM_CPU_CLOCK_FREQUENCY)

    #define HAL_GPIO_WritePin(_pin,_value)        GPIO_PinWrite(_pin, _value)
    status_t GT911_Init()
    {
            uint32_t id;
            status_t status;
           
            uint16_t ver;
           
        gpio_pin_config_t sw_config = {
            kGPIO_DigitalInput,
            0,
                    kGPIO_IntFallingEdge,
        };

           
    //        GPIO_PortClear(GPIO5, 1U << 1);
    //        vTaskDelay(100);
    //        GPIO_PortSet(GPIO5, 1U << 1);
           
            DEV_Set_GPIOMode(DEV_RST_PIN, 0);
            DEV_Set_GPIOMode(DEV_INT_PIN, 0);

            HAL_GPIO_WritePin(DEV_RST_PIN, GPIO_PIN_RESET);
            DEV_Delay_ms(100);
            HAL_GPIO_WritePin(DEV_INT_PIN, GPIO_PIN_RESET);
            DEV_Delay_ms(100);

            HAL_GPIO_WritePin(DEV_RST_PIN, GPIO_PIN_SET);
            DEV_Delay_ms(100);
    //       
    //        HAL_GPIO_WritePin(DEV_INT_PIN, GPIO_PIN_SET);
    //        DEV_Delay_ms(10);
           
    //        HAL_GPIO_WritePin(DEV_INT_PIN, GPIO_PIN_SET);
    //        GPIO_InitStruct.Pin = INT_Pin;
    //  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
    //  GPIO_InitStruct.Pull = GPIO_PULLUP;
    //  HAL_GPIO_Init(INT_GPIO_Port, &GPIO_InitStruct);
           
           
            Dev_Now.Touch = 0;
           
            EnableIRQ(GPIO5_Combined_0_15_IRQn);
            GPIO_PinInit(DEV_INT_PIN, &sw_config);
            GPIO_PortEnableInterrupts(GPIO5, 1U << 1);
           

           
           
    //        DEV_Delay_ms(100);
    //       
            id = GT911_ReadID();
    //        PRINTF("id:0x%X",id);
            ver = GT911_ReadVersion();
           
            PRINTF("GT911 ID :%08X, Version : %04X\r\n", id, ver);
            if (id == 0x00313139)
            {       
                    PRINTF("检测到7.0寸电容触摸屏GT911(0x28) 800x480\r\n");
                    return kStatus_Success;
            }
            else
            {
                    return !kStatus_Success;
            }
           
           
           
           
    }

    //void GPIO5_Combined_0_15_IRQHandler(void) {
    //        GPIO_PortClearInterruptFlags(GPIO5,1<<1);
    ////        Dev_Now.Touch = 1;
    //                PRINTF("触摸中断\r\n");
    //        SDK_ISR_EXIT_BARRIER;
    //  }

    uint8_t lcd_updata=0;
    void GPIO5_Combined_0_15_IRQHandler(void)
    {
            GPIO_PortClearInterruptFlags(GPIO5, 1U << 1);
            if(lcd_updata == 1) return ;
            Dev_Now.Touch = 1;
    //        PRINTF("触摸中断\r\n");
    //        GT911_Scan();
            SDK_ISR_EXIT_BARRIER;
    }

    void GT911_get_xy(int16_t* x, int16_t* y) {
            uint8_t buf[41];
            uint8_t Clearbuf = 0;
            uint8_t i;

       
            if (Dev_Now.Touch == 0) {
              *x = 0;
              *y = 0;
              return;
            }

    //        Dev_Now.Touch = 0;
            // 看有多少个点
            GT911_ReadReg(GT911_READ_XY_REG, buf, 1);
            Dev_Now.TouchpointFlag = buf[0];
            Dev_Now.TouchCount = buf[0] & 0x0f;
            if (Dev_Now.TouchCount > 5 || Dev_Now.TouchCount  == 0) {
              GT911_WriteReg(GT911_READ_XY_REG, (uint8_t *) & Clearbuf, 1);
              DEV_Delay_ms(10);
              return;
            }

            // 这里只读第一个寄存器
            GT911_WriteReg(GT911_READ_XY_REG, (uint8_t *)&Clearbuf, 1);
            DEV_Delay_ms(10);

            GT911_ReadReg(GT911_READ_XY_REG + 1, &buf[1], Dev_Now.TouchCount * 8);
            GT911_WriteReg(GT911_READ_XY_REG, (uint8_t *) & Clearbuf, 1);
            DEV_Delay_ms(10);

            Dev_Now.Touchkeytrackid[0] = buf[1];
            *x = ((uint16_t)buf[3] << 8) + buf[2];
            *y = ((uint16_t)buf[5] << 8) + buf[4];
            
            // 处理完后再置为 0
            // 如果一开始就置为 0,中断随时发生,会被再次置为 1
            Dev_Now.Touch = 0;

    }
    uint8_t touchpad_flag=0;
    #define UBYTE uint8_t
    #define UWORD uint16_t
    UWORD x[CT_MAX_TOUCH] = {0}, y[CT_MAX_TOUCH] = {0}, z=0;
    /******************************************************************************
    function:        Read the firmware version of the GT911
    ******************************************************************************/
    void GT911_Scan(void)
    {
            uint8_t buf[41];
            uint8_t Clearbuf = 0;
            uint8_t i;

            //Determine if the interruption is generated
            if (Dev_Now.Touch == 1)
            {
                   
                    GT911_ReadReg(GT911_READ_XY_REG, buf, 1);

                    if ((buf[0]&0x80) == 0x00)
                    {
                            GT911_WriteReg(GT911_READ_XY_REG, (uint8_t *)&Clearbuf, 1);
                            DEV_Delay_ms(10);
                    }
                    else
                    {
                            Dev_Now.TouchpointFlag = buf[0];
                            Dev_Now.TouchCount = buf[0]&0x0f;
                            if (Dev_Now.TouchCount > 5 || Dev_Now.TouchCount  == 0)
                            {
                                    GT911_WriteReg(GT911_READ_XY_REG, (uint8_t *)&Clearbuf, 1);
                                    return ;
                            }

    //                        if(temp < 5){//Prevent misjudgment
    //                                temp = 1 + temp;
    //                                if(temp == 4)
    //                                        Paint_Clear(WHITE);
    //                                return;
    //                        }
                            touchpad_flag = 1;
                            GT911_ReadReg(GT911_READ_XY_REG+1, &buf[1], Dev_Now.TouchCount*8);
                            GT911_WriteReg(GT911_READ_XY_REG, (uint8_t *)&Clearbuf, 1);

                            Dev_Now.Touchkeytrackid[0] = buf[1];
                            Dev_Now.X[0] = ((uint16_t)buf[3] << 8) + buf[2];
                            Dev_Now.Y[0] = ((uint16_t)buf[5] << 8) + buf[4];
                            Dev_Now.S[0] = ((uint16_t)buf[7] << 8) + buf[6];

                            Dev_Now.Touchkeytrackid[1] = buf[9];
                            Dev_Now.X[1] = ((uint16_t)buf[11] << 8) + buf[10];
                            Dev_Now.Y[1] = ((uint16_t)buf[13] << 8) + buf[12];
                            Dev_Now.S[1] = ((uint16_t)buf[15] << 8) + buf[14];

                            Dev_Now.Touchkeytrackid[2] = buf[17];
                            Dev_Now.X[2] = ((uint16_t)buf[19] << 8) + buf[18];
                            Dev_Now.Y[2] = ((uint16_t)buf[21] << 8) + buf[20];
                            Dev_Now.S[2] = ((uint16_t)buf[23] << 8) + buf[22];

                            Dev_Now.Touchkeytrackid[3] = buf[25];
                            Dev_Now.X[3] = ((uint16_t)buf[27] << 8) + buf[26];
                            Dev_Now.Y[3] = ((uint16_t)buf[29] << 8) + buf[28];
                            Dev_Now.S[3] = ((uint16_t)buf[31] << 8) + buf[30];

                            Dev_Now.Touchkeytrackid[4] = buf[33];
                            Dev_Now.X[4] = ((uint16_t)buf[35] << 8) + buf[34];
                            Dev_Now.Y[4] = ((uint16_t)buf[37] << 8) + buf[36];
                            Dev_Now.S[4] = ((uint16_t)buf[39] << 8) + buf[38];

    //                        PRINTF("Dev_Now.X[0]:%d Dev_Now.Y[0]:%d Dev_Now.S[0]:%d\r\n",Dev_Now.X[0],Dev_Now.Y[0],Dev_Now.S[0]);
    //                        PRINTF("Dev_Now.X[1]:%d Dev_Now.Y[1]:%d Dev_Now.S[1]:%d\r\n",Dev_Now.X[1],Dev_Now.Y[1],Dev_Now.S[1]);
                            //Get coordinates and display coordinates

                            //Clear the last redundant display coordinates
    //                        if(z > Dev_Now.TouchCount){
    //                                for(i = z; i != Dev_Now.TouchCount; i--){
    //                                        Paint_DrawLine(0 , y[i-1]+3, 800, y[i-1]+3, WHITE, LINE_STYLE_SOLID, DOT_PIXEL_1X1);
    //                                        Paint_DrawLine(x[i-1]+3, 0, x[i-1]+3, 480, WHITE, LINE_STYLE_SOLID, DOT_PIXEL_1X1);
    //                                        Paint_DrawCircle( x[i-1]+3 , y[i-1]+3 , 8, WHITE, DRAW_FILL_FULL, DOT_PIXEL_1X1);
    //                                }
    //                        }

    //                        for (i=0;i<Dev_Now.TouchCount;i++)
    //                        {
    //                                Dev_Backup.X = Dev_Now.X;
    //                                Dev_Backup.Y = Dev_Now.Y;
    //                                Dev_Backup.TouchCount = Dev_Now.TouchCount;
    //                                printf("x = %d   y=  %d \r\n",Dev_Now.X, Dev_Now.Y);

    //                                //Clear the last displayed coordinates
    //                                if(x != Dev_Now.X || y  != Dev_Now.Y){
    //                                        Paint_DrawLine(0 , y+3, 800, y+3, WHITE, LINE_STYLE_SOLID, DOT_PIXEL_1X1);
    //                                        Paint_DrawLine(x+3, 0, x+3, 480, WHITE, LINE_STYLE_SOLID, DOT_PIXEL_1X1);
    //                                        Paint_DrawCircle( x+3 , y+3 , 8, WHITE, DRAW_FILL_FULL, DOT_PIXEL_1X1);
    //                                }
    //                                //Display coordinates
    //                                Paint_DrawLine(Dev_Now.X+3, 0, Dev_Now.X+3, 480, Color, LINE_STYLE_SOLID, DOT_PIXEL_1X1);
    //                                Paint_DrawLine(0 , Dev_Now.Y+3, 800, Dev_Now.Y+3, Color, LINE_STYLE_SOLID, DOT_PIXEL_1X1);
    //                                Paint_DrawCircle(Dev_Now.X+3 , Dev_Now.Y+3 , 8, Color, DRAW_FILL_FULL, DOT_PIXEL_1X1);

    //                                x  = Dev_Now.X;
    //                                y  = Dev_Now.Y;
    //                        }
    //                        z = Dev_Now.TouchCount;
                    }
                    Dev_Now.Touch = 0;
            }
    }这是触摸代码。
    1. /*
    2. * Copyright 2022 NXP
    3. * SPDX-License-Identifier: MIT
    4. */

    5. #include "events_init.h"
    6. #include <stdio.h>
    7. #include "lvgl/lvgl.h"
    8. #include "board.h"
    9. #include "fsl_debug_console.h"
    10. void events_init(lv_ui *ui)
    11. {
    12. }

    13. static void screen_sw_1_event_handler(lv_event_t *e)
    14. {
    15.         lv_event_code_t code = lv_event_get_code(e);
    16.         switch (code)
    17.         {
    18.         case LV_EVENT_VALUE_CHANGED:
    19.         {
    20.                 PRINTF("按下");
    21.                 USER_LED_TOGGLE();
    22.                 lv_obj_set_style_bg_color(guider_ui.screen_led_1, lv_color_make(0xfc, 0xff, 0xff), LV_PART_MAIN);
    23.         }
    24.                 break;
    25.         default:
    26.                 break;
    27.         }
    28. }

    29. static void screen_btn_1_event_handler(lv_event_t *e)
    30. {
    31.         lv_event_code_t code = lv_event_get_code(e);
    32.         switch (code)
    33.         {
    34.         case LV_EVENT_PRESSED:
    35.         {
    36.                 lv_obj_set_style_text_font(guider_ui.screen_label_3, &lv_font_simsun_24, 0);
    37.                 lv_label_set_text(guider_ui.screen_label_3, "日天牛批");
    38.         }
    39.                 break;
    40.         default:
    41.                 break;
    42.         }
    43. }

    44. void events_init_screen(lv_ui *ui)
    45. {
    46.         lv_obj_add_event_cb(ui->screen_sw_1, screen_sw_1_event_handler, LV_EVENT_ALL, NULL);
    47.         lv_obj_add_event_cb(ui->screen_btn_1, screen_btn_1_event_handler, LV_EVENT_ALL, NULL);
    48. }
    复制代码
    这是事件代码。效果如下:


    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 17:22 , Processed in 0.120814 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

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