cancel
Showing results for 
Search instead for 
Did you mean: 

Slide Transition animation effect does not show on target

lxw
Senior

Use cubemx to generate the project, then use the slider effect to switch screen and everything will run fine in the simulator.But I burned MDK to the hardware and didn't see the slider effect.Is there something wrong with the transplant?

1 ACCEPTED SOLUTION

Accepted Solutions

hi @lxw​,

Glad you found that on your own =) For clarity, and others, let's look at the signature for setFrameBufferStartAddress(). e.g., if you want a 16-bit application, double buffering with animation storage enabled, you'd just ommit every argument but the first one (the framebuffer address):

/**
     * @fn virtual void HAL::setFrameBufferStartAddress(void* adr, uint16_t depth = 16, bool useDoubleBuffering = true, bool useAnimationStorage = true)
     *
     * @brief Sets the address used for frame buffers, usually located in external memory.
     *
     *        Sets the address used for frame buffers, usually located in external memory. Will
     *        reserve memory for one or two frame buffers based on display size. Will optionally
     *        also reserve memory for a third frame buffer used for animationStorage.
     *
     * @param [in] adr                 Starting address to use for frame buffers.
     * @param      depth               (Optional) Depth of each pixel in bits, default is 16.
     * @param      useDoubleBuffering  (Optional) If true, reserve memory for an extra frame buffer.
     * @param      useAnimationStorage (Optional) If true, reserve memory for animation storage.
     *
     * @deprecated Use the setFramaBufferStartAddress with 'format' parameter instead of 'depth'
     */
    virtual void setFrameBufferStartAddress(void* adr, uint16_t depth = 16, bool useDoubleBuffering = true, bool useAnimationStorage = true)

View solution in original post

15 REPLIES 15
Martin KJELDSEN
Chief III

Hi,

Are you sure you've programmed the external flash with image assets correctly?

/Martin

Sorry,Can you help me?I've tried it many times and it's the same thing.Use STM32F469I_DISCOREVY.

There is another question, why does the TE touch release always 533 when subarea refresh

What exactly is it you've tried? Which program are you using to program the QSPI flash of the board? I suggest you just use ST-Link or CubeProgrammer.

I didn't use the QSPI to store the data.You can open the program I provided and have a look. Screen has only box and buttons.Screen has only box and buttons.There is a sliding interface for switching between emulators, but not on the f469i_discovery board.

Do you have time to take a look? Thank you

Hi again,

I took a quick look. Are you saying that you can switch screens but don't see the slide effect? For a screen transition animation to work you must have memory available for what we currently call the "animation storage".

/Martin

Thank you very much!!!

Q1: Are you saying that you can switch screens but don't see the slide effect?

Yes​.Where can I view the size of animation storage and set it? Do I need to enable USE_DOUBLE_BUFFERING equal to 1?

Q2:In 24-bit deep 800x480, use partition refresh.Why set the TE signal line scanline to 533 in LCD_ReqTear() instead of any other value?

Thank you very much!!!

Hal. SetFrameBufferStartAddress (frameBuf0 bitdepth, false, true) the last item is set to true, the sliding effect can be achieved.:* :*

hi @lxw​,

Glad you found that on your own =) For clarity, and others, let's look at the signature for setFrameBufferStartAddress(). e.g., if you want a 16-bit application, double buffering with animation storage enabled, you'd just ommit every argument but the first one (the framebuffer address):

/**
     * @fn virtual void HAL::setFrameBufferStartAddress(void* adr, uint16_t depth = 16, bool useDoubleBuffering = true, bool useAnimationStorage = true)
     *
     * @brief Sets the address used for frame buffers, usually located in external memory.
     *
     *        Sets the address used for frame buffers, usually located in external memory. Will
     *        reserve memory for one or two frame buffers based on display size. Will optionally
     *        also reserve memory for a third frame buffer used for animationStorage.
     *
     * @param [in] adr                 Starting address to use for frame buffers.
     * @param      depth               (Optional) Depth of each pixel in bits, default is 16.
     * @param      useDoubleBuffering  (Optional) If true, reserve memory for an extra frame buffer.
     * @param      useAnimationStorage (Optional) If true, reserve memory for animation storage.
     *
     * @deprecated Use the setFramaBufferStartAddress with 'format' parameter instead of 'depth'
     */
    virtual void setFrameBufferStartAddress(void* adr, uint16_t depth = 16, bool useDoubleBuffering = true, bool useAnimationStorage = true)