ST意法半导体
直播中

李凤津

7年用户 937经验值
私信 关注
[问答]

为什么无法在NUCLEO STM32F070RB在ST7789屏幕上显示任何内容?

这个问题没有显示任何研究工作;不清楚或没有用
我是显示控制方面的新手,我正在为我的简单应用程序而苦苦挣扎。我需要在我的 nucleo 上计算一些数字,然后将它们显示在屏幕上。由于这是我第一次使用显示器,所以我首先尝试正确设置所有内容,然后按照我的目的进行工作,但我在迈出第一步时遇到了困难。
基本上,屏幕不会显示任何内容,但应该会显示一些测试动画。我不明白错误在哪里。非常感谢你!
这里是硬件细节:
  • 开发板:NUCLEO-F070RB
  • 显示器:AFL240240A0-1.3INTM-ANO 东方显示器(TFT 显示器,240x240,ST7789V 控制器)
这里通过跳线连接(显示 - >板):
  • 接地 -> 接地
  • VCC -> 3.3V
  • SCL -> PA5 (SCK)
  • SDA -> PA7 (MOSI)
  • RST -> PC7
  • 直流 -> PA9
  • CS -> PB6
  • 黑色 -> PA8
我改编了以下代码:LINK( github.com/Floyd-Fish/ST7789-STM3 2)
这里是主要代码(main.c、st7789.h、st7789.c):
  • #include "main.h"
  • #include "st7789.h"
  • SPI_HandleTypeDef hspi1;
  • void SystemClock_Config(void);
  • static void MX_GPIO_Init(void);
  • static void MX_SPI1_Init(void);
  • int main(void)
  • {
  •   HAL_Init();
  •   SystemClock_Config();
  •   MX_GPIO_Init();
  •   MX_SPI1_Init();
  •   ST7789_Init();
  •   ST7789_Test();
  •   while (1)
  •   {
  •   }
  • }
  • void SystemClock_Config(void)
  • {
  •   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  •   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
  •   /** Initializes the RCC Oscillators according to the specified parameters
  •   * in the RCC_OscInitTypeDef structure.
  •   */
  •   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  •   RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  •   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  •   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  •   RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
  •   RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
  •   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }
  •   /** Initializes the CPU, AHB and APB buses clocks
  •   */
  •   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
  •                               |RCC_CLOCKTYPE_PCLK1;
  •   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  •   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  •   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  •   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }
  •   /** Enables the Clock Security System
  •   */
  •   HAL_RCC_EnableCSS();
  • }
  • static void MX_SPI1_Init(void)
  • {
  •   /* SPI1 parameter configuration*/
  •   hspi1.Instance = SPI1;
  •   hspi1.Init.Mode = SPI_MODE_MASTER;
  •   hspi1.Init.Direction = SPI_DIRECTION_1LINE;
  •   hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  •   hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
  •   hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  •   hspi1.Init.NSS = SPI_NSS_SOFT;
  •   hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4;
  •   hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  •   hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  •   hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  •   hspi1.Init.CRCPolynomial = 7;
  •   hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
  •   hspi1.Init.NSSPMode = SPI_NSS_PULSE_ENABLE;
  •   if (HAL_SPI_Init(&hspi1) != HAL_OK)
  •   {
  •     Error_Handler();
  •   }
  • }
  • static void MX_GPIO_Init(void)
  • {
  •   GPIO_InitTypeDef GPIO_InitStruct = {0};
  •   /* GPIO Ports Clock Enable */
  •   __HAL_RCC_GPIOF_CLK_ENABLE();
  •   __HAL_RCC_GPIOA_CLK_ENABLE();
  •   __HAL_RCC_GPIOC_CLK_ENABLE();
  •   __HAL_RCC_GPIOB_CLK_ENABLE();
  •   /*Configure GPIO pin Output Level - BLK and DC*/
  •   HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8|GPIO_PIN_9, GPIO_PIN_RESET);
  •   /*Configure GPIO pin Output Level - RST */
  •   HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET);
  •   /*Configure GPIO pin Output Level - CS */
  •   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_RESET);
  •   /*Configure GPIO pins : LD2_Pin ST7789_BLK_Pin ST7789_DC_Pin */
  •   GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
  •   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  •   GPIO_InitStruct.Pull = GPIO_NOPULL;
  •   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  •   HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  •   /*Configure GPIO pin : ST7789_RST_Pin */
  •   GPIO_InitStruct.Pin = GPIO_PIN_7;
  •   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  •   GPIO_InitStruct.Pull = GPIO_NOPULL;
  •   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  •   HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
  •   /*Configure GPIO pin : ST7789_CS_Pin */
  •   GPIO_InitStruct.Pin = GPIO_PIN_6;
  •   GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  •   GPIO_InitStruct.Pull = GPIO_NOPULL;
  •   GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  •   HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  • }
  • void Error_Handler(void)
  • {
  •   __disable_irq();
  •   while (1)
  •   {
  •   }
  • }
  • #ifdef  USE_FULL_ASSERT
  • void assert_failed(uint8_t *file, uint32_t line)
  • {
  • }
  • #endif







回帖(1)

贾佳斌

2022-12-2 11:22:36
你在这里浪费空间,你 twicr 放置头文件,没有你的测试代码......
但是你有主要的标题


  • /* choose whether use DMA or not */
  • #define USE_DMA

并且主要没有 DMA 的初始化...
举报

更多回帖

发帖
×
20
完善资料,
赚取积分