中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

易橙云做的網(wǎng)站怎么樣2022最新時事新聞及點評

易橙云做的網(wǎng)站怎么樣,2022最新時事新聞及點評,杭州網(wǎng)站建設制作公司,建設網(wǎng)站網(wǎng)址大綱 1. 引言 2. TLI外設特點 3. TLI硬件架構(gòu) 4. TLI寄存器功能 5. TLI的配置和使用步驟 6. TLI圖層概念 7. 圖像處理和顯示優(yōu)化 8. 基于GD32H759I-EVAL開發(fā)板的TLI應用示例 1. 引言 在當今的嵌入式系統(tǒng)設計中,圖形用戶界面(GUI)的應…

大綱

1. 引言
2. TLI外設特點
3. TLI硬件架構(gòu)
4. TLI寄存器功能
5. TLI的配置和使用步驟
6. TLI圖層概念
7. 圖像處理和顯示優(yōu)化
8. 基于GD32H759I-EVAL開發(fā)板的TLI應用示例

?

1. 引言

在當今的嵌入式系統(tǒng)設計中,圖形用戶界面(GUI)的應用越來越廣泛,這不僅僅是因為它們提供了更直觀、易用的交互方式,還因為強大的GUI能夠極大地提升產(chǎn)品的市場競爭力。GD32H7系列微控制器(MCU)作為高性能的ARM Cortex-M7平臺,以其高達480 MHz的處理速度和豐富的外設集成度,成為實現(xiàn)復雜GUI應用的理想選擇。其中,TFT LCD Interface(TLI)作為GD32H7系列的一項關(guān)鍵外設,為開發(fā)人員提供了一個強大而靈活的工具,用于開發(fā)高質(zhì)量的圖形顯示應用。

TLI外設不僅支持多種顏色格式和高分辨率的顯示,還內(nèi)置了硬件圖層疊加和像素格式轉(zhuǎn)換等高級功能,這使得開發(fā)者能夠輕松實現(xiàn)復雜的圖形界面設計,同時保持系統(tǒng)的高性能運行。此外,GD32H7系列的高集成度意味著開發(fā)者可以利用更少的外圍組件來完成更多的功能,這在成本和空間受限的應用場景下尤為寶貴。

2. TLI外設特點:

  1. 支持的分辨率:TLI外設支持高達2048x2048像素的分辨率,使其能夠驅(qū)動高清顯示屏,為用戶提供豐富、清晰的圖形和文本顯示。

  2. 圖層:支持多達2個圖層,每個圖層可以單獨控制和配置,包括顏色格式、大小、位置等,支持圖層間的混合和透明度控制。

  3. 像素格式:支持多種像素格式,包括但不限于RGB565, RGB888, ARGB1555, ARGB4444, L8(灰度圖像)等,為不同類型的圖像顯示提供靈活性。

  4. 直接存儲訪問(DMA):內(nèi)置DMA控制,減輕CPU的負擔,提高數(shù)據(jù)傳輸效率,使得圖像能夠快速更新。

  5. 外部存儲器接口:與外部存儲器接口(如SDRAM)的無縫集成,允許存儲大型圖像和圖形資產(chǎn),為復雜或動態(tài)界面提供必要的存儲支持。

  6. 同步控制:提供靈活的同步控制選項,包括水平和垂直同步,以及像素時鐘控制,確保與各種LCD顯示屏的兼容性。

  7. 節(jié)能模式:支持多種節(jié)能模式,包括關(guān)閉背光和減少幀率,幫助減少整體功耗。

3. 應用場景:

  • 高清圖形用戶界面(GUI):如觸摸屏界面、儀表盤、信息娛樂系統(tǒng)等。
  • 工業(yè)控制:如機器人控制器、自動化設備的操作界面。
  • 醫(yī)療設備:如患者監(jiān)視器、診斷儀器的顯示屏。
  • 消費電子:如智能家居控制面板、便攜式媒體播放器。

3.1提示:

在設計和實現(xiàn)基于TLI的解決方案時,需要特別注意以下幾點:

  • 確保所選顯示屏兼容TLI支持的同步模式和像素格式。
  • 圖層管理和內(nèi)存分配策略對于高效使用TLI和優(yōu)化性能至關(guān)重要。
  • 利用DMA傳輸和外部存儲器來存儲和管理大型圖形資源,以提高系統(tǒng)性能和響應速度。

通過精確地配置TLI的各種參數(shù)和利用其強大的圖形處理能力,GD32H7系列微控制器可以為需要高性能圖形顯示的應用提供強有力的解決方案。

3.2 TLI硬件塊圖和組成部分:

  1. 圖層控制器:TLI包含多個獨立的圖層控制器,每個控制器負責管理一個圖層的顯示。這些控制器允許不同圖層的內(nèi)容獨立渲染和控制,包括顏色格式、大小、位置及透明度等參數(shù)。

  2. 像素格式轉(zhuǎn)換器:TLI內(nèi)置的像素格式轉(zhuǎn)換器支持多種像素格式的轉(zhuǎn)換,確保不同格式的圖像數(shù)據(jù)可以被正確地處理并顯示。這對于兼容多種圖像資源和提供靈活的圖形設計至關(guān)重要。

  3. 定時器同步模塊:該模塊負責生成與外部LCD顯示屏同步所需的時序信號,包括水平同步(HSYNC)、垂直同步(VSYNC)和像素時鐘(Pixel Clock)。正確的時序信號是保證圖像穩(wěn)定顯示的關(guān)鍵。

  4. DMA控制器:TLI的DMA(直接存儲器訪問)控制器允許圖像數(shù)據(jù)直接從內(nèi)存?zhèn)鬏數(shù)絋LI,無需CPU干預。這極大提高了數(shù)據(jù)傳輸?shù)男屎驼w系統(tǒng)性能。

  5. 背光控制模塊:控制LCD背光的模塊,提供對背光亮度的調(diào)節(jié)功能,以適應不同的環(huán)境光條件,并幫助節(jié)能。

3.3 關(guān)鍵組件介紹:

  • 圖層控制器:每個圖層控制器都可以配置為不同的顏色深度和格式,如RGB565、ARGB8888等。此外,圖層控制器還支持圖層的透明度混合和色鍵功能,以實現(xiàn)復雜的圖形效果。

  • 像素格式轉(zhuǎn)換器:該轉(zhuǎn)換器支持從一種像素格式到另一種像素格式的轉(zhuǎn)換,如從RGB格式到Y(jié)UV格式。這對于視頻播放和圖像處理應用特別有用。

  • 定時器同步模塊:通過精確配置,該模塊生成與特定LCD面板規(guī)格相匹配的時序信號,保證顯示內(nèi)容的同步和穩(wěn)定性。

  • DMA控制器:DMA控制器支持高效的數(shù)據(jù)傳輸,能夠同時處理多個圖層數(shù)據(jù)的傳輸任務。它可以根據(jù)需要配置為連續(xù)模式或一次性傳輸模式。

通過這些高度集成的硬件組件,GD32H7系列微控制器中的TLI能夠為開發(fā)者提供強大而靈活的顯示控制能力,使其能夠輕松構(gòu)建高質(zhì)量的圖形用戶界面和視頻播放應用。

4. TLI的使用方法及寄存器介紹

TLI(LCD-TFT顯示控制器)的使用方法包括初始化配置、圖層設置、時序參數(shù)配置以及圖形數(shù)據(jù)的管理。以下是詳細的使用方法和關(guān)鍵寄存器的介紹,以表格形式呈現(xiàn)以便于理解。

初始化配置

在開始使用TLI之前,首先需要進行初始化配置,包括系統(tǒng)時鐘配置、TLI時鐘源選擇、以及基本的顯示參數(shù)設置。

步驟1:系統(tǒng)時鐘配置

確保系統(tǒng)時鐘有足夠的頻率以供TLI正常工作。GD32H7系列通常支持的最高系統(tǒng)時鐘頻率可以滿足大多數(shù)TLI應用場景的需求。

步驟2:TLI時鐘源選擇

選擇合適的TLI時鐘源,并根據(jù)LCD顯示器的規(guī)格設置相應的時鐘分頻,以生成正確的像素時鐘。

步驟3:基本顯示參數(shù)設置

設置TLI的基本顯示參數(shù),包括顯示方向、分辨率等。

圖層設置

TLI支持多個獨立圖層的顯示控制,每個圖層可以單獨配置,包括圖層大小、位置、顏色格式等。

步驟1:圖層使能

通過設置TLI圖層控制寄存器來使能特定的圖層。

步驟2:圖層配置

配置圖層的顏色格式、起始地址、大小和位置等參數(shù)。

時序參數(shù)配置

根據(jù)連接的LCD顯示器規(guī)格,配置TLI的時序參數(shù),包括同步脈沖寬度、背沿和前沿時間等。

圖形數(shù)據(jù)管理

通過DMA傳輸圖形數(shù)據(jù)到圖層的幀緩沖區(qū),或者直接通過CPU寫入數(shù)據(jù)。

TLI(TFT-LCD接口)寄存器

在GD32H737, GD32H757, 和GD32H759系列微控制器中,TLI (TFT-LCD接口)寄存器是用于配置和管理TFT-LCD顯示模塊的關(guān)鍵組成部分。下面是TLI寄存器中一些重要寄存器的詳細介紹和它們的用法 :

  1. 同步脈沖寬度寄存器(TLI_SPSZ):用于配置水平同步(HS)和垂直同步(VS)脈沖的寬度。這決定了每幀中同步信號的精確時長。

  2. 后沿寬度寄存器(TLI_BPSZ):設置水平和垂直后沿的寬度,即HS和VS信號結(jié)束后到下一個像素數(shù)據(jù)開始的時間間隔。

  3. 有效寬度寄存器(TLI_ASZ):定義了顯示區(qū)域的有效寬度,即屏幕上實際顯示圖像的區(qū)域。

  4. 總寬度寄存器(TLI_TSZ):設置了整個顯示區(qū)域的總寬度,包括同步脈沖、后沿、顯示區(qū)域及前沿的寬度。

  5. 控制寄存器(TLI_CTL):負責整個TLI模塊的啟動、停止以及其他控制功能,如抖動功能的啟用或禁用。

  6. 背景色配置寄存器(TLI_BGC):設置LCD顯示的背景顏色,包括紅色、綠色和藍色的值。

  7. 中斷使能寄存器(TLI_INTEN):啟用或禁用TLI的各種中斷源,如行標記中斷、FIFO錯誤中斷等。

  8. 中斷標志寄存器(TLI_INTF):顯示當前哪些中斷事件已經(jīng)發(fā)生,例如行標記事件或FIFO下溢錯誤。

  9. 中斷標志清除寄存器(TLI_INTC):用于手動清除已發(fā)生的中斷標志,確保中斷處理程序正確執(zhí)行。

  10. 行標記寄存器(TLI_LM):用于設置當屏幕刷新到特定行時,觸發(fā)一個行標記中斷,這通常用于動畫或屏幕更新同步。

  11. 當前像素位置寄存器(TLI_CPPOS):顯示當前正在處理的像素的水平和垂直位置,這對于調(diào)試顯示問題非常有用。

  1. 第x 層控制寄存器(TLI_LxCTL):每個圖層都有一個對應的配置寄存器,用于控制圖層的可見性、像素格式、Alpha值等關(guān)鍵特性。通過配置這些寄存器,可以對各個圖層進行精確的控制,包括啟用/禁用圖層、選擇合適的像素格式,以及調(diào)整圖層的透明度。

  2. 圖層窗口偏移寄存器(窗口參數(shù)寄存器)(TLI_LxHPCR、TLI_LxVPCR):這兩個寄存器集合定義了每個圖層在整個屏幕中的位置和大小。通過設置水平和垂直方向的起始和結(jié)束位置,可以控制圖層的精確顯示區(qū)域。

  3. 圖層幀緩沖區(qū)地址寄存器(TLI_LxFBADDR)指定了每個圖層的幀緩沖區(qū)的物理地址。幀緩沖區(qū)是存儲圖像數(shù)據(jù)的內(nèi)存區(qū)域,TLI根據(jù)此地址讀取相應的像素數(shù)據(jù)用于顯示。

  4. 圖層幀緩沖區(qū)行距寄存器(TLI_LxFLLEN:設置了圖層幀緩沖區(qū)中每行像素數(shù)據(jù)的長度和偏移,確保TLI正確解析幀數(shù)據(jù)。? 注意的是 緩沖區(qū)的 大小 不僅與屏幕大小相關(guān),還與圖像的數(shù)據(jù)格式相關(guān) 如果是 RGB565,則一個像素占2個字節(jié),如果是RGB888,則一個像素占3個字節(jié), 這將影響 寄存器的值 如果 圖層為全屏大小(480*272),采用RGB565圖像,

    1. STDOFF[13:0] (<<16) 步幅偏移? 這個值定義了從某行起始處到下一行起始處之間的字節(jié)數(shù),則為 (480 * 2)

    2. FLL [13:0]? :?? ((480 * 2) + 3)
  5. 顏色鍵控制寄存器(TLI_LxCKEY):用于配置圖層的顏色鍵功能,可以設置一個特定的顏色作為“透明”顏色,當圖層中的像素為該顏色時,不會被顯示出來,從而實現(xiàn)圖層之間的透明疊加效果。

  6. 圖層混合配置寄存器(TLI_LxBFCR):控制圖層間的混合模式和Alpha混合參數(shù),通過調(diào)整這些參數(shù),可以實現(xiàn)圖層之間復雜的視覺效果,如淡入淡出、圖層遮罩等。

  7. CLUT配置寄存器(TLI_LxCLUTWR):對于使用顏色查找表(CLUT)的圖層,此寄存器用于寫入CLUT的顏色值。顏色查找表允許使用較少的數(shù)據(jù)位表示寬色域,節(jié)省內(nèi)存同時保持良好的圖像質(zhì)量。

  8. 中斷使能寄存器(TLI_INTEN):控制TLI的中斷使能狀態(tài),可用于開啟或關(guān)閉特定的TLI事件中斷,如幀結(jié)束中斷、行標記中斷等,以便在這些事件發(fā)生時執(zhí)行相應的中斷服務程序。

  9. 中斷狀態(tài)寄存器(TLI_INTF)和中斷清除寄存器(TLI_INTC):這兩個寄存器用于管理TLI產(chǎn)生的中斷。中斷狀態(tài)寄存器顯示了哪些中斷事件已經(jīng)發(fā)生,而中斷清除寄存器則用于清除已經(jīng)處理的中斷事件標志,防止重復響應。

5. TLI的配置和使用步驟

5.1. 初始化步驟
????????系統(tǒng)時鐘配置
  • TLI的時鐘來源于PLL2輸出,需要在RCU(復位和時鐘控制單元)中進行配置和啟用。
  • 確保PLL2配置了正確的乘法和除法因子,以獲得適合TLI的時鐘速率。
????????GPIO配置
  • 為TLI功能配置GPIO引腳,包括RGB數(shù)據(jù)、像素時鐘(PIXCLK)、水平同步(HSYNC)、垂直同步(VSYNC)和顯示使能(DE)信號的引腳。
  • 用于TLI功能的特定引腳可能需要設置為復用功能模式,并配置為高速輸出。
5.2. TLI核心配置
  • 啟動TLI:通過設置TLI_CTL寄存器中的TLIEN位來啟用TLI。
  • 配置顯示時序:編程TLI_SPSZ、TLI_BPSZ、TLI_ASZ和TLI_TSZ寄存器,為水平和垂直尺寸定義同步脈沖寬度、背景寬度、活動區(qū)域大小和總大小。
5.3. 圖層配置
  • 定義圖層屬性,包括顏色格式、窗口大小、位置,以及適用的話,顏色鍵控和CLUT(顏色查找表)設置。
  • 每個圖層都有自己的控制和配置寄存器,如LxWHPCR、LxWVPCR、LxDCCR,這些寄存器定義了圖層的窗口大小、位置和默認顏色。
5.4. 圖層疊加和透明度設置
  • 使用LxPFCR和LxCAxCR寄存器配置圖層的混合因素,以達到多個圖層之間所需的透明度和混合效果。
  • 利用顏色鍵控功能,通過配置LxCKCR寄存器使特定顏色透明。
5.5. 啟動和停止顯示更新
  • 要開始顯示,確保圖層被啟用,并且TLI主控制被啟用。此操作啟動從內(nèi)存通過DMA到TLI的數(shù)據(jù)傳輸,然后TLI將像素數(shù)據(jù)輸出到連接的LCD。
  • 停止顯示更新涉及禁用圖層和/或主TLI控制,以停止數(shù)據(jù)傳輸和輸出。
5.6 示例代碼 ??????
/*** @brief 配置LCD的TLI接口* * 該函數(shù)初始化TLI接口,配置其時鐘源、信號極性、同步寬度、像素格式等參數(shù),* 以及配置兩個圖層(layer0和layer1)的窗口位置、像素格式、默認顏色和融合因子等參數(shù)。* * @note 函數(shù)中不接受任何參數(shù),也不返回任何值。*/
void lcd_config(void)
{/* 啟用TLI時鐘 */rcu_periph_clock_enable(RCU_TLI);tli_gpio_config();/* 配置PLL2以生成72MHz的TLI時鐘 */rcu_pll_input_output_clock_range_config(IDX_PLL2, RCU_PLL2RNG_1M_2M, RCU_PLL2VCO_150M_420M);if(ERROR == rcu_pll2_config(25, 188, 3, 3, 3)) {while(1) {}}rcu_pll_clock_output_enable(RCU_PLL2R);rcu_tli_clock_div_config(RCU_PLL2R_DIV8);rcu_osci_on(RCU_PLL2_CK);if(ERROR == rcu_osci_stab_wait(RCU_PLL2_CK)) {while(1) {}}/* TLI初始化 *//* 初始化水平同步信號極性為低電平有效 */tli_initstruct.signalpolarity_hs = TLI_HSYN_ACTLIVE_LOW;/* 初始化垂直同步信號極性為低電平有效 */tli_initstruct.signalpolarity_vs = TLI_VSYN_ACTLIVE_LOW;/* 初始化數(shù)據(jù)使能信號極性為低電平有效 */tli_initstruct.signalpolarity_de = TLI_DE_ACTLIVE_LOW;/* 初始化像素時鐘極性為輸入的像素時鐘 */tli_initstruct.signalpolarity_pixelck = TLI_PIXEL_CLOCK_TLI;/* 時序配置 *//* 配置水平同步寬度 */tli_initstruct.synpsz_hpsz = 40;/* 配置垂直同步高度 */tli_initstruct.synpsz_vpsz = 9;/* 配置累計水平后 porch */tli_initstruct.backpsz_hbpsz = 42;/* 配置累計垂直后 porch */tli_initstruct.backpsz_vbpsz = 11;/* 配置累計激活寬度 */tli_initstruct.activesz_hasz = 522;/* 配置累計激活高度 */tli_initstruct.activesz_vasz = 283;/* 配置總寬度 */tli_initstruct.totalsz_htsz = 524;/* 配置總高度 */tli_initstruct.totalsz_vtsz = 285;/* 配置LCD背景顏色的R、G、B分量值 */tli_initstruct.backcolor_red = 0xFF;tli_initstruct.backcolor_green = 0xFF;tli_initstruct.backcolor_blue = 0xFF;tli_init(&tli_initstruct);/* 配置圖層0的窗口位置和大小 */tli_layer0_initstruct.layer_window_leftpos = 45;tli_layer0_initstruct.layer_window_rightpos = (43 + 480 - 1);tli_layer0_initstruct.layer_window_toppos =  12;tli_layer0_initstruct.layer_window_bottompos = (12 + 272 - 1);/* 配置圖層0的像素格式 */tli_layer0_initstruct.layer_ppf = LAYER_PPF_RGB565;/* 配置圖層0的常量Alpha值 */tli_layer0_initstruct.layer_sa = 255;/* 配置圖層0的默認顏色(R、G、B、A分量值) */tli_layer0_initstruct.layer_default_blue = 0xFF;tli_layer0_initstruct.layer_default_green = 0xFF;tli_layer0_initstruct.layer_default_red = 0xFF;tli_layer0_initstruct.layer_default_alpha = 0xFF;/* 配置圖層0的融合因子 */tli_layer0_initstruct.layer_acf1 = LAYER_ACF1_PASA;tli_layer0_initstruct.layer_acf2 = LAYER_ACF1_PASA;/* 配置圖層0的輸入地址(幀緩沖區(qū)位于FLASH內(nèi)存中) */tli_layer0_initstruct.layer_frame_bufaddr = (uint32_t)image_background0;tli_layer0_initstruct.layer_frame_line_length = ((480 * 2) + 3);tli_layer0_initstruct.layer_frame_buf_stride_offset = (480 * 2);tli_layer0_initstruct.layer_frame_total_line_number = 272;tli_layer_init(LAYER0, &tli_layer0_initstruct);/* 配置圖層1的窗口位置和大小 */tli_layer1_initstruct.layer_window_leftpos = 162;tli_layer1_initstruct.layer_window_rightpos = (160 + 240 - 1);tli_layer1_initstruct.layer_window_toppos =  12;tli_layer1_initstruct.layer_window_bottompos = (12 + 272 - 1);/* 配置圖層1的像素格式 */tli_layer1_initstruct.layer_ppf = LAYER_PPF_RGB565;/* 配置圖層1的常量Alpha值 */tli_layer1_initstruct.layer_sa = 255;/* 配置圖層1的默認顏色(R、G、B、A分量值) */tli_layer1_initstruct.layer_default_blue = 0xFF;tli_layer1_initstruct.layer_default_green = 0xFF;tli_layer1_initstruct.layer_default_red = 0xFF;tli_layer1_initstruct.layer_default_alpha = 0;/* 配置圖層1的融合因子 */tli_layer1_initstruct.layer_acf1 = LAYER_ACF1_PASA;tli_layer1_initstruct.layer_acf2 = LAYER_ACF1_PASA;/* 配置圖層1的輸入地址(幀緩沖區(qū)位于內(nèi)存SDRAM中) */tli_layer1_initstruct.layer_frame_bufaddr = (uint32_t)0xC1000000;tli_layer1_initstruct.layer_frame_line_length = ((240 * 2) + 3);tli_layer1_initstruct.layer_frame_buf_stride_offset = (240 * 2);tli_layer1_initstruct.layer_frame_total_line_number = 272;tli_layer_init(LAYER1, &tli_layer1_initstruct);tli_dither_config(TLI_DITHER_ENABLE);
}

6.圖層概念

在GD32H7系列的TLI(TFT LCD Controller)中,圖層(Layer)是獨立的圖像區(qū)域,可以單獨控制并與其他圖層疊加顯示。每個圖層可以設置不同的屬性,如顏色格式、大小、位置和透明度等。這種多圖層的設計允許開發(fā)者創(chuàng)建復雜且動態(tài)的用戶界面,如菜單、按鈕、動畫和其他圖形元素,而不會互相干擾。

6.1 如何創(chuàng)建和配置圖層
  1. 選擇圖層并啟用:GD32H7的TLI支持多個圖層。首先需要根據(jù)需求選擇并啟用特定的圖層。例如,使用TLI_LayerEnable(LAYERx);函數(shù)啟用圖層。

  2. 配置圖層屬性

    • 設置顏色格式:根據(jù)圖像數(shù)據(jù)的類型,選擇合適的顏色格式,如RGB565或ARGB8888等。
    • 設定圖層大小和位置:指定圖層在LCD上的顯示位置和大小。
    • 設置幀緩沖區(qū):為圖層指定幀緩沖區(qū)的地址,這里存放圖層要顯示的圖像數(shù)據(jù)。
  3. 透明度和顏色鍵控:配置圖層的透明度和顏色鍵控(Color Keying)功能,以實現(xiàn)圖層之間的透明或半透明效果。

6.2 圖層的動態(tài)管理和更新在LVGL項目中的應用

在使用LVGL(Light and Versatile Graphics Library)構(gòu)建GUI項目時,TLI的圖層管理功能可以與LVGL框架結(jié)合,以優(yōu)化顯示效果和性能。

  1. 圖層與LVGL對象綁定:可以將TLI圖層與LVGL的對象或頁面綁定,為不同的UI元素使用不同的圖層。這樣做可以減少重繪的需要,提高界面響應速度。

  2. 動態(tài)更新內(nèi)容:當UI元素需要更新時,只需修改對應圖層的幀緩沖區(qū)內(nèi)容或?qū)傩?#xff0c;而無需重新繪制整個屏幕。這在動畫效果或內(nèi)容頻繁變動的場景中特別有用。

  3. 透明度和疊加效果:利用TLI的透明度管理,可以創(chuàng)建具有透明或半透明效果的UI元素,如彈出窗口、提示框等。同時,顏色鍵控功能可用于實現(xiàn)復雜的疊加效果。

  4. 性能優(yōu)化:通過精心設計圖層的使用和配置,可以優(yōu)化內(nèi)存使用和提高渲染效率。例如,靜態(tài)背景可以放置在一個單獨的圖層中,而動態(tài)內(nèi)容在另一個圖層,減少了不必要的刷新。

7. 圖像處理和顯示優(yōu)化

??????? 在GD32H7系列MCU中,TLI的設計提供了強大的圖像顯示功能,包括支持多種像素格式的處理、像素DMA傳輸、層窗口和混合功能、抖動功能,以及顏色查找表(LUT)支持。這些功能可以用于提高圖像處理和顯示的效率和質(zhì)量。以下是一些優(yōu)化策略:

7.1利用像素DMA優(yōu)化數(shù)據(jù)傳輸

??????? 像素DMA功能使得圖像數(shù)據(jù)可以直接從內(nèi)存?zhèn)鬏數(shù)斤@示緩沖區(qū),減少CPU的負擔。為了最大化數(shù)據(jù)傳輸效率,應確保圖像數(shù)據(jù)存儲布局與TLI的數(shù)據(jù)需求相匹配,從而減少任何不必要的數(shù)據(jù)重排或轉(zhuǎn)換。

7.2采用多層顯示策略

通過TLI支持的多層顯示,可以將不同的視覺元素放置在不同的圖層上,例如,背景、圖標、文本可以分別在不同的層上處理和渲染。這樣做不僅可以簡化圖像合成的復雜度,還可以在不重繪整個屏幕的情況下更新局部區(qū)域,從而提高更新效率和響應速度。

7.3優(yōu)化像素格式使用

根據(jù)顯示的需求選擇合適的像素格式,可以在保證視覺效果的同時優(yōu)化內(nèi)存使用。例如,對于不需要透明效果的簡單圖形,可以選擇不帶Alpha通道的像素格式,以節(jié)省內(nèi)存空間。

7.4使用顏色查找表(LUT)

對于使用顏色較少的圖像,比如圖標或用戶界面元素,使用顏色查找表(LUT)可以減少每個像素所需的數(shù)據(jù)量,同時保持良好的視覺效果。這對于減少內(nèi)存占用和加速圖像渲染尤為有效。

7.5色鍵透明處理

利用TLI的色鍵功能,可以實現(xiàn)簡單的圖像透明處理,通過設定特定的顏色值作為“透明”標記,TLI在渲染時會自動將匹配該顏色的像素渲染為透明。這種方法適用于實現(xiàn)簡單的圖像疊加效果,而無需復雜的Alpha混合計算。

?8.嘟嘟嘟啊?示例代碼:


#include "gd32h7xx.h"
#include "systick.h"
#include <stdio.h>
#include "gd32h759i_eval.h"
#include "image1.h"
#include "image2.h"
#include "image3.h"
#include "image4.h"
#include "image5.h"
#include "image6.h"
#include "image7.h"
#include "image8.h"
#include "image9.h"
#include "image10.h"
#include "image11.h"
#include "image12.h"#if defined (__clang__)
#include "logo.h"
#elif defined ( __ICCARM__ )
#include "logo_iar.h"
#endif
// 定義顯示設備的同步脈沖和有效顯示區(qū)域參數(shù)// 水平方向參數(shù)
#define HORIZONTAL_SYNCHRONOUS_PULSE  41 // 水平同步脈沖寬度
#define HORIZONTAL_BACK_PORCH         2 // 水平后 porch 寬度
#define ACTIVE_WIDTH                  480 // 水平有效顯示寬度
#define HORIZONTAL_FRONT_PORCH        2 // 水平前 porch 寬度// 垂直方向參數(shù)
#define VERTICAL_SYNCHRONOUS_PULSE    10 // 垂直同步脈沖高度
#define VERTICAL_BACK_PORCH           2 // 垂直后 porch 高度
#define ACTIVE_HEIGHT                 272 // 垂直有效顯示高度
#define VERTICAL_FRONT_PORCH          2 // 垂直前 porch 高度__ALIGNED(16) uint8_t blended_address_buffer[58292];static void ipa_config(uint32_t baseaddress);
static void tli_config(void);
static void tli_blend_config(void);
static void tli_gpio_config(void);
static void lcd_config(void);
static void cache_enable(void);/*!\brief      main program\param[in]  none\param[out] none\retval     none
*/
int main(void)
{/* enable the CPU cache */cache_enable();/* configure the SysTick, TLI */systick_config();lcd_config();/* enable TLI layers */tli_layer_enable(LAYER0);tli_layer_enable(LAYER1);tli_reload_config(TLI_FRAME_BLANK_RELOAD_EN);/* enable TLI */tli_enable();/* configure TLI and display blend image */tli_blend_config();tli_reload_config(TLI_REQUEST_RELOAD_EN);while(1) {/* IPA configuration and display the images one by one */ipa_config((uint32_t)&gImage_image1);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image2);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image3);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image4);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image5);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image6);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image7);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image8);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image9);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image10);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image11);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);ipa_config((uint32_t)&gImage_image12);ipa_transfer_enable();while(RESET == ipa_interrupt_flag_get(IPA_INT_FLAG_FTF));delay_1ms(50);}
}/*!\brief      LCD Configuration\param[in]  none\param[out] none\retval     none
*/
static void lcd_config(void)
{/* configure the GPIO of TLI */tli_gpio_config();/* configure TLI peripheral */tli_config();
}
/*! \brief      配置TLI外設\param[in]  無\param[out] 無\retval     無
*/
static void tli_config(void)
{tli_parameter_struct               tli_init_struct; // TLI配置結(jié)構(gòu)體tli_layer_parameter_struct         tli_layer_init_struct; // TLI層配置結(jié)構(gòu)體// 啟用TLI外設的時鐘rcu_periph_clock_enable(RCU_TLI);tli_gpio_config(); // 配置TLI相關(guān)的GPIO// 配置PLL2時鐘:CK_PLL2P/CK_PLL2Q/CK_PLL2R = HXTAL_VALUE / 25 * 150 / 3rcu_pll_input_output_clock_range_config(IDX_PLL2, RCU_PLL2RNG_1M_2M, RCU_PLL2VCO_150M_420M);if(ERROR == rcu_pll2_config(25, 150, 3, 3, 3)) {while(1) {}}// 啟用PLL2R時鐘輸出并配置TLI時鐘分頻rcu_pll_clock_output_enable(RCU_PLL2R);rcu_tli_clock_div_config(RCU_PLL2R_DIV8);// 啟用PLL2時鐘rcu_osci_on(RCU_PLL2_CK);// 等待PLL2時鐘穩(wěn)定if(ERROR == rcu_osci_stab_wait(RCU_PLL2_CK)) {while(1) {}}/* 配置TLI參數(shù)結(jié)構(gòu)體 */// 配置水平同步、垂直同步、DE及像素時鐘極性tli_init_struct.signalpolarity_hs = TLI_HSYN_ACTLIVE_LOW;tli_init_struct.signalpolarity_vs = TLI_VSYN_ACTLIVE_LOW;tli_init_struct.signalpolarity_de = TLI_DE_ACTLIVE_LOW;tli_init_struct.signalpolarity_pixelck = TLI_PIXEL_CLOCK_TLI;// 配置LCD顯示時序參數(shù)tli_init_struct.synpsz_hpsz = HORIZONTAL_SYNCHRONOUS_PULSE - 1;tli_init_struct.synpsz_vpsz = VERTICAL_SYNCHRONOUS_PULSE - 1;tli_init_struct.backpsz_hbpsz = HORIZONTAL_SYNCHRONOUS_PULSE + HORIZONTAL_BACK_PORCH - 1;tli_init_struct.backpsz_vbpsz = VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH - 1;tli_init_struct.activesz_hasz = HORIZONTAL_SYNCHRONOUS_PULSE + HORIZONTAL_BACK_PORCH + ACTIVE_WIDTH- 1;tli_init_struct.activesz_vasz = VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH + ACTIVE_HEIGHT - 1;tli_init_struct.totalsz_htsz = HORIZONTAL_SYNCHRONOUS_PULSE + HORIZONTAL_BACK_PORCH + ACTIVE_WIDTH +HORIZONTAL_FRONT_PORCH - 1;tli_init_struct.totalsz_vtsz = VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH + ACTIVE_HEIGHT +VERTICAL_FRONT_PORCH - 1;// 配置LCD背景RGB顏色tli_init_struct.backcolor_red = 0xFF;tli_init_struct.backcolor_green = 0xFF;tli_init_struct.backcolor_blue = 0xFF;tli_init(&tli_init_struct); // 初始化TLI/** TLI(Transport Layer Interface)層配置* 此代碼段初始化了一個TLI層的配置結(jié)構(gòu)體,并設置了TLI層0的參數(shù)。* 配置包括窗口的位置、顏色格式、透明度、幀緩沖區(qū)地址等。*//* 設置TLI層窗口的左邊界位置 */tli_layer_init_struct.layer_window_leftpos = 80 + HORIZONTAL_SYNCHRONOUS_PULSE +HORIZONTAL_BACK_PORCH + 2;/* 設置TLI層窗口的右邊界位置 */tli_layer_init_struct.layer_window_rightpos = (80 + 320 + HORIZONTAL_SYNCHRONOUS_PULSE +HORIZONTAL_BACK_PORCH - 1);/* 設置TLI層窗口的上邊界位置 */tli_layer_init_struct.layer_window_toppos = 150 + VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH;/* 設置TLI層窗口的下邊界位置 */tli_layer_init_struct.layer_window_bottompos = (150 + 100 + VERTICAL_SYNCHRONOUS_PULSE +VERTICAL_BACK_PORCH - 1);/* 設置TLI層的顏色格式為RGB565 */tli_layer_init_struct.layer_ppf = LAYER_PPF_RGB565;/* 設置層的飽和度調(diào)整因子為最大值 */tli_layer_init_struct.layer_sa = 0xFF;/* 設置層的默認藍色成分值為最大值 */tli_layer_init_struct.layer_default_blue = 0xFF;/* 設置層的默認綠色成分值為最大值 */tli_layer_init_struct.layer_default_green = 0xFF;/* 設置層的默認紅色成分值為最大值 */tli_layer_init_struct.layer_default_red = 0xFF;/* 設置層的默認透明度為不透明 */tli_layer_init_struct.layer_default_alpha = 0x0;/* 設置層的ACF1屬性為PASA */tli_layer_init_struct.layer_acf1 = LAYER_ACF1_PASA;/* 設置層的ACF2屬性為PASA */tli_layer_init_struct.layer_acf2 = LAYER_ACF2_PASA;/* 設置層的幀緩沖區(qū)地址 */tli_layer_init_struct.layer_frame_bufaddr = (uint32_t)gImage_logo;/* 設置層的幀緩沖區(qū)每行字節(jié)數(shù) */tli_layer_init_struct.layer_frame_line_length = ((320 * 2) + 3);/* 設置層的幀緩沖區(qū)步長 */tli_layer_init_struct.layer_frame_buf_stride_offset = (320 * 2);/* 設置層的總行數(shù) */tli_layer_init_struct.layer_frame_total_line_number = 100;/* 初始化TLI層0并應用配置 */tli_layer_init(LAYER0, &tli_layer_init_struct);
}
/** 函數(shù)名稱:ipa_config* 功能描述:初始化并配置IPA(圖像處理加速器),包括設置像素格式轉(zhuǎn)換模式、目標內(nèi)存地址、前景圖等。* 參數(shù)說明:baseaddress - 輸入前景圖像 的基礎(chǔ)地址。* 返回值:無。*/
static void ipa_config(uint32_t baseaddress)
{ipa_destination_parameter_struct  ipa_destination_init_struct; // 定義IPA目標配置結(jié)構(gòu)體ipa_foreground_parameter_struct   ipa_fg_init_struct; // 定義IPA前景圖配置結(jié)構(gòu)體// 啟用IPA的時鐘rcu_periph_clock_enable(RCU_IPA);// 初始化IPAipa_deinit();/* 配置IPA像素格式轉(zhuǎn)換模式 */ipa_pixel_format_convert_mode_set(IPA_FGTODE);/* 配置目標像素格式 */ipa_destination_init_struct.destination_pf = IPA_DPF_RGB565;/* 配置目標內(nèi)存基地址 */ipa_destination_init_struct.destination_memaddr = (uint32_t)&blended_address_buffer;/* 配置目標預定義的Alpha值(RGB) */ipa_destination_init_struct.destination_pregreen = 0;ipa_destination_init_struct.destination_preblue = 0;ipa_destination_init_struct.destination_prered = 0;ipa_destination_init_struct.destination_prealpha = 0;/* 配置目標行偏移量 */ipa_destination_init_struct.destination_lineoff = 0;/* 配置待處理圖像的高度 */ipa_destination_init_struct.image_height = 118;/* 配置待處理圖像的寬度 */ipa_destination_init_struct.image_width = 247;ipa_destination_init_struct.image_rotate = DESTINATION_ROTATE_0;ipa_destination_init_struct.image_hor_decimation = DESTINATION_HORDECIMATE_DISABLE;ipa_destination_init_struct.image_ver_decimation = DESTINATION_VERDECIMATE_DISABLE;/* 初始化IPA目標配置 */ipa_destination_init(&ipa_destination_init_struct);/* 配置IPA前景圖初始化結(jié)構(gòu)體 *//* baseaddress: 前景圖內(nèi)存地址的起始位置 */ipa_fg_init_struct.foreground_memaddr = baseaddress;/* 設置前景圖的像素格式為RGB565 */ipa_fg_init_struct.foreground_pf = FOREGROUND_PPF_RGB565;/* 設置前景圖的透明度計算模式為模式0 */ipa_fg_init_struct.foreground_alpha_algorithm = IPA_FG_ALPHA_MODE_0;/* 設置前景圖的預透明值為0 */ipa_fg_init_struct.foreground_prealpha = 0x0;/* 設置前景圖的行偏移為0 */ipa_fg_init_struct.foreground_lineoff = 0x0;/* 設置前景圖的預藍色值為0 */ipa_fg_init_struct.foreground_preblue = 0x0;/* 設置前景圖的預綠色值為0 */ipa_fg_init_struct.foreground_pregreen = 0x0;/* 設置前景圖的預紅色值為0 */ipa_fg_init_struct.foreground_prered = 0x0;/* 前景圖初始化 */ipa_foreground_init(&ipa_fg_init_struct);
}/*!\brief      configure TLI peripheral and display blend image這個函數(shù)負責配置TLI(Thin-Layer Interface)以進行圖像的混合顯示。在此函數(shù)中,通常會進行層(Layer)的配置,包括層的背景色、透明度、圖像數(shù)據(jù)源等。它可能還會設置圖像的大小、位置以及如何將多個圖像層混合在一起顯示的具體參數(shù)。\param[in]  none\param[out] none\retval     none
*/
static void tli_blend_config(void)
{// 初始化TLI(Terminal Layer Interface)相關(guān)的參數(shù)和硬件設置// 此段代碼主要配置TLI的時鐘源、PLL2的輸入輸出時鐘范圍,并啟用PLL2時鐘輸出。tli_parameter_struct               tli_init_struct;tli_layer_parameter_struct         tli_layer_init_struct;rcu_periph_clock_enable(RCU_TLI);  // 啟用TLI的外設時鐘tli_gpio_config();                 // 配置TLI相關(guān)的GPIO/* 配置PLL2的輸入時鐘范圍和輸出時鐘范圍 */rcu_pll_input_output_clock_range_config(IDX_PLL2, RCU_PLL2RNG_1M_2M, RCU_PLL2VCO_150M_420M);/* 配置PLL2時鐘:CK_PLL2P/CK_PLL2Q/CK_PLL2R = HXTAL_VALUE / 25 * 150 / 3 */if(ERROR == rcu_pll2_config(25, 150, 3, 3, 3)) {while(1) {}}/* 啟用PLL2R時鐘輸出 */rcu_pll_clock_output_enable(RCU_PLL2R);rcu_tli_clock_div_config(RCU_PLL2R_DIV8);  // 配置TLI時鐘分頻rcu_osci_on(RCU_PLL2_CK);  // 開啟PLL2時鐘if(ERROR == rcu_osci_stab_wait(RCU_PLL2_CK)) {  // 等待PLL2時鐘穩(wěn)定while(1) {}}/** 配置TLI(Transport Layer Interface)參數(shù)結(jié)構(gòu)體* 本段代碼主要負責初始化TLI參數(shù)結(jié)構(gòu)體,并設置LCD顯示時序配置和背景顏色。*//* 配置TLI參數(shù)結(jié)構(gòu)體中的信號極性 */tli_init_struct.signalpolarity_hs = TLI_HSYN_ACTLIVE_LOW;  /* 水平同步信號極性配置為活動低電平 */tli_init_struct.signalpolarity_vs = TLI_VSYN_ACTLIVE_LOW;  /* 垂直同步信號極性配置為活動低電平 */tli_init_struct.signalpolarity_de = TLI_DE_ACTLIVE_LOW;    /* 數(shù)據(jù)使能信號極性配置為活動低電平 */tli_init_struct.signalpolarity_pixelck = TLI_PIXEL_CLOCK_TLI; /* 像素時鐘極性配置 *//* 配置LCD顯示時序 */tli_init_struct.synpsz_hpsz = HORIZONTAL_SYNCHRONOUS_PULSE - 1;  /* 水平同步脈沖寬度配置 */tli_init_struct.synpsz_vpsz = VERTICAL_SYNCHRONOUS_PULSE - 1;    /* 垂直同步脈沖寬度配置 */tli_init_struct.backpsz_hbpsz = HORIZONTAL_SYNCHRONOUS_PULSE + HORIZONTAL_BACK_PORCH - 1;  /* 水平方向后 porch 寬度配置 */tli_init_struct.backpsz_vbpsz = VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH - 1;      /* 垂直方向后 porch 寬度配置 */tli_init_struct.activesz_hasz = HORIZONTAL_SYNCHRONOUS_PULSE + HORIZONTAL_BACK_PORCH + ACTIVE_WIDTH- 1; /* 水平方向活動區(qū)域?qū)挾扰渲?*/tli_init_struct.activesz_vasz = VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH + ACTIVE_HEIGHT - 1; /* 垂直方向活動區(qū)域高度配置 */tli_init_struct.totalsz_htsz = HORIZONTAL_SYNCHRONOUS_PULSE + HORIZONTAL_BACK_PORCH + ACTIVE_WIDTH +HORIZONTAL_FRONT_PORCH - 1;  /* 水平方向總線周期配置 */tli_init_struct.totalsz_vtsz = VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH + ACTIVE_HEIGHT +VERTICAL_FRONT_PORCH - 1;     /* 垂直方向總線周期配置 *//* 配置LCD背景顏色(紅色、綠色、藍色) */tli_init_struct.backcolor_red = 0xFF;   /* 背景紅色值配置 */tli_init_struct.backcolor_green = 0xFF; /* 背景綠色值配置 */tli_init_struct.backcolor_blue = 0xFF;  /* 背景藍色值配置 *//* 應用TLI初始化結(jié)構(gòu)體配置 */tli_init(&tli_init_struct);  /** TLI(Transfer Layer Interface)層1配置* 此代碼段初始化TLI層1的設置,包括窗口位置、像素格式、默認顏色及緩沖區(qū)配置等。*//* 設置TLI層1的窗口左邊界位置 */tli_layer_init_struct.layer_window_leftpos = 80 + HORIZONTAL_SYNCHRONOUS_PULSE +HORIZONTAL_BACK_PORCH + 2;/* 設置TLI層1的窗口右邊界位置 */tli_layer_init_struct.layer_window_rightpos = (80 + 247 + HORIZONTAL_SYNCHRONOUS_PULSE +HORIZONTAL_BACK_PORCH - 1);/* 設置TLI層1的窗口上邊界位置 */tli_layer_init_struct.layer_window_toppos = 20 + VERTICAL_SYNCHRONOUS_PULSE + VERTICAL_BACK_PORCH;/* 設置TLI層1的窗口下邊界位置 */tli_layer_init_struct.layer_window_bottompos = 20 + 118 + VERTICAL_SYNCHRONOUS_PULSE +VERTICAL_BACK_PORCH - 1;/* 配置TLI層1的像素格式為RGB565 */tli_layer_init_struct.layer_ppf = LAYER_PPF_RGB565;/* 設置層的alpha混合因子為全透 */tli_layer_init_struct.layer_sa = 0xFF;/* 配置層的ACF1參數(shù)為PASA */tli_layer_init_struct.layer_acf1 = LAYER_ACF1_PASA;/* 配置層的ACF2參數(shù)為PASA */tli_layer_init_struct.layer_acf2 = LAYER_ACF2_PASA;/* 設置層的默認Alpha值為0 */tli_layer_init_struct.layer_default_alpha = 0;/* 設置層的默認藍色值為0 */tli_layer_init_struct.layer_default_blue = 0;/* 設置層的默認綠色值為0 */tli_layer_init_struct.layer_default_green = 0;/* 設置層的默認紅色值為0 */tli_layer_init_struct.layer_default_red = 0;/* 設置層的幀緩沖區(qū)地址 */tli_layer_init_struct.layer_frame_bufaddr = (uint32_t)&blended_address_buffer;/* 設置層的幀緩沖區(qū)每行長度 */tli_layer_init_struct.layer_frame_line_length = ((247 * 2) + 3);/* 設置層的幀緩沖區(qū)步長偏移 */tli_layer_init_struct.layer_frame_buf_stride_offset = (247 * 2);/* 設置層的幀緩沖區(qū)總行數(shù) */tli_layer_init_struct.layer_frame_total_line_number = 118;/* 初始化TLI層1 */tli_layer_init(LAYER1, &tli_layer_init_struct);
}
/*!\brief      configure TLI GPIO\param[in]  none\param[out] none\retval     none
*/
static void tli_gpio_config(void)
{/* enable GPIO clock */rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_GPIOB);rcu_periph_clock_enable(RCU_GPIOC);rcu_periph_clock_enable(RCU_GPIOD);rcu_periph_clock_enable(RCU_GPIOE);rcu_periph_clock_enable(RCU_GPIOF);rcu_periph_clock_enable(RCU_GPIOH);rcu_periph_clock_enable(RCU_GPIOG);/* configure HSYNC(PE15), VSYNC(PA7), PCLK(PG7) */gpio_af_set(GPIOE, GPIO_AF_14, GPIO_PIN_15);gpio_af_set(GPIOA, GPIO_AF_14, GPIO_PIN_7);gpio_af_set(GPIOG, GPIO_AF_14, GPIO_PIN_7);gpio_mode_set(GPIOE, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_15);gpio_output_options_set(GPIOE, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_15);gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7);gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_7);gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7);gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_7);/* configure LCD_R7(PG6), LCD_R6(PH12), LCD_R5(PH11), LCD_R4(PA5), LCD_R3(PH9),LCD_R2(PH8),LCD_R1(PH3), LCD_R0(PH2) */gpio_af_set(GPIOG, GPIO_AF_14, GPIO_PIN_6);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_12);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_11);gpio_af_set(GPIOA, GPIO_AF_14, GPIO_PIN_5);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_9);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_8);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_3);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_2);gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_6);gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_6);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_12);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_12);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_11);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_11);gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5);gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_5);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_9);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_9);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_8);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_3);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_2);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_2);/* configure  LCD_G7(PD3), LCD_G6(PC7), LCD_G5(PC1), LCD_G4(PH15), LCD_G3(PH14), LCD_G2(PH13),LCD_G1(PB0), LCD_G0(PB1) */gpio_af_set(GPIOD, GPIO_AF_14, GPIO_PIN_3);gpio_af_set(GPIOC, GPIO_AF_14, GPIO_PIN_7);gpio_af_set(GPIOC, GPIO_AF_14, GPIO_PIN_1);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_15);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_14);gpio_af_set(GPIOH, GPIO_AF_14, GPIO_PIN_13);gpio_af_set(GPIOB, GPIO_AF_14, GPIO_PIN_0);gpio_af_set(GPIOB, GPIO_AF_14, GPIO_PIN_1);gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_3);gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_3);gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7);gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_7);gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_1);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_15);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_15);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_14);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_14);gpio_mode_set(GPIOH, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13);gpio_output_options_set(GPIOH, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_13);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_0);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_0);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_1);/* configure LCD_B7(PB9), LCD_B6(PB8), LCD_B5(PB5), LCD_B4(PC11), LCD_B3(PG11),LCD_B2(PG10), LCD_B1(PG12), LCD_B0(PG14) */gpio_af_set(GPIOB, GPIO_AF_14, GPIO_PIN_9);gpio_af_set(GPIOB, GPIO_AF_14, GPIO_PIN_8);gpio_af_set(GPIOB, GPIO_AF_3, GPIO_PIN_5);gpio_af_set(GPIOC, GPIO_AF_14, GPIO_PIN_11);gpio_af_set(GPIOG, GPIO_AF_14, GPIO_PIN_11);gpio_af_set(GPIOG, GPIO_AF_14, GPIO_PIN_10);gpio_af_set(GPIOG, GPIO_AF_14, GPIO_PIN_12);gpio_af_set(GPIOG, GPIO_AF_14, GPIO_PIN_14);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_9);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_9);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_8);gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5);gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_5);gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_11);gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_11);gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_11);gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_11);gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_10);gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_10);gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_12);gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_12);gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_14);gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_14);/* configure LCD_DE(PF10) */gpio_af_set(GPIOF, GPIO_AF_14, GPIO_PIN_10);gpio_mode_set(GPIOF, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_10);gpio_output_options_set(GPIOF, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_10);/* LCD PWM BackLight(PG13) */gpio_mode_set(GPIOG, GPIO_MODE_OUTPUT, GPIO_PUPD_PULLUP, GPIO_PIN_13);gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_60MHZ, GPIO_PIN_13);gpio_bit_set(GPIOG, GPIO_PIN_13);
}/*!\brief      enable the CPU cache\param[in]  none\param[out] none\retval     none
*/
static void cache_enable(void)
{/* enable i-Cache */SCB_EnableICache();/* enable d-Cache */SCB_EnableDCache();
}

http://www.risenshineclean.com/news/9352.html

相關(guān)文章:

  • 多語言網(wǎng)站開發(fā)公司市場調(diào)查報告
  • aspnet網(wǎng)站開發(fā)pdf汕頭網(wǎng)站設計
  • 婚姻介紹交友網(wǎng)站怎么建設百度推廣助手客戶端
  • 網(wǎng)站文章后臺寫完前臺不顯示seo營銷策略
  • 淘寶上做網(wǎng)站的客服聊天技巧湖南發(fā)展最新消息公告
  • 網(wǎng)站域名空間多少錢蘋果cms播放器
  • 網(wǎng)站建設彳金手指排名設計外包網(wǎng)站
  • 贛楠臍橙網(wǎng)絡營銷推廣方式凱里seo排名優(yōu)化
  • wordpress個人網(wǎng)站域名電子商務平臺
  • 工行網(wǎng)站跟建設網(wǎng)站區(qū)別汕頭網(wǎng)站建設公司哪個好
  • 免費網(wǎng)站的手機版本源碼模板廣告軟文案例
  • 建設電影推薦網(wǎng)站的項目背景獨立站推廣
  • wordpress淘寶優(yōu)惠券插件寧波免費seo排名優(yōu)化
  • 網(wǎng)站建設行業(yè)發(fā)展洛陽網(wǎng)站建設
  • wordpress圖片播放優(yōu)化大師官網(wǎng)下載安裝
  • 嵐山網(wǎng)站建設互聯(lián)網(wǎng)營銷推廣公司
  • 網(wǎng)站流量高iis如何做負載均衡搜狗競價
  • 手機上怎么制作app網(wǎng)站更新seo
  • 合肥建設網(wǎng)站制作哪個好灰色關(guān)鍵詞代發(fā)可測試
  • 17網(wǎng)站一起做網(wǎng)店2018各網(wǎng)站收錄
  • 網(wǎng)站建設源碼百度平臺電話
  • 模板網(wǎng)站也可以做優(yōu)化廣東公司搜索seo哪家強
  • 有沒有做公司網(wǎng)站的seo網(wǎng)站建設
  • 深圳企業(yè)網(wǎng)站建設報價百度一下百度搜索官網(wǎng)
  • 為推廣網(wǎng)站做的宣傳活動企業(yè)推廣網(wǎng)站
  • 網(wǎng)站建設規(guī)范想做個網(wǎng)絡推廣
  • 成都住建局官網(wǎng)商品住房登記系統(tǒng)成都優(yōu)化網(wǎng)站哪家公司好
  • 專業(yè)的聊城網(wǎng)站建設什么是seo搜索優(yōu)化
  • 長春建站塔山雙喜客戶資源買賣平臺
  • 網(wǎng)站快速排名是怎么做的北京百度網(wǎng)站排名優(yōu)化