From aad3bc228068641d4779b00dc4865c7ec32246a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cle=CC=81ment=20Grennerat?= Date: Sun, 14 Sep 2025 12:48:57 +0200 Subject: [PATCH] Fixing orientation --- Core/Inc/LCD_driver.h | 4 +- Core/Src/LCD_driver.c | 24 +++++------ Core/Src/main.c | 3 +- Core/Src/stm32f1xx_hal_msp.c | 80 ++++++++++++++++++------------------ 4 files changed, 56 insertions(+), 55 deletions(-) diff --git a/Core/Inc/LCD_driver.h b/Core/Inc/LCD_driver.h index 5ba5df0..e5079a1 100644 --- a/Core/Inc/LCD_driver.h +++ b/Core/Inc/LCD_driver.h @@ -28,8 +28,8 @@ #define SPI1_BASEDR_ADR SPI1_BASE //adresse du reg SPI3 DR pour acces 8 bits (defs std permet accès 16bits seulement) -#define LCD_SCREEN_HEIGHT 470 // ST7365 is 480 (aligned at the origin) -#define LCD_SCREEN_WIDTH 282 // ST7365 is 320 (centered, offset = 19) +#define LCD_SCREEN_HEIGHT 282 // ST7365 is 320 (centered, offset = 19) +#define LCD_SCREEN_WIDTH 470 // ST7365 is 480 (aligned at the left, offset = 10) //CHIP SELECT PIN AND PORT, STANDARD GPIO #define LCD_CS_PIN (1<<8) diff --git a/Core/Src/LCD_driver.c b/Core/Src/LCD_driver.c index 3248c5e..e228641 100644 --- a/Core/Src/LCD_driver.c +++ b/Core/Src/LCD_driver.c @@ -94,12 +94,12 @@ void LCD_Write_Data16(uint16_t data) { /* Set the frame to draw into and sends a write into frame command */ void LCD_Set_Address(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2) { LCD_Write_Command(0x2A); - LCD_Write_Data16(X1); - LCD_Write_Data16(X2); + LCD_Write_Data16(X1 + 10); + LCD_Write_Data16(X2 + 10); LCD_Write_Command(0x2B); - LCD_Write_Data16(Y1); - LCD_Write_Data16(Y2); + LCD_Write_Data16(Y1 + 19); + LCD_Write_Data16(Y2 + 19); LCD_Write_Command(0x2C); } @@ -164,8 +164,10 @@ void LCD_Init(void) { // Enable color inversion (INVON) LCD_Write_Command(0x21); -// Disable partial mode - LCD_Write_Command(0x13); +// Configure orientation stuff + LCD_Write_Command(0x36); + LCD_Write_Data(0b10110100); + // Exit sleep LCD_Write_Command(0x11); @@ -177,24 +179,22 @@ void LCD_Init(void) { // Fill white LCD_Fill_Screen(WHITE); -// End the end with black -// LCD_Draw_Rectangle(0, LCD_SCREEN_WIDTH, LCD_SCREEN_WIDTH, -// LCD_SCREEN_HEIGHT - LCD_SCREEN_WIDTH, BLACK); // Draw colors columns - LCD_Set_Address(20, 20, LCD_SCREEN_WIDTH - 60, LCD_SCREEN_WIDTH - 60); - uint32_t size = (LCD_SCREEN_WIDTH - 40) * 20; + LCD_Set_Address(30, 30, LCD_SCREEN_WIDTH - 30, LCD_SCREEN_HEIGHT - 30); + uint32_t size = (LCD_SCREEN_WIDTH - 59) * 20; LCD_Draw_Colour_Burst(BLACK, size); LCD_Draw_Colour_Burst(WHITE, size); LCD_Draw_Colour_Burst(BLUE, size); LCD_Draw_Colour_Burst(GREEN, size); LCD_Draw_Colour_Burst(RED, size); + LCD_Draw_Colour_Burst(BLACK, 4 * size); // Draw rectangles in the angles LCD_Draw_Rectangle(1, 1, 20, 20, RED); LCD_Draw_Rectangle(LCD_SCREEN_WIDTH - 21, 1, 20, 20, GREEN); LCD_Draw_Rectangle(LCD_SCREEN_WIDTH - 21, LCD_SCREEN_HEIGHT - 21, 20, 20, - MAGENTA); + MAGENTA); LCD_Draw_Rectangle(1, LCD_SCREEN_HEIGHT - 21, 20, 20, BLUE); // STARTING ROTATION diff --git a/Core/Src/main.c b/Core/Src/main.c index 3437465..1b15857 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -101,8 +101,9 @@ int main(void) /* USER CODE BEGIN WHILE */ while (1) { - HAL_Delay(500); LCD_Init(); + HAL_Delay(10000); + HAL_Delay(10); /* USER CODE END WHILE */ diff --git a/Core/Src/stm32f1xx_hal_msp.c b/Core/Src/stm32f1xx_hal_msp.c index d7925bc..f0df8d7 100644 --- a/Core/Src/stm32f1xx_hal_msp.c +++ b/Core/Src/stm32f1xx_hal_msp.c @@ -1,4 +1,4 @@ -/* USER CODE BEGIN Header */ +/* USER CODE BEGIN */ /** ****************************************************************************** * @file stm32f1xx_hal_msp.c @@ -16,56 +16,56 @@ * ****************************************************************************** */ -/* USER CODE END Header */ +/* USER CODE END */ /* Includes ------------------------------------------------------------------*/ #include "main.h" -/* USER CODE BEGIN Includes */ +/* USER CODE BEGIN */ -/* USER CODE END Includes */ +/* USER CODE END */ /* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN TD */ +/* USER CODE BEGIN */ -/* USER CODE END TD */ +/* USER CODE END */ /* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN Define */ +/* USER CODE BEGIN */ -/* USER CODE END Define */ +/* USER CODE END */ /* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN Macro */ +/* USER CODE BEGIN */ -/* USER CODE END Macro */ +/* USER CODE END */ /* Private variables ---------------------------------------------------------*/ -/* USER CODE BEGIN PV */ +/* USER CODE BEGIN */ -/* USER CODE END PV */ +/* USER CODE END */ /* Private function prototypes -----------------------------------------------*/ -/* USER CODE BEGIN PFP */ +/* USER CODE BEGIN */ -/* USER CODE END PFP */ +/* USER CODE END */ /* External functions --------------------------------------------------------*/ -/* USER CODE BEGIN ExternalFunctions */ +/* USER CODE BEGIN */ -/* USER CODE END ExternalFunctions */ +/* USER CODE END */ -/* USER CODE BEGIN 0 */ +/* USER CODE BEGIN */ -/* USER CODE END 0 */ +/* USER CODE END */ /** * Initializes the Global MSP. */ void HAL_MspInit(void) { - /* USER CODE BEGIN MspInit 0 */ +/* USER CODE BEGIN */ - /* USER CODE END MspInit 0 */ +/* USER CODE END */ __HAL_RCC_AFIO_CLK_ENABLE(); __HAL_RCC_PWR_CLK_ENABLE(); @@ -76,9 +76,9 @@ void HAL_MspInit(void) */ __HAL_AFIO_REMAP_SWJ_NOJTAG(); - /* USER CODE BEGIN MspInit 1 */ +/* USER CODE BEGIN */ - /* USER CODE END MspInit 1 */ +/* USER CODE END */ } /** @@ -92,9 +92,9 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) GPIO_InitTypeDef GPIO_InitStruct = {0}; if(hspi->Instance==SPI1) { - /* USER CODE BEGIN SPI1_MspInit 0 */ +/* USER CODE BEGIN */ - /* USER CODE END SPI1_MspInit 0 */ +/* USER CODE END */ /* Peripheral clock enable */ __HAL_RCC_SPI1_CLK_ENABLE(); @@ -115,9 +115,9 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) GPIO_InitStruct.Pull = GPIO_NOPULL; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /* USER CODE BEGIN SPI1_MspInit 1 */ +/* USER CODE BEGIN */ - /* USER CODE END SPI1_MspInit 1 */ +/* USER CODE END */ } @@ -133,9 +133,9 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) { if(hspi->Instance==SPI1) { - /* USER CODE BEGIN SPI1_MspDeInit 0 */ +/* USER CODE BEGIN */ - /* USER CODE END SPI1_MspDeInit 0 */ +/* USER CODE END */ /* Peripheral clock disable */ __HAL_RCC_SPI1_CLK_DISABLE(); @@ -147,9 +147,9 @@ void HAL_SPI_MspDeInit(SPI_HandleTypeDef* hspi) */ HAL_GPIO_DeInit(GPIOA, GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7); - /* USER CODE BEGIN SPI1_MspDeInit 1 */ +/* USER CODE BEGIN */ - /* USER CODE END SPI1_MspDeInit 1 */ +/* USER CODE END */ } } @@ -165,9 +165,9 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) GPIO_InitTypeDef GPIO_InitStruct = {0}; if(huart->Instance==USART1) { - /* USER CODE BEGIN USART1_MspInit 0 */ +/* USER CODE BEGIN */ - /* USER CODE END USART1_MspInit 0 */ +/* USER CODE END */ /* Peripheral clock enable */ __HAL_RCC_USART1_CLK_ENABLE(); @@ -188,9 +188,9 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) __HAL_AFIO_REMAP_USART1_ENABLE(); - /* USER CODE BEGIN USART1_MspInit 1 */ +/* USER CODE BEGIN */ - /* USER CODE END USART1_MspInit 1 */ +/* USER CODE END */ } @@ -206,9 +206,9 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) { if(huart->Instance==USART1) { - /* USER CODE BEGIN USART1_MspDeInit 0 */ +/* USER CODE BEGIN */ - /* USER CODE END USART1_MspDeInit 0 */ +/* USER CODE END */ /* Peripheral clock disable */ __HAL_RCC_USART1_CLK_DISABLE(); @@ -218,13 +218,13 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) */ HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7); - /* USER CODE BEGIN USART1_MspDeInit 1 */ +/* USER CODE BEGIN */ - /* USER CODE END USART1_MspDeInit 1 */ +/* USER CODE END */ } } -/* USER CODE BEGIN 1 */ +/* USER CODE BEGIN */ -/* USER CODE END 1 */ +/* USER CODE END */