【stm32】stm32 hal中的屏幕初始化

​​​屏幕的8080接口和RGB接口 (icode9.com)

基于STM32F429的RGB屏使用_hducollins的博客-CSDN博客

STM32CubeMx开发之路—LTDC驱动STM32F429I-Discover上的显示屏_iot小胡的博客-CSDN博客

板子:stm32F429I-Discovery

在想这个屏幕具体怎么初始化的。

主要是函数void ili9341_Init(void)的底层硬件引脚初始化。

屏幕连接原理图: 

硬件引脚:

1.串行数据,单片机SPI5 (时钟DCX_SCL, 输入SDA)                        //SDA接单片机SPI_MOSI

2.几个控制引脚 (片选CSX, 写控制WRX,  读控制RDX)

3.RGB引脚

4.背光引脚

5.电源地

屏幕初始化的流程 :

1.写寄存器,初始化代码

//函数嵌套太多就畏惧,写成树一看就心中有数了

void ili9341_Init(void)
{
  /* Initialize ILI9341 low level bus layer ----------------------------------*/
  LCD_IO_Init();
        |
        |---- 1. 初始化几个控制引脚GPIO
        |
        |---- 2. 初始化SPI, MOSI和SCK
  
  //Configure LCD
  ili9341_WriteReg(0xCA);
            |
            |----- 1.LCD_WRX_LOW();
            |               |
            |               |------ HAL_GPIO_WritePin(LCD_WRX_GPIO_PORT, LCD_WRX_PIN, GPIO_PIN_RESET)
            |
            |----- 2.LCD_CS_LOW();
            |
            |----- 3.SPIx_Write(Reg);
            |            |
            |            |-------- HAL_SPI_Transmit(&SpiHandle, (uint8_t*) &Value, 1, SpixTimeout);
            |
            |----- 4.LCD_CS_HIGH();

   //忽略大段厂商初始化代码
  //忽略大段厂商初始化代码
  //忽略大段厂商初始化代码

  ili9341_WriteData(0x0F);
  
  ili9341_WriteReg(LCD_SLEEP_OUT);    //0x11
  LCD_Delay(200);
  ili9341_WriteReg(LCD_DISPLAY_ON);   //0x29
  /* GRAM start writing */
  ili9341_WriteReg(LCD_GRAM);
}

2.显示图片

RGB的引脚在HAL_LTDC_MspInit中初始化。

图片的显示通过初始化LTDC_HandleTypeDef  LtdcHandle以及LTDC_LayerCfgTypeDef  pLayerCfg的成员。

1.HAL_LTDC_Init(&LtdcHandle)                 //配置LTDC

2.HAL_LTDC_ConfigLayer(&LtdcHandle, &pLayerCfg, 0)        //配置背景Layer

3.HAL_LTDC_ConfigLayer(&LtdcHandle, &pLayerCfg1, 1)       //配置前景Layer

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F407IGT6单片机RFID射频(RC522)模块实验KEIL软件DEMO工程源码,可做为你的人学习设计参考。 int main(void) { /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化串口并配置串口断优先级 */ MX_DEBUG_USART_Init(); /* 初始化3.5寸TFT液晶模组,一般优先于调试串口初始化 */ BSP_LCD_Init(); LCD_Clear(0,0,LCD_DEFAULT_WIDTH,LCD_DEFAULT_HEIGTH,BLACK); /* 开背光 */ LCD_BK_ON(); LCD_DispString_EN_CH(70,50,(uint8_t *)"YS-F4Pro开发板",BLACK,BLUE,USB_FONT_24); printf("RC522初始化\n"); RC522_Init(); PcdReset(); M500PcdConfigISOType ( 'A' );/* 设置工作方式 */ printf("RC522初始化完成\n"); while ( 1 ) { IC_test ();/* IC卡检测 */ } } /** * 函数功能: 门禁测试函数 * 输入参数: 无 * 返 回 值: 无 * 说 明: 无 */ void IC_test ( void ) { char cStr [ 30 ]; unsigned char ucArray_ID [ 4 ]; /* 先后存放IC卡的类型和UID(IC卡序列号) */ uint8_t ucStatusReturn; /* 返回状态*/ while ( 1 ) { /*寻卡*/ if ( ( ucStatusReturn = PcdRequest ( PICC_REQALL, ucArray_ID ) ) != MI_OK ) /*若失败再次寻卡*/ ucStatusReturn = PcdRequest ( PICC_REQALL, ucArray_ID ); if ( ucStatusReturn == MI_OK ) { /*防冲撞(当有多张卡进入读写器操作范围时,防冲突机制会从其选择一张进行操作)*/ if ( PcdAnticoll ( ucArray_ID ) == MI_OK ) { sprintf ( cStr, "The Card ID is: %02X%02X%02X%02X", ucArray_ID [ 0 ], ucArray_ID [ 1 ], ucArray_ID [ 2 ], ucArray_ID [ 3 ] ); printf ( "%s\r\n",cStr ); LCD_DispString_EN(10,200,cStr,BLACK,RED,USB_FONT_24); } } }

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值