硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 27|回复: 3
收起左侧

[TouchGFX] 怎么学习TouchGFX啊

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 4 小时前 | 显示全部楼层 |阅读模式
我使用的开发版STM32G474VET6没有LTDC,我现在只想用touchGFX实现颜色填充,按网上教程编译成功就是屏幕不亮,有没有大佬帮帮
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124103
QQ
发表于 3 小时前 | 显示全部楼层
注意一点,背光正常点亮没,就是就是它的接口函数正常实现,基本都没问题。

点评

我的背光是常量的,不管烧录不烧录都是亮的  详情 回复 发表于 3 小时前
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 3 小时前 | 显示全部楼层
eric2013 发表于 2026-9-16 15:12
注意一点,背光正常点亮没,就是就是它的接口函数正常实现,基本都没问题。

我的背光是常量的,不管烧录不烧录都是亮的
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 3 小时前 | 显示全部楼层
/******************************************************************************
      函数说明:在指定区域填充颜色
      入口数据:xsta,ysta   起始坐标
                xend,yend   终止坐标
                                                                color       要填充的颜色
      返回值:  无
******************************************************************************/
void LCD_Fill(uint16_t xsta,uint16_t ysta,uint16_t xend,uint16_t yend,uint16_t color){     
        uint16_t i,j;
        LCD_Address_Set(xsta,ysta,xend-1,yend-1);//设置显示范围
       
        for(i=ysta;i<yend;i++)
        {                                                                                                                           
                for(j=xsta;j<xend;j++)
                {
                        HAL_SPI_Transmit(&LCD_SPI_Handle,(uint8_t*)&color,1,100);
                }
        }
}

volatile uint8_t IsTransmittingBlock_=0;
/**
* Check if a Frame Buffer Block is beeing transmitted.
*/
int touchgfxDisplayDriverTransmitActive(void)
{
        return IsTransmittingBlock_;
}
/**
* Check if a Frame Buffer Block ending at bottom may be sent.
*/
int touchgfxDisplayDriverShouldTransferBlock(uint16_t bottom)
{
        return 1;
}
/**
* Transmit a Frame Buffer Block.
*/
void touchgfxDisplayDriverTransmitBlock(const uint8_t* pixels, uint16_t x, uint16_t y, uint16_t w, uint16_t h)
{
        IsTransmittingBlock_=1;
        LCD_Address_Set(x,y,x+w-1,y+h-1);//设置显示范围,这里的地址-1非常关键不然会造成撕裂的效果。
        // ILI9328 要求像素数据高位在前,但 Cortex-M 以小端存储,需逐像素交换字节
        uint32_t pixelCount = (uint32_t)w * h;
        uint16_t* p = (uint16_t*)pixels;
        for (uint32_t i = 0; i < pixelCount; i++)
        {
                p[i] = (p[i] >> 8) | (p[i] << 8);
        }
        HAL_SPI_Transmit_DMA(&LCD_SPI_Handle,(uint8_t*)pixels,pixelCount*2);
}

///spi传输完成中断
extern void DisplayDriver_TransferCompleteCallback(void);
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
{
        if (hspi->Instance == SPI4) {
                SPI_CS(1);        // DMA 传输完毕,拉高 CS 锁存数据
                IsTransmittingBlock_ = 0;
                DisplayDriver_TransferCompleteCallback();
        }
}这个是自定义函数也不知道什么问题
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2026-9-16 19:08 , Processed in 0.193297 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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