极品馒头泬19p,国产精品亚洲一区二区三区,狠狠色噜噜狠狠狠7777奇米,国产精品视频一区二区三区无码,国产欧美日韩久久久久

【E969】STM32F429IIT6+STemwin+SDRAM+LTDC

2021-09-09 21:45:11      索煒達(dá)電子      916     

最近做了一個(gè)STM32F429IIT6(176PIN)的板子。

移植了STemwin GUI.折騰了我一個(gè)星期。總算完成。

LCD : 3.5寸的TFT屏

驅(qū)動(dòng) :MCU自動(dòng)的LTDC(888模式),也就是24位。

GUI  :STemwin 5.22

環(huán)境 :IAR 7.10

移植花了1兩天。移植上去以后發(fā)現(xiàn)問題多多。老是跳到硬件錯(cuò)誤。運(yùn)行DEMO,跑不了2個(gè)界面就卡主。

一直在找問題。修修補(bǔ)補(bǔ)。今天終于弄好。

1. 幀緩存用的是SDRAM。視頻緩存如果也用SDRAM的話,很容易就卡住。不如內(nèi)部RAM跑的歡暢。不過顯示效果要好的多。因?yàn)榫彺娲舐铩?/p>

2. 設(shè)置的堆棧如果過小就很容易出現(xiàn)硬件錯(cuò)誤。默認(rèn)是 STACK = 0x400 BYTE HEAP = 0x200。要改大點(diǎn)。

    我主要就是卡在這邊。設(shè)置成 STACK = 0x2000 BYTE HEAP = 0xe00。跑所有DEMO幾乎沒問題,除了一個(gè)SPEEDOMETER。

3. 關(guān)于層的問題。因?yàn)槟J(rèn)是1層的。如果要改為2層的。特別注意要先選定層1。要不然什么都不顯示。

   GUI_SelectLayer(1); 根據(jù)DATASHEET.層2是在最上面的。它的尺寸如果和屏幕一樣的。那層1和背景都會(huì)被它覆蓋。這里說的是LTDC的層。

   所以要選擇層2繪制。(GUI里面 0- 層1 ,1- 層2)。

4. 關(guān)于觸摸的問題。我看了正點(diǎn)原子和別人寫的。都挺好。不過我還是自己根據(jù)我軟件的架構(gòu)寫了一個(gè)。

    采用5ms定期采集,根據(jù)PEN中斷。

    沒有采用這幾個(gè)函數(shù)。因?yàn)槲矣X得不太透明。

    void GUI_TOUCH_X_ActivateX(void);

    void GUI_TOUCH_X_ActivateY(void);

    int  GUI_TOUCH_X_MeasureX (void);

    int  GUI_TOUCH_X_MeasureY (void);

    采用的是這個(gè)函數(shù)。

    static GUI_PID_STATE TpState;

    GUI_TOUCH_StoreStateEx(&TpState);

    這是記錄最終坐標(biāo)和觸摸狀態(tài)的結(jié)構(gòu)體。原型如下:

    typedef struct {

    int x,y;   //當(dāng)前坐標(biāo)

    U8  ressed;//觸摸狀態(tài)

    U8  Layer;//層

    } GUI_PID_STATE;

    有觸摸時(shí),把左邊和狀態(tài)存入這個(gè)結(jié)構(gòu)體。沒有觸摸時(shí),坐標(biāo)為-1。

    經(jīng)過這么處理后,就很容易有單點(diǎn)觸摸和拖拽功能。

TAGSTM32F429IIT6
  • 4 次
  • 1 分