前面实现了图像的显示。如果需要图像移动,那么我们就需要再细细品品他的寄存器
x 层水平位置参数寄存器(TLI_LxHPOS)(x = 0, 1
x 层垂直位置参数寄存器(TLI_LxVPOS)(x = 0, 1
先来看看TLI_LxHPOS
image.png
从上面的说明中我们得知,把WRP写入右则的位置值,把WLP写入左则值,这样就可以把图像水平移动到指定的位置。
同理我们再看看垂直位置寄存器的说明:
image.png
他与水平位的写入是一样的。所以我们创建如下代码,来实现图像的移动:
  1. void offset_laye(uint16_t xpos, uint16_t ypos)
  2. {
  3.                 tli_layer_parameter_struct         tli_layer_init_struct;
  4.                  /* TLI layer configuration  层初始化配置 */
  5.           tli_layer_init_struct.layer_window_leftpos = xpos + HORIZONTAL_SYNCHRONOUS_PULSE +
  6.                                                  HORIZONTAL_BACK_PORCH + 2;
  7.     tli_layer_init_struct.layer_window_rightpos = (xpos + 320 + HORIZONTAL_SYNCHRONOUS_PULSE +
  8.                                                    HORIZONTAL_BACK_PORCH -1);
  9.     tli_layer_init_struct.layer_window_toppos = ypos + VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH;
  10.     tli_layer_init_struct.layer_window_bottompos = (ypos + 100 + VERTICAL_SYNCHRONOUS_PULSE +
  11.                                                     VERTICAL_BACK_PORCH -1);
  12.     TLI_LXHPOS(LAYER0) &= ~(TLI_LXHPOS_WLP | (TLI_LXHPOS_WRP));
  13.     TLI_LXHPOS(LAYER0) = (uint32_t)((uint32_t)tli_layer_init_struct.layer_window_leftpos | ((uint32_t)tli_layer_init_struct.layer_window_rightpos << 16U));
  14.     /* configure layer window vertical position */
  15.     TLI_LXVPOS(LAYER0) &= ~(TLI_LXVPOS_WTP | (TLI_LXVPOS_WBP));
  16.     TLI_LXVPOS(LAYER0) = (uint32_t)((uint32_t)tli_layer_init_struct.layer_window_toppos | ((uint32_t)tli_layer_init_struct.layer_window_bottompos << 16U));
  17. }

然后在主程序中,我们添加一些测试代码来验证:
  1.   xpos = 0;
  2.           ypos =0;
  3.     while(1) {
  4.                         delay_1ms(10);
  5.                         ypos ++;
  6.                         if(ypos > 170)
  7.                         {
  8.                                 ypos = 0;
  9.                         }
  10.                         xpos ++;
  11.                         if(xpos > 100)
  12.                         {
  13.                                 xpos = 0;
  14.                         }                       
  15.        offset_laye(xpos,ypos);

  16.                                 tli_layer_enable(LAYER0);
  17.                                 tli_reload_config(TLI_FRAME_BLANK_RELOAD_EN);
  18.                                 /* enable TLI */
  19.                                 tli_enable();

  20.     }
这样就实现了图像的移动了。效果如下: