cancel
Showing results for 
Search instead for 
Did you mean: 

TouchGFX stop in takeFrameBufferSemaphore()

Sergii Volchenko
Associate III

Still can't start works with #TouchGFX​.

Target: make that touchgfx called function TouchGFXGeneratedHAL::flushFrameBuffer(rect);

What I did:

  1. Start new project and select my chip (stm32f767z)
  2. switch on crc
  3. switch on dma2d, and define color model rgb565, enable global interrupt
  4. switch on touchgfx, define resolution 480x320, and color model rgb565, enable dma2d, custom tick, no os.
  5. enable TIM13 for generate Vsync for touchgfx and sent it to period 50ms, enabled nvic
  6. generate a code
  7. run touchgfx designer, put white background and some line on it.. Generate code
  8. define callback for timer
extern void touchgfx_signalVSyncTimer(void);
 
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM13) {
        touchgfx_signalVSyncTimer();
    }
}

define function

extern "C" void touchgfx_signalVSyncTimer(void) {
    HAL::getInstance()->vSync();
    OSWrappers::signalVSync();
}

Compile and debug, and check when it call flush.

When I pause app it shows next stack.

0693W000008GNxFQAW.jpgSo it's waiting when FB semaphore released.... But it never happens.

I read everything on this forum, and in stackoverflow but nothing helped....

What I missed?

2 REPLIES 2
Romain DIELEMAN
ST Employee

Hi,

Could you add the "TouchGFX" tag to your post ? it will increase the visibility to other people working with TouchGFX.

Dumb question I know since you are trying to work without an OS, but are you able to test it with FREERTOS ? I am curious if everything else is properly configured.

/Romain

Yes, i tried with freertos too.... With similar result