STM32F4 LTDC学习
很久没有写东西了,也很久没看文档了吼吼,觉得有点无聊,找来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(<DC_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(<DC_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, <DC_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, <DC_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学习相关推荐
- stm32f4外设学习篇(代码集合)
stm32f4外设学习篇(代码集合) 1.串口1 2.串口2(RS485) 3.定时器(多路) 4.PWM 5.窗口看门狗 6.独立看门狗 7.GPIO(LED) 8.外部中断(EXTI) 9.随机数 ...
- STM32F4 IAP学习笔记
STM32 IAP学习 一. IAP介绍 IAP(in application programming)即在应用中编程.即用户可以在程序运行的过程中对user flash部分的区域进行烧写,主要用 ...
- STM32F4深入学习【RCC】
复位 系统复位 系统复位将所有寄存器复位,除了时钟控制寄存器CSR中的复位标志和备份域寄存器 复位条件: 外部复位:NRST引脚电平拉低 WWDG复位:窗口看门狗计数结束 IWDG复位:独立看门狗计数 ...
- 内存模型 linux,内存模型 - STM32F4 编程手册学习_Linux编程_Linux公社-Linux系统门户网站...
STM32F4编程手册学习2_内存模型 1. 内存映射 MCU将资源映射到一段固定的4GB可寻址内存上,如下图所示. 内存映射将内存分为几块区域,每一块区域都有一个定义的内存类型,一些区域还有一些附加 ...
- 【开发历程】STM32F4之SHT31-DIS温湿度传感器完整学习历程(附模块化程序代码,带详细注释)
前言 本人萌新一枚,学习了STM32之后想自己调点什么练练手,于是打开淘宝.本来想买一块DHT11,翻着翻着就发现了这块小板.本着调就调没调过的原则,从店家购买了SHT31模块.买了后才发现,网上相关 ...
- 1.STM32F4工程新建学习
目录 寄存器版本新建工程 1.新建工程目录,复制需要的文件到工程目录下 2.把工程需要的文件添加到工程 3.在MDK中设置头文件存放路径,以便工程能引用这些文件 4.配置MDK:全局宏定义 5.编写用 ...
- STM32F4(正点原子)学习笔记(一):GPIO及其小实验
目录 一.写在前面: 二.GPIO基本情况 1.概述 2.引脚说明 3.GPIO工作方式 (1)4种输入模式 (2)4种输出模式 (3)4种最大输出速度 (4)主要特性 4.GPIO相关配置寄存器 三 ...
- (实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】
文章目录 其它文章链接,独家吐血整理 实验现象 主程序 SD卡驱动程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创] ( ...
- (实验39)单片机,STM32F4学习笔记,代码讲解【FATFS实验】【正点原子】【原创】
文章目录 其它文章链接,独家吐血整理 实验现象 主程序 FATFS初始化程序 代码讲解 其它文章链接,独家吐血整理 (实验3)单片机,STM32F4学习笔记,代码讲解[按键输入实验][正点原子][原创 ...
最新文章
- 十一好礼,90份新品MCU开发板免费送!
- 从零实现一个简易jQuery框架之一—jQuery框架概述
- C语言指针和数组的天生姻缘
- 包含Iphlpapi.h 编译错误 error C2065: 'HRASCONN'
- 无招胜有招之Java进阶JVM(四)内存模型plus
- python pexpect timeout_Python 的 pexpect 模块的问题
- R语言聚类算法之密度聚类(Density-based Methods)
- CSDN怎样编辑公式
- bug9-TypeError: ‘generator‘ object is not subscriptable
- 在nhibernate 1.2 中使用sqlite时应注意sqlite的ado.net的提供者 .
- Oracle 根据业务创建新的用户
- 关于采用消息钩子机制的透明加密的简单破解
- ContentProvider跨进程注册、启动流程源码解析
- 尚硅谷YYDS (视频连接)
- 利用libjpeg库实现jpg与bmp图片互转指南
- c语言编写数据存储的游戏,c语言经典小程序和c语言编写的小游戏带注释(自动保存的).doc...
- 【微信小程序】学习笔记-----navigation-bar导航栏
- 你真的分清楚子序列和全排列了吗?【建议收藏】
- Vue+SpringBoot图书管理系统前后端分离(教你一步一步搭建)
- unity3D 移动平台性能优化
热门文章
- java ab性能测试,服务器JAVA性能测试——SPECjbb2005
- 交换机虚拟化和堆叠的区别_交换机级联与堆叠有何区别
- shell脚本中数组的使用_Shell脚本中的数组
- Java SE 9:Stream API的改进
- singleton设计模式_Java Singleton设计模式最佳实践与示例
- android jni示例_Android GridLayoutManager示例
- java 合并两个列表_如何在Java中合并两个列表?
- Java基础:参数是如何传递的
- 区块链支付平台技术的应用
- Android launcher 壁纸 wallpaper