移植官方和正点原子的都不行,使用cubemax生成的文件来进行补充,移植lcd文件会出现图片的情况

移植官方和正点原子的都不行,使用cubemax生成的文件来进行补充,移植lcd文件会出现图片的情况

关注让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek
如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞
// 初始化LCD相关GPIO
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 配置LCD的数据线GPIO
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
// 配置LCD的控制线GPIO
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
// 初始化LCD控制器
void MX_LCD_Init(void)
{
// 假设LCD控制器是SPI接口
__HAL_RCC_SPI1_CLK_ENABLE();
SPI_HandleTypeDef hspi1;
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BR_PRESCALER_256;
hspi1.Init.FirstBit = SPI_FIRSTBIT_SET;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
if (HAL_SPI_Init(&hspi1) != HAL_OK)
{
Error_Handler();
}
// 初始化LCD的显示模式等参数
// 例如设置分辨率为800x480,颜色模式为RGB565
// 这里假设通过SPI发送命令来设置
uint16_t resolution_cmd[] = {0x00, 0x18, 0x03, 0x20, 0x00, 0xC8, 0x32, 0x00}; // 示例分辨率设置命令
for(uint8_t i = 0; i < sizeof(resolution_cmd)/sizeof(resolution_cmd[0]); i++)
{
HAL_SPI_Transmit(&hspi1, (uint8_t*)&resolution_cmd[i], 1, HAL_MAX_DELAY);
}
uint16_t color_mode_cmd[] = {0x00, 0x2A, 0x00, 0x05, 0x00, 0x10, 0x02, 0x00}; // 示例颜色模式设置命令
for(uint8_t i = 0; i < sizeof(color_mode_cmd)/sizeof(color_mode_cmd[0]); i++)
{
HAL_SPI_Transmit(&hspi1, (uint8_t*)&color_mode_cmd[i], 1, HAL_MAX_DELAY);
}
}
以上解答基于常见的LCD移植问题原因进行分析,具体解决还需结合实际的硬件平台和LCD型号进行进一步排查和调整。
希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。