久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 714|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)移植emwin不顯示直接黑屏?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:792801 發(fā)表于 2024-9-25 14:17 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
我用的是原子的戰(zhàn)艦V4板,lcd顯示屏是在網(wǎng)上買的5寸屏幕,854*480的程序是正點(diǎn)提供的官方emwin例程,lcd的驅(qū)動(dòng)程序事先驗(yàn)證過(guò)能夠正常顯示包括字符串文字
lcd的畫點(diǎn)函數(shù)以及讀點(diǎn)函數(shù)等都是用的正點(diǎn)的函數(shù),只是改了底層配置
但是跟著正點(diǎn)加入emwin的程序后就不能正常顯示移植黑屏,有沒(méi)有大佬知道具體的原因
代碼如下:

這里是單片機(jī)主程序
int main(void)
{
    HAL_Init();                         /* 初始化HAL庫(kù) */
    sys_stm32_clock_init(RCC_PLL_MUL9); /* 設(shè)置時(shí)鐘, 72Mhz */
    delay_init(72);                     /* 延時(shí)初始化 */
    usart_init(115200);                 /* 串口初始化為115200 */
    usmart_dev.init(72);                /* 初始化USMART */
    led_init();                         /* 初始化LED */
    lcd_init();                         /* 初始化LCD */
    key_init();                         /* 初始化按鍵 */
    sram_init();                        /* SRAM初始化 */
    my_mem_init(SRAMIN);                /* 初始化內(nèi)部SRAM內(nèi)存池 */
    my_mem_init(SRAMEX);                /* 初始化外部SRAM內(nèi)存池 */
    btim_timx_int_init(999,71);         /* 定時(shí)1ms */
    __HAL_RCC_CRC_CLK_ENABLE();         /* 使能CRC時(shí)鐘 */
    GUI_Init();                         /* emWin 初始化 */
//    GUIDEMO_Main();
        GUI_SetBkColor(GUI_RED);                                              /* 設(shè)置背景顏色 */
        GUI_SetColor(GUI_BLUE);
        GUI_Clear();                                                                          /* 清屏 */
        GUI_SetColor(GUI_BLACK);                                                  /* 設(shè)置顏色 */
        GUI_SetFont(&GUI_Font32_ASCII);                                     /* 設(shè)置字體 */
        GUI_DispStringAt("Hello emWin!", 0, 0);                            /* 在指定位置顯示字符串 */

    while(1);
}


下面是顯示相關(guān)的函數(shù)
static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, LCD_PIXELINDEX PixelIndex) {
  #ifdef WIN32
    LCDSIM_SetPixelIndex(x, y, PixelIndex, pDevice->LayerIndex);
  #else
    //
    // Convert logical into physical coordinates (Dep. on LCDConf.h)
    //
    #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
      int xPhys, yPhys;

      xPhys = LOG2PHYS_X(x, y);
      yPhys = LOG2PHYS_Y(x, y);
    #else
      #define xPhys x
      #define yPhys y
    #endif
    GUI_USE_PARA(pDevice);
    GUI_USE_PARA(x);
    GUI_USE_PARA(y);
    GUI_USE_PARA(PixelIndex);
    {
      //
      // Write into hardware ... Adapt to your system
      //
      // TBD by customer...
      //
        lcd_draw_point(x,y,PixelIndex);
    }
    #if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
      #undef xPhys
      #undef yPhys
    #endif
  #endif
}


static LCD_PIXELINDEX _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) {
  LCD_PIXELINDEX PixelIndex;
  #ifdef WIN32
    PixelIndex = LCDSIM_GetPixelIndex(x, y, pDevice->LayerIndex);
  #else
    //
    // Convert logical into physical coordinates (Dep. on LCDConf.h)
    //
    #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
      int xPhys, yPhys;

      xPhys = LOG2PHYS_X(x, y);
      yPhys = LOG2PHYS_Y(x, y);
    #else
      #define xPhys x
      #define yPhys y
    #endif
    GUI_USE_PARA(pDevice);
    GUI_USE_PARA(x);
    GUI_USE_PARA(y);
    {
      //
      // Write into hardware ... Adapt to your system
      //
      // TBD by customer...
      //
      PixelIndex = lcd_read_point(x,y);
    }
    #if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
      #undef xPhys
      #undef yPhys
    #endif
  #endif
  return PixelIndex;
}

static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1) {

        int x;
    if (GUI_pContext->DrawMode & LCD_DRAWMODE_XOR)
    {
        for (; y0 <= y1; y0++)
        {
            for (x = x0; x <= x1; x++)
            {
                _XorPixel(pDevice, x, y0);
            }
        }
    }
    else
    {
        lcd_fill(x0,y0,x1,y1,LCD_COLORINDEX);
    }
}


static void _DrawBitLine16BPP(GUI_DEVICE * pDevice, int x, int y, U16 const * p, int xsize) {

    LCD_PIXELINDEX pixel;
    lcd_set_cursor(x,y);
    *(__IO uint16_t *)(UCGUI_LCD_CMD) = lcddev.wramcmd; /* 寫入顏色值 */
    for (;xsize > 0; xsize --, x++, p++)
    {
      pixel = *p;
      *(__IO uint16_t *)(UCGUI_LCD_DATA) = pixel;
    }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:69038 發(fā)表于 2024-9-28 10:07 | 只看該作者
LCD的接線、驅(qū)動(dòng)對(duì)不對(duì)哦?
回復(fù)

使用道具 舉報(bào)

板凳
ID:792801 發(fā)表于 2024-9-28 15:00 | 只看該作者
都是對(duì)的,我已經(jīng)找到問(wèn)題了
回復(fù)

使用道具 舉報(bào)

地板
ID:792801 發(fā)表于 2024-9-28 15:02 | 只看該作者
我用的是正點(diǎn)原子的板子和代碼,在SRAM初始化里面將 fsmc_readwritetim.DataSetupTime = 0x00; 改為0x03,就正常了,之前問(wèn)題我沒(méi)描述好,程序是卡死在了GUI_Init()里面了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 综合久久网 | 韩日一区二区 | 亚洲国产一区二区三区在线观看 | 精品国产一区二区三区久久久四川 | 亚洲男女视频在线观看 | 精品国产18久久久久久二百 | 亚洲天堂av在线 | 91一区二区 | 日日操av| 成人在线视频网站 | 久久精品亚洲一区二区三区浴池 | 99免费精品 | 欧美在线综合 | 一区二区三区免费观看 | 国产精品亚洲视频 | 亚洲视频国产 | 久久久tv | 国产精久久久久久久妇剪断 | 无码日韩精品一区二区免费 | 精品一区二区在线观看 | 日韩精品一区二区三区中文在线 | 国产精品一区二区在线 | 一区在线观看 | 中文字幕一区二区三区精彩视频 | 欧美一区二区三区久久精品 | 中文成人在线 | 中文字幕一区在线观看视频 | 久久九九免费 | 亚洲精品v日韩精品 | 中文字幕在线观看第一页 | 久久99这里只有精品 | 国产精品久久久久久久久久久久午夜片 | 国产成人精品av | 成年视频在线观看福利资源 | 中文字幕在线一区 | 亚洲国产精品久久久久婷婷老年 | 国产成人99久久亚洲综合精品 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 99视频在线看 | 国产精品一区二区三区在线 | 2019天天干天天操 |