日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

saiav.win forum.php,【emWin实战教程V2.0】第4章    emWin5.xx的裸机方式移植(F4

發布時間:2025/3/19 php 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 saiav.win forum.php,【emWin实战教程V2.0】第4章    emWin5.xx的裸机方式移植(F4 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//

/*

*********************************************************************************************************

*? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? 下面的函數被emWin所調用

*********************************************************************************************************

*/

/*

*********************************************************************************************************

*? ? 函 數 名: LCD_ConfigLTDC

*? ? 功能說明: 配置LTDC

*? ? 形? ? 參: 無

*? ? 返 回 值: 無

*? ?筆? ? 記:

*? ?? ? LCD_TFT 同步時序配置(整理自官方做的一個截圖,言簡意賅):

*? ?? ? ----------------------------------------------------------------------------

*

*? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? Total Width

*? ?? ?? ?? ?? ?? ?? ?? ?? ???<--------------------------------------------------->

*? ?? ?? ?? ?? ?? ?? ???Hsync width HBP? ?? ?? ?? ? Active Width? ?? ?? ?? ?? ? HFP

*? ?? ?? ?? ?? ?? ?? ?? ?? ???<---><--><--------------------------------------><-->

*? ?? ?? ?? ?? ?? ?? ?? ? ____? ? ____|_______________________________________|____

*? ?? ?? ?? ?? ?? ?? ?? ?? ???|___|? ?|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? |? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ?? ?? ?? ?? ? __|? ?? ?? ?|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ?/|\\? ? /|\\??|? ?? ?? ?? ?|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ? | VSYNC|? ?|? ?? ?? ?? ?|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ? |Width\\|/??|__? ?? ?? ? |? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ? |? ???/|\\? ???|? ?? ?? ?|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ? |??VBP |? ?? ?|? ?? ?? ?|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|? ? |

*? ?? ?? ?? ? |? ???\\|/_____|_________|_______________________________________|? ? |

*? ?? ?? ?? ? |? ???/|\\? ???|? ?? ?? ?| / / / / / / / / / / / / / / / / / / / |? ? |

*? ?? ?? ?? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ? Total? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ? Heigh? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ?? ?? ?? ? |Active|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ?? ?? ?? ? |Heigh |? ?? ?|? ?? ?? ?|/ / / / / / Active Display Area / / / /|? ? |

*? ?? ?? ?? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ?? ?? ?? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ?? ?? ?? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ?? ?? ?? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ?? ?? ?? ? |? ?? ?|? ?? ?|? ?? ?? ?|/ / / / / / / / / / / / / / / / / / / /|? ? |

*? ?? ?? ?? ? |? ???\\|/_____|_________|_______________________________________|? ? |

*? ?? ?? ?? ? |? ???/|\\? ???|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|

*? ?? ?? ?? ? |??VFP |? ?? ?|? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|

*? ?? ?? ?? ?\\|/? ? \\|/_____|______________________________________________________|

*

*

*? ???每個LCD設備都有自己的同步時序值:

*? ???Horizontal Synchronization (Hsync)

*? ???Horizontal Back Porch (HBP)

*? ???Active Width

*? ???Horizontal Front Porch (HFP)

*

*? ???Vertical Synchronization (Vsync)

*? ???Vertical Back Porch (VBP)

*? ???Active Heigh

*? ???Vertical Front Porch (VFP)

*

*? ???LCD_TFT 窗口水平和垂直的起始以及結束位置 :

*? ???----------------------------------------------------------------

*

*? ???HorizontalStart = (Offset_X + Hsync + HBP);

*? ???HorizontalStop??= (Offset_X + Hsync + HBP + Window_Width - 1);

*? ???VarticalStart? ?= (Offset_Y + Vsync + VBP);

*? ???VerticalStop? ? = (Offset_Y + Vsync + VBP + Window_Heigh - 1);

*

*********************************************************************************************************

*/

__IO uint16_t Width, Height, HSYNC_W, VSYNC_W, HBP, HFP, VBP, VFP;

void LCD_ConfigLTDC(void)

{

LTDC_InitTypeDef? ?? ? LTDC_InitStruct;

LTDC_Layer_TypeDef? ???LTDC_Layerx;

/* 使能LTDC */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC, ENABLE); //--------------(1)

/* 使能DMA2D */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE); //--------------(2)

/* 配置LCD引腳 */

LCD429_AF_GPIOConfig();??//--------------(3)

/* 配置信號極性 */

LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL;? ?/* HSYNC 低電平有效 */??//--------------(4)

LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL;? ?/* VSYNC 低電平有效 */

LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;? ?/* DE 低電平有效 */

LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IPC;

/* 背景色 */

LTDC_InitStruct.LTDC_BackgroundRedValue = 0;? ? //--------------(5)

LTDC_InitStruct.LTDC_BackgroundGreenValue = 0;

LTDC_InitStruct.LTDC_BackgroundBlueValue = 0;

/*

LTDC時鐘配置說明:

函數RCC_PLLSAIConfig的第一個參數是PLLSAI_N,第三個參數數PLLSAI_R。

函數RCC_LTDCCLKDivConfig的參數是RCC_PLLSAIDivR。

下面舉一個例子:PLLSAI_N = 400, PLLSAI_R = 4??RCC_PLLSAIDivR = 2:

首先,輸入時鐘 PLLSAI_VCO Input = HSE_VALUE / PLL_M = 8M / 8 = 1MHz

輸出時鐘 PLLSAI_VCO Output??= PLLSAI_VCO Input * PLLSAI_N = 1 * 400 = 400 1MHz

PLLLCDCLK = PLLSAI_VCO Output / PLLSAI_R = 400 / 4 = 100 1MHz

最好,LTDC 時鐘 = PLLLCDCLK / RCC_PLLSAIDivR = 100 / 2 = 50 1MHz

*/

/* 支持6種面板 */

switch (g_LcdType)? ?//--------------(6)

{

case LCD_35_480X320:? ?/* 3.5寸 480 * 320 */

RCC_PLLSAIConfig(429, 2,??4);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div8);

Width = 480;

Height = 272;

HSYNC_W = 10;

HBP = 20;

HFP = 20;

VSYNC_W = 20;

VBP = 20;

VFP = 20;

break;

case LCD_43_480X272:/* 4.3寸 480 * 272??選擇LTDC輸出20MHz,所有顏色深度都可以選擇這個時鐘頻率 */

RCC_PLLSAIConfig(280, 2,??7);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div2);

Width = 480;

Height = 272;

HSYNC_W = 40;

HBP = 2;

HFP = 2;

VSYNC_W = 9;

VBP = 2;

VFP = 2;

break;

case LCD_50_480X272:? ?? ???/* 5.0寸 480 * 272 */

RCC_PLLSAIConfig(429, 2,??4);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div8);

Width = 480;

Height = 272;

HSYNC_W = 40;

HBP = 2;

HFP = 2;

VSYNC_W = 9;

VBP = 2;

VFP = 2;

break;

case LCD_50_800X480:/* 5.0寸 800 * 480,24位或者32位色選擇LTDC輸出15MHz,16位或者8位30MHz */

RCC_PLLSAIConfig(420, 2,??7);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);

Width = 800;

Height = 480;

HSYNC_W = 96;

HBP = 10;

HFP = 10;

VSYNC_W = 2;

VBP = 10;

VFP = 10;

break;

//--------------(7)

case LCD_70_800X480:/* 7.0寸 800 * 480,24位或者32位色選擇LTDC輸出15MHz,16位或者8位30MHz*/

RCC_PLLSAIConfig(420, 2,??7);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div2);

#if 0

RCC_PLLSAIConfig(400, 2,??2);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);

#endif

Width = 800;

Height = 480;

HSYNC_W = 48;

HBP = 88;

HFP = 40;

VSYNC_W = 3;

VBP = 32;

VFP = 13;

break;

case LCD_70_1024X600:? ?? ? /* 7.0寸 1024 * 600 */

LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL;? ?/* HSYNC 低電平有效 */

LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL;? ?/* VSYNC 低電平有效 */

LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;? ?/* DE 低電平有效 */

LTDC_InitStruct.LTDC_PCPolarity = LTDC_PCPolarity_IIPC;

/* IPS 7寸 1024*600,??像素時鐘頻率范圍 : 57 -- 65 --- 70.5MHz

PLLSAI_VCO Input? ?= HSE_VALUE / PLL_M = 8M / 4 = 2 Mhz

PLLSAI_VCO Output??= PLLSAI_VCO Input * PLLSAI_N =? ?2 * 429 = 858 Mhz

PLLLCDCLK = PLLSAI_VCO Output / PLLSAI_R = 858 / 4 = 214.5 Mhz

LTDC clock frequency = PLLLCDCLK / RCC_PLLSAIDivR = 214.5 / 4 = 53.625 Mhz

(429, 2, 4); RCC_PLLSAIDivR_Div4 實測像素時鐘 = 53.7M

*/

RCC_PLLSAIConfig(429, 2, 6);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);

Width = 1024;

Height = 600;

HSYNC_W = 2;??/* =10時,顯示錯位,20時部分屏可以的,80時全部OK */

HBP = 157;

HFP = 160;

VSYNC_W = 2;

VBP = 20;

VFP = 12;

break;

default:

RCC_PLLSAIConfig(429, 2,??4);

RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div8);

Width = 800;

Height = 480;

HSYNC_W = 80; /* =10時,顯示錯位,20時部分屏可以的,80時全部OK */

HBP = 10;

HFP = 10;

VSYNC_W = 10;

VBP = 10;

VFP = 10;

break;

}

g_LcdWidth??= Width;? ?? ???/* 顯示屏分辨率-寬度 */??//--------------(8)

g_LcdHeight = Height;? ?? ? /* 顯示屏分辨率-高度 */

/* 使能 PLLSAI */

RCC_PLLSAICmd(ENABLE);? ?//--------------(9)

/* 等待完成 */

while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET);

/* 配置LTDC的同步時序 */

LTDC_InitStruct.LTDC_HorizontalSync = HSYNC_W;

LTDC_InitStruct.LTDC_VerticalSync = VSYNC_W;

LTDC_InitStruct.LTDC_AccumulatedHBP = LTDC_InitStruct.LTDC_HorizontalSync + HBP;

LTDC_InitStruct.LTDC_AccumulatedVBP = LTDC_InitStruct.LTDC_VerticalSync + VBP;

LTDC_InitStruct.LTDC_AccumulatedActiveW = Width + LTDC_InitStruct.LTDC_AccumulatedHBP;

LTDC_InitStruct.LTDC_AccumulatedActiveH = Height + LTDC_InitStruct.LTDC_AccumulatedVBP;

LTDC_InitStruct.LTDC_TotalWidth = LTDC_InitStruct.LTDC_AccumulatedActiveW + HFP;

LTDC_InitStruct.LTDC_TotalHeigh = LTDC_InitStruct.LTDC_AccumulatedActiveH + VFP;

LTDC_Init(<DC_InitStruct); //--------------(10)

}

總結

以上是生活随笔為你收集整理的saiav.win forum.php,【emWin实战教程V2.0】第4章    emWin5.xx的裸机方式移植(F4的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。