这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore4t_60 [2020/10/10 17:45] zgf |
icore4t_60 [2022/04/01 10:58] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-09-23 | gingko | 初次建立 | | | V1.0 | 2020-09-23 | gingko | 初次建立 | | ||
行 125: | 行 124: | ||
* 层中的第一个和最后一个可见行通过配置 LTDC_LxWVPCR 寄存器中的 WVSTPOS[10:0] 和 WVSPPOS[10:0] 进行设置。 | * 层中的第一个和最后一个可见行通过配置 LTDC_LxWVPCR 寄存器中的 WVSTPOS[10:0] 和 WVSPPOS[10:0] 进行设置。 | ||
{{ :icore4t:iCore4T_ARM_HAL_60_3.png?direct |}} | {{ :icore4t:iCore4T_ARM_HAL_60_3.png?direct |}} | ||
- | === | + | |
- | 5.LTDC层混合 === | + | === 5.LTDC层混合 === |
LTDC除了图层1和图层2两个硬件图层以外,还有一个背景层。由于背景层的刷新不需要显存空间,所以可以用这个图层验证LTDC时序配置是否有问题。 | LTDC除了图层1和图层2两个硬件图层以外,还有一个背景层。由于背景层的刷新不需要显存空间,所以可以用这个图层验证LTDC时序配置是否有问题。 | ||
行 136: | 行 135: | ||
hltdc.Init.Backcolor.Red = 255 | hltdc.Init.Backcolor.Red = 255 | ||
- | 对于图层1和图层2来说,支持如下8种颜色格式: | + | 对于图层1和图层2来说,支持如下8种颜色格式: |
- ARGB8888 | - ARGB8888 | ||
行 161: | 行 160: | ||
int main(void) | int main(void) | ||
{ | { | ||
- | int i; | + | int i; |
HAL_Init(); | HAL_Init(); | ||
/* Configure the system clock */ | /* Configure the system clock */ | ||
行 193: | 行 192: | ||
demo(); //运行弹球demo | demo(); //运行弹球demo | ||
LCD_ON; | LCD_ON; | ||
- | while (1) | + | while (1) |
- | { } | + | { } |
} | } | ||
</code> | </code> | ||
行 211: | 行 210: | ||
oldx = x; | oldx = x; | ||
oldy = y; | oldy = y; | ||
- | x = x + xs; | + | x = x + xs; |
y = y + ys; | y = y + ys; | ||
if((x+r)>=480 || (x-r)<=0){ | if((x+r)>=480 || (x-r)<=0){ | ||
- | xs=-1*xs; | + | xs=-1*xs; |
- | x = x + 2*xs; | + | x = x + 2*xs; |
- | co++; | + | co++; |
- | if(co==7)co=0;} | + | if(co==7)co=0; |
+ | } | ||
if((y+r)>=272 || (y-r)<=0){ | if((y+r)>=272 || (y-r)<=0){ | ||
- | ys=-1*ys; | + | ys=-1*ys; |
- | y = y + 2*ys; | + | y = y + 2*ys; |
- | co++; | + | co++; |
- | if(co==7)co=0;} | + | if(co==7)co=0; |
+ | } | ||
draw_circle(x, y, r, colo[co], 1); //画圆 | draw_circle(x, y, r, colo[co], 1); //画圆 | ||
for(j = oldx-r-2;j < oldx+r+2;j ++){ | for(j = oldx-r-2;j < oldx+r+2;j ++){ | ||
for(i = oldy-r-2;i < oldy+r+2;i ++){ | for(i = oldy-r-2;i < oldy+r+2;i ++){ | ||
- | if(j<1 || j>479 || i<1 || i>271)continue; | + | if(j<1 || j>479 || i<1 || i>271)continue; |
- | if( (int)(x-j)*(x-j) + (int)(y-i)*(y-i) > (int)r*r ){ | + | if( (int)(x-j)*(x-j) + (int)(y-i)*(y-i) > (int)r*r ){ |
- | *(volatile unsigned short int *) (address_sdram[i] + (j << 1)) = bg; | + | *(volatile unsigned short int *) (address_sdram[i] + (j << 1)) = bg; |
}}} | }}} | ||
HAL_Delay(6); //延时 | HAL_Delay(6); //延时 | ||
行 241: | 行 241: | ||
void MX_LTDC_Init(void) | void MX_LTDC_Init(void) | ||
{ | { | ||
- | LTDC_LayerCfgTypeDef pLayerCfg = {0}; | + | LTDC_LayerCfgTypeDef pLayerCfg = {0}; |
- | LTDC_LayerCfgTypeDef pLayerCfg1 = {0}; | + | LTDC_LayerCfgTypeDef pLayerCfg1 = {0}; |
- | hltdc.Instance = LTDC; | + | hltdc.Instance = LTDC; |
- | hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; //水平同步极性 | + | hltdc.Init.HSPolarity = LTDC_HSPOLARITY_AL; //水平同步极性 |
- | hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; //垂直同步极性 | + | hltdc.Init.VSPolarity = LTDC_VSPOLARITY_AL; //垂直同步极性 |
- | hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; //数据使能极性 | + | hltdc.Init.DEPolarity = LTDC_DEPOLARITY_AL; //数据使能极性 |
- | hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; //像素时钟极性 | + | hltdc.Init.PCPolarity = LTDC_PCPOLARITY_IPC; //像素时钟极性 |
- | hltdc.Init.HorizontalSync = 0; //水平同步宽度 | + | hltdc.Init.HorizontalSync = 0; //水平同步宽度 |
- | hltdc.Init.VerticalSync = 0; //垂直同步宽度 | + | hltdc.Init.VerticalSync = 0; //垂直同步宽度 |
- | hltdc.Init.AccumulatedHBP = 20; //水平同步后沿宽度 | + | hltdc.Init.AccumulatedHBP = 20; //水平同步后沿宽度 |
- | hltdc.Init.AccumulatedVBP = 9; //垂直同步后沿高度 | + | hltdc.Init.AccumulatedVBP = 9; //垂直同步后沿高度 |
- | hltdc.Init.AccumulatedActiveW = 500;//有效宽度 | + | hltdc.Init.AccumulatedActiveW = 500;//有效宽度 |
- | hltdc.Init.AccumulatedActiveH = 281;//有效高度 | + | hltdc.Init.AccumulatedActiveH = 281;//有效高度 |
- | hltdc.Init.TotalWidth = 524; //总宽度 | + | hltdc.Init.TotalWidth = 524; //总宽度 |
- | hltdc.Init.TotalHeigh = 287; //总高度 | + | hltdc.Init.TotalHeigh = 287; //总高度 |
- | hltdc.Init.Backcolor.Blue = 255; //背景RGB数值,白色 | + | hltdc.Init.Backcolor.Blue = 255; //背景RGB数值,白色 |
- | hltdc.Init.Backcolor.Green = 255; | + | hltdc.Init.Backcolor.Green = 255; |
- | hltdc.Init.Backcolor.Red = 255; | + | hltdc.Init.Backcolor.Red = 255; |
- | if (HAL_LTDC_Init(&hltdc) != HAL_OK) | + | if (HAL_LTDC_Init(&hltdc) != HAL_OK) |
- | {Error_Handler();} | + | {Error_Handler();} |
- | pLayerCfg.WindowX0 = 0; //屏幕像素宽 | + | pLayerCfg.WindowX0 = 0; //屏幕像素宽 |
- | pLayerCfg.WindowX1 = 480; | + | pLayerCfg.WindowX1 = 480; |
- | pLayerCfg.WindowY0 = 0; //屏幕像素高 | + | pLayerCfg.WindowY0 = 0; //屏幕像素高 |
- | pLayerCfg.WindowY1 = 272; | + | pLayerCfg.WindowY1 = 272; |
- | pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; //屏幕格式 | + | pLayerCfg.PixelFormat = LTDC_PIXEL_FORMAT_RGB565; //屏幕格式 |
- | pLayerCfg.Alpha = 0xff; //透明度,不透明 | + | pLayerCfg.Alpha = 0xff; //透明度,不透明 |
- | pLayerCfg.Alpha0 = 0; //默认透明度 | + | pLayerCfg.Alpha0 = 0; //默认透明度 |
- | pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA; | + | pLayerCfg.BlendingFactor1 = LTDC_BLENDING_FACTOR1_CA; |
- | pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA; | + | pLayerCfg.BlendingFactor2 = LTDC_BLENDING_FACTOR2_CA; |
- | pLayerCfg.FBStartAdress = 0xC0000000; //帧缓冲区起始地址 | + | pLayerCfg.FBStartAdress = 0xC0000000; //帧缓冲区起始地址 |
- | pLayerCfg.ImageWidth = 480; //图层宽 | + | pLayerCfg.ImageWidth = 480; //图层宽 |
- | pLayerCfg.ImageHeight = 272; //图层高 | + | pLayerCfg.ImageHeight = 272; //图层高 |
- | pLayerCfg.Backcolor.Blue = 255; //图层背景RGB数值,白色 | + | pLayerCfg.Backcolor.Blue = 255; //图层背景RGB数值,白色 |
- | pLayerCfg.Backcolor.Green = 255; | + | pLayerCfg.Backcolor.Green = 255; |
- | pLayerCfg.Backcolor.Red = 255; | + | pLayerCfg.Backcolor.Red = 255; |
- | if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) | + | if (HAL_LTDC_ConfigLayer(&hltdc, &pLayerCfg, 0) != HAL_OK) |
- | { Error_Handler();} | + | { Error_Handler();} |
} | } | ||