马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
前言
SDRAM 设置
在开始此篇文章之前,起首要把 SDRAM 设置好,可以看我的上一篇文章:
【STM32H743IIT6 系列】将外部SDRAM作为内部RAM利用的超简单方法
没有将 SDRAM 作为内部 RAM 利用的朋侪可以选择性看上面这篇文章。
屏幕
这里我利用的是正点原子的 800 * 480的 4.3寸 RGBLCD 屏幕,如下图所示:
CubeMX设置
引脚设置
起首要注意的就是 MCU 引脚对应屏幕接口的 LTDC 引脚是否正确,我利用的是反客的 H743,下面是引脚对应图:
(另有 LTDC_BL 背光引脚须要我们自己界说,设置为高电平开漏输出上拉模式即可)
LTDC 设置
为了节流资源,我们利用的是 RGB565 模式:
Parameter Settings
Layer Settings
NVIC Settings
测试代码
点击查察代码- /* USER CODE BEGIN 0 */
- uint16_t* fb_addr = (uint16_t*)((uint32_t)0xC0000000);
- void LTDC_LCD_Fill(uint16_t* fb, uint16_t color, uint32_t length)
- {
- uint16_t* tmp_fb = fb;
- for (uint32_t i = 0; i < length; i++) {
- *(tmp_fb + i) = color;
- }
- }
- /* USER CODE END 0 */
- /**
- * @brief The application entry point.
- * @retval int
- */
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- /* USER CODE END 1 */
- /* MPU Configuration--------------------------------------------------------*/
- MPU_Config();
- /* Enable the CPU Cache */
- /* Enable I-Cache---------------------------------------------------------*/
- SCB_EnableICache();
- /* Enable D-Cache---------------------------------------------------------*/
- SCB_EnableDCache();
- /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* USER CODE BEGIN Init */
- /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
- /* USER CODE BEGIN SysInit */
- /* USER CODE END SysInit */
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_USART1_UART_Init();
- MX_FMC_Init();
- MX_LTDC_Init();
- /* USER CODE BEGIN 2 */
- Set_Current_USART(USART1_IDX);
- printf("SDRAM 初始化通过!\r\n");
-
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- SCB_CleanInvalidateDCache();
- while (!(LTDC->CDSR & LTDC_CDSR_VSYNCS));
- LTDC_LCD_Fill(fb_addr, (uint16_t)0xF800, (uint32_t)480 * 800 * 2);
- HAL_Delay(100);
-
- SCB_CleanInvalidateDCache();
- while (!(LTDC->CDSR & LTDC_CDSR_VSYNCS));
- LTDC_LCD_Fill(fb_addr, (uint16_t)0x07E0, (uint32_t)480 * 800 * 2);
- HAL_Delay(100);
-
- SCB_CleanInvalidateDCache();
- while (!(LTDC->CDSR & LTDC_CDSR_VSYNCS));
- LTDC_LCD_Fill(fb_addr, (uint16_t)0x001F, (uint32_t)480 * 800 * 2);
- HAL_Delay(100);
-
- SCB_CleanInvalidateDCache();
- while (!(LTDC->CDSR & LTDC_CDSR_VSYNCS));
- LTDC_LCD_Fill(fb_addr, (uint16_t)0xFFFF, (uint32_t)480 * 800 * 2);
- HAL_Delay(100);
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- }
- /* USER CODE END 3 */
- }
复制代码 结果
博客导航
博客导航
|