很久没有写东西了,也很久没看文档了吼吼,觉得有点无聊,找来F4看看,主要看F429。督促自己多看多记录。

首先配置同步时序先看参考手册

下面看一个实际例子,一块439的开发板

设置:

 1  LTDC_InitStruct.LTDC_HorizontalSync = 40;
 2   /*  */
 3   LTDC_InitStruct.LTDC_VerticalSync = 9;
 4   /*  */
 5   LTDC_InitStruct.LTDC_AccumulatedHBP = 42;
 6   /*  */
 7   LTDC_InitStruct.LTDC_AccumulatedVBP = 11;
 8   /*  */
 9   LTDC_InitStruct.LTDC_AccumulatedActiveW = 522;
10   /*  */
11   LTDC_InitStruct.LTDC_AccumulatedActiveH = 283;
12   /*  */
13   LTDC_InitStruct.LTDC_TotalWidth = 524;
14   /*  */
15   LTDC_InitStruct.LTDC_TotalHeigh = 285;
16
17   LTDC_Init(&LTDC_InitStruct);

配置时序

注意每个参数定义,之前是累加

看下完整的初始化代码

  1 void LCD_Init(void)
  2 {
  3   LTDC_InitTypeDef       LTDC_InitStruct;
  4   LTDC_Layer_InitTypeDef LTDC_Layer_InitStruct;
  5   LTDC_Layer_TypeDef     LTDC_Layerx;
  6
  7
  8   /* IO¿Ú³õʼ»¯ */
  9   LCD_GPIOInit();
 10
 11   LCD_DisplayOff();
 12   /* ʹÄÜLCDʱÖÓ */
 13   RCC_APB2PeriphClockCmd(RCC_APB2Periph_LTDC, ENABLE);
 14   /* ʹÄÜDMAʧ×Ù*/
 15   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2D, ENABLE);
 16
 17   /* ˮƽͬ²½ÐźÅ---µÍµçƽÓÐЧ */
 18   LTDC_InitStruct.LTDC_HSPolarity = LTDC_HSPolarity_AL;
 19   /* ´¹Ö±Í¬²½ÐźÅ---µÍµçƽÓÐЧ */
 20   LTDC_InitStruct.LTDC_VSPolarity = LTDC_VSPolarity_AL;
 21   /* Êý¾ÝʹÄÜÐźÅ---µÍµçƽÓÐЧ */
 22   LTDC_InitStruct.LTDC_DEPolarity = LTDC_DEPolarity_AL;
 23   /* ÏñËØʱÖÓÅäÖÃ--- */
 24   LTDC_InitStruct.LTDC_PCPolarity = LTDC_DEPolarity_AL;
 25     /* LCD±³¹âÉèÖà */
 26   LTDC_InitStruct.LTDC_BackgroundRedValue = 0;
 27   LTDC_InitStruct.LTDC_BackgroundGreenValue = 0;
 28   LTDC_InitStruct.LTDC_BackgroundBlueValue = 0;
 29   /*
 30    ****************************************************************************
 31    *PLLSAI_VCO = HSE*PLLSAI_N / PLL_M = 8 * 192 / 8 = 192MHz
 32    *PLLLCDCLK = PLLSAI_VCO / PLLSAI_R = 192 / 3 = 64 Mhz
 33    *LTDC clock frequency = PLLLCDCLK / RCC_PLLSAIDivR = 64 / 8 = 8 Mhz
 34    ****************************************************************************
 35    */
 36   RCC_PLLSAIConfig(192, 7, 3);
 37   RCC_LTDCCLKDivConfig(RCC_PLLSAIDivR_Div4);
 38   /* ʹÄÜPLLSAIʱÖÓ */
 39   RCC_PLLSAICmd(ENABLE);
 40   /* µÈ´ýPLLSAIʱÖÓ */
 41   while(RCC_GetFlagStatus(RCC_FLAG_PLLSAIRDY) == RESET){}
 42   /*  */
 43   LTDC_InitStruct.LTDC_HorizontalSync = 40;
 44   /*  */
 45   LTDC_InitStruct.LTDC_VerticalSync = 9;
 46   /*  */
 47   LTDC_InitStruct.LTDC_AccumulatedHBP = 42;
 48   /*  */
 49   LTDC_InitStruct.LTDC_AccumulatedVBP = 11;
 50   /*  */
 51   LTDC_InitStruct.LTDC_AccumulatedActiveW = 522;
 52   /*  */
 53   LTDC_InitStruct.LTDC_AccumulatedActiveH = 283;
 54   /*  */
 55   LTDC_InitStruct.LTDC_TotalWidth = 524;
 56   /*  */
 57   LTDC_InitStruct.LTDC_TotalHeigh = 285;
 58
 59   LTDC_Init(&LTDC_InitStruct);
 60
 61   LTDC_Layer_InitStruct.LTDC_HorizontalStart = 43;
 62   LTDC_Layer_InitStruct.LTDC_HorizontalStop = (480 + 43 - 1);
 63   LTDC_Layer_InitStruct.LTDC_VarticalStart = 12;
 64   LTDC_Layer_InitStruct.LTDC_VerticalStop = (272 + 12 - 1);
 65
 66   /* Pixel Format configuration*/
 67   LTDC_Layer_InitStruct.LTDC_PixelFormat = LTDC_Pixelformat_RGB565;
 68   /* Alpha constant (255 totally opaque) */
 69   LTDC_Layer_InitStruct.LTDC_ConstantAlpha = 255;
 70   /* Default Color configuration (configure A,R,G,B component values) */
 71   LTDC_Layer_InitStruct.LTDC_DefaultColorBlue = 0;
 72   LTDC_Layer_InitStruct.LTDC_DefaultColorGreen = 0;
 73   LTDC_Layer_InitStruct.LTDC_DefaultColorRed = 0;
 74   LTDC_Layer_InitStruct.LTDC_DefaultColorAlpha = 0;
 75   /* Configure blending factors */
 76   LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_CA;
 77   LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_CA;
 78   /* the length of one line of pixels in bytes + 3 then :
 79      Line Lenth = Active high width x number of bytes per pixel + 3
 80      Active high width         = LCD_PIXEL_WIDTH
 81      number of bytes per pixel = 2    (pixel_format : RGB565)
 82   */
 83   LTDC_Layer_InitStruct.LTDC_CFBLineLength = ((480 * 2) + 3);
 84   /*  the pitch is the increment from the start of one line of pixels to the
 85       start of the next line in bytes, then :
 86       Pitch = Active high width x number of bytes per pixel
 87   */
 88   LTDC_Layer_InitStruct.LTDC_CFBPitch = (480 * 2);
 89   /* configure the number of lines */
 90   LTDC_Layer_InitStruct.LTDC_CFBLineNumber = 272;
 91
 92   /* Input Address configuration */
 93   LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER;
 94
 95   LTDC_LayerInit(LTDC_Layer1, &LTDC_Layer_InitStruct);
 96
 97   /* Configure Layer2 */
 98   LTDC_Layer_InitStruct.LTDC_CFBStartAdress = LCD_FRAME_BUFFER + BUFFER_OFFSET;
 99   LTDC_Layer_InitStruct.LTDC_BlendingFactor_1 = LTDC_BlendingFactor1_PAxCA;
100   LTDC_Layer_InitStruct.LTDC_BlendingFactor_2 = LTDC_BlendingFactor2_PAxCA;
101   LTDC_LayerInit(LTDC_Layer2, &LTDC_Layer_InitStruct);
102
103   LTDC_ReloadConfig(LTDC_IMReload);
104
105   /* Enable foreground & background Layers */
106   LTDC_LayerCmd(LTDC_Layer1, ENABLE);
107 //  LTDC_LayerCmd(LTDC_Layer2, ENABLE);
108   LTDC_ReloadConfig(LTDC_IMReload);
109
110   LCD_DisplayOn();
111 }

LCD_Init

LTDC_DefaultColorBlue就是背景色

每个Layer支持窗口(Window)操作,所谓Window,就是指该层的图像只有在Window区域内有效,而Window区域外则用该层的DefaultColor填充。如下图:

填色直接写内存

 1 int main (void)
 2 {
 3   uint32_t i, j;
 4   uint16_t *addr = (uint16_t *)LCD_FRAME_BUFFER;
 5
 6
 7   SDRAM_Init();
 8   LCD_Init();
 9     j = 0;
10   while (1) {
11
12     for (i = 0; i < 0x2000000;i++);
13     for (i = 0; i < 480 * 272; i++)
14     {
15       addr[i] = 1 << j;
16     }
17     j++;
18     if (j > 15)j = 0;
19   }
20 }

LCD display RGB

转载于:https://www.cnblogs.com/wwjdwy/p/4582076.html

STM32F4 LTDC学习相关推荐

  1. stm32f4外设学习篇(代码集合)

    stm32f4外设学习篇(代码集合) 1.串口1 2.串口2(RS485) 3.定时器(多路) 4.PWM 5.窗口看门狗 6.独立看门狗 7.GPIO(LED) 8.外部中断(EXTI) 9.随机数 ...

  2. STM32F4 IAP学习笔记

    STM32 IAP学习 一. IAP介绍 ​ IAP(in application programming)即在应用中编程.即用户可以在程序运行的过程中对user flash部分的区域进行烧写,主要用 ...

  3. STM32F4深入学习【RCC】

    复位 系统复位 系统复位将所有寄存器复位,除了时钟控制寄存器CSR中的复位标志和备份域寄存器 复位条件: 外部复位:NRST引脚电平拉低 WWDG复位:窗口看门狗计数结束 IWDG复位:独立看门狗计数 ...

  4. 内存模型 linux,内存模型 - STM32F4 编程手册学习_Linux编程_Linux公社-Linux系统门户网站...

    STM32F4编程手册学习2_内存模型 1. 内存映射 MCU将资源映射到一段固定的4GB可寻址内存上,如下图所示. 内存映射将内存分为几块区域,每一块区域都有一个定义的内存类型,一些区域还有一些附加 ...

  5. 【开发历程】STM32F4之SHT31-DIS温湿度传感器完整学习历程(附模块化程序代码,带详细注释)

    前言 本人萌新一枚,学习了STM32之后想自己调点什么练练手,于是打开淘宝.本来想买一块DHT11,翻着翻着就发现了这块小板.本着调就调没调过的原则,从店家购买了SHT31模块.买了后才发现,网上相关 ...

  6. 1.STM32F4工程新建学习

    目录 寄存器版本新建工程 1.新建工程目录,复制需要的文件到工程目录下 2.把工程需要的文件添加到工程 3.在MDK中设置头文件存放路径,以便工程能引用这些文件 4.配置MDK:全局宏定义 5.编写用 ...

  7. STM32F4(正点原子)学习笔记(一):GPIO及其小实验

    目录 一.写在前面: 二.GPIO基本情况 1.概述 2.引脚说明 3.GPIO工作方式 (1)4种输入模式 (2)4种输出模式 (3)4种最大输出速度 (4)主要特性 4.GPIO相关配置寄存器 三 ...

  8. (实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 SD卡驱动程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] ( ...

  9. (实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象 主程序 FATFS初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创 ...

最新文章

  1. 十一好礼,90份新品MCU开发板免费送!
  2. 从零实现一个简易jQuery框架之一—jQuery框架概述
  3. C语言指针和数组的天生姻缘
  4. 包含Iphlpapi.h 编译错误 error C2065: 'HRASCONN'
  5. 无招胜有招之Java进阶JVM(四)内存模型plus
  6. python pexpect timeout_Python 的 pexpect 模块的问题
  7. R语言聚类算法之密度聚类(Density-based Methods)
  8. CSDN怎样编辑公式
  9. bug9-TypeError: ‘generator‘ object is not subscriptable
  10. 在nhibernate 1.2 中使用sqlite时应注意sqlite的ado.net的提供者 .
  11. Oracle 根据业务创建新的用户
  12. 关于采用消息钩子机制的透明加密的简单破解
  13. ContentProvider跨进程注册、启动流程源码解析
  14. 尚硅谷YYDS (视频连接)
  15. 利用libjpeg库实现jpg与bmp图片互转指南
  16. c语言编写数据存储的游戏,c语言经典小程序和c语言编写的小游戏带注释(自动保存的).doc...
  17. 【微信小程序】学习笔记-----navigation-bar导航栏
  18. 你真的分清楚子序列和全排列了吗?【建议收藏】
  19. Vue+SpringBoot图书管理系统前后端分离(教你一步一步搭建)
  20. unity3D 移动平台性能优化

热门文章

  1. java ab性能测试,服务器JAVA性能测试——SPECjbb2005
  2. 交换机虚拟化和堆叠的区别_交换机级联与堆叠有何区别
  3. shell脚本中数组的使用_Shell脚本中的数组
  4. Java SE 9:Stream API的改进
  5. singleton设计模式_Java Singleton设计模式最佳实践与示例
  6. android jni示例_Android GridLayoutManager示例
  7. java 合并两个列表_如何在Java中合并两个列表?
  8. Java基础:参数是如何传递的
  9. 区块链支付平台技术的应用
  10. Android launcher 壁纸 wallpaper