当前位置: 首页 > news >正文

网站开发包括哪些番禺做网站报价

网站开发包括哪些,番禺做网站报价,wordpress 双语主题,国外免费做网站软件大纲 1. 引言 2. TLI外设特点 3. TLI硬件架构 4. TLI寄存器功能 5. TLI的配置和使用步骤 6. TLI图层概念 7. 图像处理和显示优化 8. 基于GD32H759I-EVAL开发板的TLI应用示例 1. 引言 在当今的嵌入式系统设计中#xff0c;图形用户界面#xff08;GUI#xff09;的应…大纲 1. 引言 2. TLI外设特点 3. TLI硬件架构 4. TLI寄存器功能 5. TLI的配置和使用步骤 6. TLI图层概念 7. 图像处理和显示优化 8. 基于GD32H759I-EVAL开发板的TLI应用示例 1. 引言 在当今的嵌入式系统设计中图形用户界面GUI的应用越来越广泛这不仅仅是因为它们提供了更直观、易用的交互方式还因为强大的GUI能够极大地提升产品的市场竞争力。GD32H7系列微控制器MCU作为高性能的ARM Cortex-M7平台以其高达480 MHz的处理速度和丰富的外设集成度成为实现复杂GUI应用的理想选择。其中TFT LCD InterfaceTLI作为GD32H7系列的一项关键外设为开发人员提供了一个强大而灵活的工具用于开发高质量的图形显示应用。 TLI外设不仅支持多种颜色格式和高分辨率的显示还内置了硬件图层叠加和像素格式转换等高级功能这使得开发者能够轻松实现复杂的图形界面设计同时保持系统的高性能运行。此外GD32H7系列的高集成度意味着开发者可以利用更少的外围组件来完成更多的功能这在成本和空间受限的应用场景下尤为宝贵。 2. TLI外设特点 支持的分辨率TLI外设支持高达2048x2048像素的分辨率使其能够驱动高清显示屏为用户提供丰富、清晰的图形和文本显示。 图层支持多达2个图层每个图层可以单独控制和配置包括颜色格式、大小、位置等支持图层间的混合和透明度控制。 像素格式支持多种像素格式包括但不限于RGB565, RGB888, ARGB1555, ARGB4444, L8灰度图像等为不同类型的图像显示提供灵活性。 直接存储访问DMA内置DMA控制减轻CPU的负担提高数据传输效率使得图像能够快速更新。 外部存储器接口与外部存储器接口如SDRAM的无缝集成允许存储大型图像和图形资产为复杂或动态界面提供必要的存储支持。 同步控制提供灵活的同步控制选项包括水平和垂直同步以及像素时钟控制确保与各种LCD显示屏的兼容性。 节能模式支持多种节能模式包括关闭背光和减少帧率帮助减少整体功耗。 3. 应用场景 高清图形用户界面GUI如触摸屏界面、仪表盘、信息娱乐系统等。工业控制如机器人控制器、自动化设备的操作界面。医疗设备如患者监视器、诊断仪器的显示屏。消费电子如智能家居控制面板、便携式媒体播放器。 3.1提示 在设计和实现基于TLI的解决方案时需要特别注意以下几点 确保所选显示屏兼容TLI支持的同步模式和像素格式。图层管理和内存分配策略对于高效使用TLI和优化性能至关重要。利用DMA传输和外部存储器来存储和管理大型图形资源以提高系统性能和响应速度。 通过精确地配置TLI的各种参数和利用其强大的图形处理能力GD32H7系列微控制器可以为需要高性能图形显示的应用提供强有力的解决方案。 3.2 TLI硬件块图和组成部分 图层控制器TLI包含多个独立的图层控制器每个控制器负责管理一个图层的显示。这些控制器允许不同图层的内容独立渲染和控制包括颜色格式、大小、位置及透明度等参数。 像素格式转换器TLI内置的像素格式转换器支持多种像素格式的转换确保不同格式的图像数据可以被正确地处理并显示。这对于兼容多种图像资源和提供灵活的图形设计至关重要。 定时器同步模块该模块负责生成与外部LCD显示屏同步所需的时序信号包括水平同步HSYNC、垂直同步VSYNC和像素时钟Pixel Clock。正确的时序信号是保证图像稳定显示的关键。 DMA控制器TLI的DMA直接存储器访问控制器允许图像数据直接从内存传输到TLI无需CPU干预。这极大提高了数据传输的效率和整体系统性能。 背光控制模块控制LCD背光的模块提供对背光亮度的调节功能以适应不同的环境光条件并帮助节能。 3.3 关键组件介绍 图层控制器每个图层控制器都可以配置为不同的颜色深度和格式如RGB565、ARGB8888等。此外图层控制器还支持图层的透明度混合和色键功能以实现复杂的图形效果。 像素格式转换器该转换器支持从一种像素格式到另一种像素格式的转换如从RGB格式到YUV格式。这对于视频播放和图像处理应用特别有用。 定时器同步模块通过精确配置该模块生成与特定LCD面板规格相匹配的时序信号保证显示内容的同步和稳定性。 DMA控制器DMA控制器支持高效的数据传输能够同时处理多个图层数据的传输任务。它可以根据需要配置为连续模式或一次性传输模式。 通过这些高度集成的硬件组件GD32H7系列微控制器中的TLI能够为开发者提供强大而灵活的显示控制能力使其能够轻松构建高质量的图形用户界面和视频播放应用。 4. TLI的使用方法及寄存器介绍 TLILCD-TFT显示控制器的使用方法包括初始化配置、图层设置、时序参数配置以及图形数据的管理。以下是详细的使用方法和关键寄存器的介绍以表格形式呈现以便于理解。 初始化配置 在开始使用TLI之前首先需要进行初始化配置包括系统时钟配置、TLI时钟源选择、以及基本的显示参数设置。 步骤1系统时钟配置 确保系统时钟有足够的频率以供TLI正常工作。GD32H7系列通常支持的最高系统时钟频率可以满足大多数TLI应用场景的需求。 步骤2TLI时钟源选择 选择合适的TLI时钟源并根据LCD显示器的规格设置相应的时钟分频以生成正确的像素时钟。 步骤3基本显示参数设置 设置TLI的基本显示参数包括显示方向、分辨率等。 图层设置 TLI支持多个独立图层的显示控制每个图层可以单独配置包括图层大小、位置、颜色格式等。 步骤1图层使能 通过设置TLI图层控制寄存器来使能特定的图层。 步骤2图层配置 配置图层的颜色格式、起始地址、大小和位置等参数。 时序参数配置 根据连接的LCD显示器规格配置TLI的时序参数包括同步脉冲宽度、背沿和前沿时间等。 图形数据管理 通过DMA传输图形数据到图层的帧缓冲区或者直接通过CPU写入数据。 TLITFT-LCD接口寄存器 在GD32H737, GD32H757, 和GD32H759系列微控制器中TLI (TFT-LCD接口)寄存器是用于配置和管理TFT-LCD显示模块的关键组成部分。下面是TLI寄存器中一些重要寄存器的详细介绍和它们的用法 同步脉冲宽度寄存器TLI_SPSZ用于配置水平同步HS和垂直同步VS脉冲的宽度。这决定了每帧中同步信号的精确时长。 后沿宽度寄存器TLI_BPSZ设置水平和垂直后沿的宽度即HS和VS信号结束后到下一个像素数据开始的时间间隔。 有效宽度寄存器TLI_ASZ定义了显示区域的有效宽度即屏幕上实际显示图像的区域。 总宽度寄存器TLI_TSZ设置了整个显示区域的总宽度包括同步脉冲、后沿、显示区域及前沿的宽度。 控制寄存器TLI_CTL负责整个TLI模块的启动、停止以及其他控制功能如抖动功能的启用或禁用。 背景色配置寄存器TLI_BGC设置LCD显示的背景颜色包括红色、绿色和蓝色的值。 中断使能寄存器TLI_INTEN启用或禁用TLI的各种中断源如行标记中断、FIFO错误中断等。 中断标志寄存器TLI_INTF显示当前哪些中断事件已经发生例如行标记事件或FIFO下溢错误。 中断标志清除寄存器TLI_INTC用于手动清除已发生的中断标志确保中断处理程序正确执行。 行标记寄存器TLI_LM用于设置当屏幕刷新到特定行时触发一个行标记中断这通常用于动画或屏幕更新同步。 当前像素位置寄存器TLI_CPPOS显示当前正在处理的像素的水平和垂直位置这对于调试显示问题非常有用。 第x 层控制寄存器TLI_LxCTL每个图层都有一个对应的配置寄存器用于控制图层的可见性、像素格式、Alpha值等关键特性。通过配置这些寄存器可以对各个图层进行精确的控制包括启用/禁用图层、选择合适的像素格式以及调整图层的透明度。 图层窗口偏移寄存器窗口参数寄存器TLI_LxHPCR、TLI_LxVPCR这两个寄存器集合定义了每个图层在整个屏幕中的位置和大小。通过设置水平和垂直方向的起始和结束位置可以控制图层的精确显示区域。 图层帧缓冲区地址寄存器TLI_LxFBADDR指定了每个图层的帧缓冲区的物理地址。帧缓冲区是存储图像数据的内存区域TLI根据此地址读取相应的像素数据用于显示。 图层帧缓冲区行距寄存器TLI_LxFLLEN设置了图层帧缓冲区中每行像素数据的长度和偏移确保TLI正确解析帧数据。  注意的是 缓冲区的 大小 不仅与屏幕大小相关还与图像的数据格式相关 如果是 RGB565则一个像素占2个字节如果是RGB888则一个像素占3个字节 这将影响 寄存器的值 如果 图层为全屏大小480*272采用RGB565图像 STDOFF[13:0] 16 步幅偏移  这个值定义了从某行起始处到下一行起始处之间的字节数则为 (480 * 2) FLL [13:0]  :   ((480 * 2) 3) 颜色键控制寄存器TLI_LxCKEY用于配置图层的颜色键功能可以设置一个特定的颜色作为“透明”颜色当图层中的像素为该颜色时不会被显示出来从而实现图层之间的透明叠加效果。 图层混合配置寄存器TLI_LxBFCR控制图层间的混合模式和Alpha混合参数通过调整这些参数可以实现图层之间复杂的视觉效果如淡入淡出、图层遮罩等。 CLUT配置寄存器TLI_LxCLUTWR对于使用颜色查找表CLUT的图层此寄存器用于写入CLUT的颜色值。颜色查找表允许使用较少的数据位表示宽色域节省内存同时保持良好的图像质量。 中断使能寄存器TLI_INTEN控制TLI的中断使能状态可用于开启或关闭特定的TLI事件中断如帧结束中断、行标记中断等以便在这些事件发生时执行相应的中断服务程序。 中断状态寄存器TLI_INTF和中断清除寄存器TLI_INTC这两个寄存器用于管理TLI产生的中断。中断状态寄存器显示了哪些中断事件已经发生而中断清除寄存器则用于清除已经处理的中断事件标志防止重复响应。 5. TLI的配置和使用步骤 5.1. 初始化步骤 系统时钟配置 TLI的时钟来源于PLL2输出需要在RCU复位和时钟控制单元中进行配置和启用。确保PLL2配置了正确的乘法和除法因子以获得适合TLI的时钟速率。 GPIO配置 为TLI功能配置GPIO引脚包括RGB数据、像素时钟PIXCLK、水平同步HSYNC、垂直同步VSYNC和显示使能DE信号的引脚。用于TLI功能的特定引脚可能需要设置为复用功能模式并配置为高速输出。 5.2. TLI核心配置 启动TLI通过设置TLI_CTL寄存器中的TLIEN位来启用TLI。配置显示时序编程TLI_SPSZ、TLI_BPSZ、TLI_ASZ和TLI_TSZ寄存器为水平和垂直尺寸定义同步脉冲宽度、背景宽度、活动区域大小和总大小。 5.3. 图层配置 定义图层属性包括颜色格式、窗口大小、位置以及适用的话颜色键控和CLUT颜色查找表设置。每个图层都有自己的控制和配置寄存器如LxWHPCR、LxWVPCR、LxDCCR这些寄存器定义了图层的窗口大小、位置和默认颜色。 5.4. 图层叠加和透明度设置 使用LxPFCR和LxCAxCR寄存器配置图层的混合因素以达到多个图层之间所需的透明度和混合效果。利用颜色键控功能通过配置LxCKCR寄存器使特定颜色透明。 5.5. 启动和停止显示更新 要开始显示确保图层被启用并且TLI主控制被启用。此操作启动从内存通过DMA到TLI的数据传输然后TLI将像素数据输出到连接的LCD。停止显示更新涉及禁用图层和/或主TLI控制以停止数据传输和输出。 5.6 示例代码        /*** brief 配置LCD的TLI接口* * 该函数初始化TLI接口配置其时钟源、信号极性、同步宽度、像素格式等参数* 以及配置两个图层layer0和layer1的窗口位置、像素格式、默认颜色和融合因子等参数。* * note 函数中不接受任何参数也不返回任何值。*/ 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;/* 初始化数据使能信号极性为低电平有效 */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的输入地址帧缓冲区位于FLASH内存中 */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的输入地址帧缓冲区位于内存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系列的TLITFT LCD Controller中图层Layer是独立的图像区域可以单独控制并与其他图层叠加显示。每个图层可以设置不同的属性如颜色格式、大小、位置和透明度等。这种多图层的设计允许开发者创建复杂且动态的用户界面如菜单、按钮、动画和其他图形元素而不会互相干扰。 6.1 如何创建和配置图层 选择图层并启用GD32H7的TLI支持多个图层。首先需要根据需求选择并启用特定的图层。例如使用TLI_LayerEnable(LAYERx);函数启用图层。 配置图层属性 设置颜色格式根据图像数据的类型选择合适的颜色格式如RGB565或ARGB8888等。设定图层大小和位置指定图层在LCD上的显示位置和大小。设置帧缓冲区为图层指定帧缓冲区的地址这里存放图层要显示的图像数据。 透明度和颜色键控配置图层的透明度和颜色键控Color Keying功能以实现图层之间的透明或半透明效果。 6.2 图层的动态管理和更新在LVGL项目中的应用 在使用LVGLLight and Versatile Graphics Library构建GUI项目时TLI的图层管理功能可以与LVGL框架结合以优化显示效果和性能。 图层与LVGL对象绑定可以将TLI图层与LVGL的对象或页面绑定为不同的UI元素使用不同的图层。这样做可以减少重绘的需要提高界面响应速度。 动态更新内容当UI元素需要更新时只需修改对应图层的帧缓冲区内容或属性而无需重新绘制整个屏幕。这在动画效果或内容频繁变动的场景中特别有用。 透明度和叠加效果利用TLI的透明度管理可以创建具有透明或半透明效果的UI元素如弹出窗口、提示框等。同时颜色键控功能可用于实现复杂的叠加效果。 性能优化通过精心设计图层的使用和配置可以优化内存使用和提高渲染效率。例如静态背景可以放置在一个单独的图层中而动态内容在另一个图层减少了不必要的刷新。 7. 图像处理和显示优化 在GD32H7系列MCU中TLI的设计提供了强大的图像显示功能包括支持多种像素格式的处理、像素DMA传输、层窗口和混合功能、抖动功能以及颜色查找表LUT支持。这些功能可以用于提高图像处理和显示的效率和质量。以下是一些优化策略 7.1利用像素DMA优化数据传输 像素DMA功能使得图像数据可以直接从内存传输到显示缓冲区减少CPU的负担。为了最大化数据传输效率应确保图像数据存储布局与TLI的数据需求相匹配从而减少任何不必要的数据重排或转换。 7.2采用多层显示策略 通过TLI支持的多层显示可以将不同的视觉元素放置在不同的图层上例如背景、图标、文本可以分别在不同的层上处理和渲染。这样做不仅可以简化图像合成的复杂度还可以在不重绘整个屏幕的情况下更新局部区域从而提高更新效率和响应速度。 7.3优化像素格式使用 根据显示的需求选择合适的像素格式可以在保证视觉效果的同时优化内存使用。例如对于不需要透明效果的简单图形可以选择不带Alpha通道的像素格式以节省内存空间。 7.4使用颜色查找表LUT 对于使用颜色较少的图像比如图标或用户界面元素使用颜色查找表LUT可以减少每个像素所需的数据量同时保持良好的视觉效果。这对于减少内存占用和加速图像渲染尤为有效。 7.5色键透明处理 利用TLI的色键功能可以实现简单的图像透明处理通过设定特定的颜色值作为“透明”标记TLI在渲染时会自动将匹配该颜色的像素渲染为透明。这种方法适用于实现简单的图像叠加效果而无需复杂的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 // 定义显示设备的同步脉冲和有效显示区域参数// 水平方向参数 #define HORIZONTAL_SYNCHRONOUS_PULSE 41 // 水平同步脉冲宽度 #define HORIZONTAL_BACK_PORCH 2 // 水平后 porch 宽度 #define ACTIVE_WIDTH 480 // 水平有效显示宽度 #define HORIZONTAL_FRONT_PORCH 2 // 水平前 porch 宽度// 垂直方向参数 #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配置结构体tli_layer_parameter_struct tli_layer_init_struct; // TLI层配置结构体// 启用TLI外设的时钟rcu_periph_clock_enable(RCU_TLI);tli_gpio_config(); // 配置TLI相关的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时钟稳定if(ERROR rcu_osci_stab_wait(RCU_PLL2_CK)) {while(1) {}}/* 配置TLI参数结构体 */// 配置水平同步、垂直同步、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显示时序参数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/** TLITransport Layer Interface层配置* 此代码段初始化了一个TLI层的配置结构体并设置了TLI层0的参数。* 配置包括窗口的位置、颜色格式、透明度、帧缓冲区地址等。*//* 设置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;/* 设置层的饱和度调整因子为最大值 */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;/* 设置层的帧缓冲区地址 */tli_layer_init_struct.layer_frame_bufaddr (uint32_t)gImage_logo;/* 设置层的帧缓冲区每行字节数 */tli_layer_init_struct.layer_frame_line_length ((320 * 2) 3);/* 设置层的帧缓冲区步长 */tli_layer_init_struct.layer_frame_buf_stride_offset (320 * 2);/* 设置层的总行数 */tli_layer_init_struct.layer_frame_total_line_number 100;/* 初始化TLI层0并应用配置 */tli_layer_init(LAYER0, tli_layer_init_struct); } /** 函数名称ipa_config* 功能描述初始化并配置IPA图像处理加速器包括设置像素格式转换模式、目标内存地址、前景图等。* 参数说明baseaddress - 输入前景图像 的基础地址。* 返回值无。*/ static void ipa_config(uint32_t baseaddress) {ipa_destination_parameter_struct ipa_destination_init_struct; // 定义IPA目标配置结构体ipa_foreground_parameter_struct ipa_fg_init_struct; // 定义IPA前景图配置结构体// 启用IPA的时钟rcu_periph_clock_enable(RCU_IPA);// 初始化IPAipa_deinit();/* 配置IPA像素格式转换模式 */ipa_pixel_format_convert_mode_set(IPA_FGTODE);/* 配置目标像素格式 */ipa_destination_init_struct.destination_pf IPA_DPF_RGB565;/* 配置目标内存基地址 */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前景图初始化结构体 *//* baseaddress: 前景图内存地址的起始位置 */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这个函数负责配置TLIThin-Layer Interface以进行图像的混合显示。在此函数中通常会进行层Layer的配置包括层的背景色、透明度、图像数据源等。它可能还会设置图像的大小、位置以及如何将多个图像层混合在一起显示的具体参数。\param[in] none\param[out] none\retval none */ static void tli_blend_config(void) {// 初始化TLITerminal Layer Interface相关的参数和硬件设置// 此段代码主要配置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相关的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时钟稳定while(1) {}}/** 配置TLITransport Layer Interface参数结构体* 本段代码主要负责初始化TLI参数结构体并设置LCD显示时序配置和背景颜色。*//* 配置TLI参数结构体中的信号极性 */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显示时序 */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; /* 水平方向活动区域宽度配置 */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背景颜色红色、绿色、蓝色 */tli_init_struct.backcolor_red 0xFF; /* 背景红色值配置 */tli_init_struct.backcolor_green 0xFF; /* 背景绿色值配置 */tli_init_struct.backcolor_blue 0xFF; /* 背景蓝色值配置 *//* 应用TLI初始化结构体配置 */tli_init(tli_init_struct); /** TLITransfer Layer Interface层1配置* 此代码段初始化TLI层1的设置包括窗口位置、像素格式、默认颜色及缓冲区配置等。*//* 设置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参数为PASA */tli_layer_init_struct.layer_acf1 LAYER_ACF1_PASA;/* 配置层的ACF2参数为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;/* 设置层的帧缓冲区地址 */tli_layer_init_struct.layer_frame_bufaddr (uint32_t)blended_address_buffer;/* 设置层的帧缓冲区每行长度 */tli_layer_init_struct.layer_frame_line_length ((247 * 2) 3);/* 设置层的帧缓冲区步长偏移 */tli_layer_init_struct.layer_frame_buf_stride_offset (247 * 2);/* 设置层的帧缓冲区总行数 */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.dnsts.com.cn/news/132261.html

相关文章:

  • 如何判断一个网站的价值网站建设集团
  • wordpress 网站地图类常州网站建设 光龙
  • 个人网站如何备案海南北京网站建设
  • 中卫企业管理培训网站wordpress编辑文章很慢
  • 网站备案万网简单的网页制作代码
  • 网站 特效江苏盐城网站开发
  • 万网 公司网站链接爬虫python入门
  • 济南网站设计哪家好最佳网站设计
  • 外国网站上做Taskjsp网站开发面试题
  • 做项目的编程网站中铁建设集团有限公司招标
  • 网站内容建设需要哪些策略呢不用交钱的夜间禁用app
  • 罗定网站建设什么推广软件效果好
  • 潍坊网站关键字优化北京模板网站建设费用
  • 海外打开网站慢陕建十四建公司简介
  • 网站关键词标签陕西住房和城乡建设部网站首页
  • 医疗器械做网站到哪里先备案网页设计心得体会500
  • 深圳网站建设排名wordpress归档页面模板
  • 怎么查看一个网站是用什么程序做的阿里云备案网站建设方案书模板
  • 盾思途旅游网站建设做五金行业的外贸网站
  • 重庆做网站外包公司百度助手下载安装
  • 网站如何添加代码visual studio做网站
  • 灵台教育局网站师资队伍建设仿做静态网站多少钱
  • 网站备案有什么作用万峰科技.jsp网站开发四酷全书 m
  • 可以直接进入网站的正能量优秀作文大全网站
  • 网站建设费用计算依据搜索广告和信息流广告区别
  • 可直接进入正能量网站长春建站模板制作
  • H5网站建设网站定制开发北京哪家网站开发公司好
  • p2p网站如何建设施工企业自营率怎么算
  • 网站左侧导航设计wordpress不能添加用户
  • 企业网站模块建设流程学校网站建设全包