From 3bd65d37a57a6803b2c6bdd03f4af2dc5376f4bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cle=CC=81ment=20Grennerat?= Date: Mon, 18 Aug 2025 23:08:08 +0200 Subject: [PATCH] Linting & bringing the config closer to the ST7365 --- .idea/.gitignore | 8 - .idea/editor.xml | 102 -- .idea/inspectionProfiles/Project_Default.xml | 12 - .idea/misc.xml | 7 - .idea/modules.xml | 8 - .idea/ow-dash-cube.iml | 2 - .idea/vcs.xml | 4 - Core/Inc/LCD_driver.h | 84 +- Core/Inc/main.h | 51 +- Core/Src/LCD_driver.c | 1016 +++++++++--------- Core/Src/main.c | 142 +-- 11 files changed, 671 insertions(+), 765 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/editor.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/ow-dash-cube.iml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/editor.xml b/.idea/editor.xml deleted file mode 100644 index e54e87a..0000000 --- a/.idea/editor.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 7aeb631..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 0b76fe5..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 8f7d7d2..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/ow-dash-cube.iml b/.idea/ow-dash-cube.iml deleted file mode 100644 index f08604b..0000000 --- a/.idea/ow-dash-cube.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index d843f34..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/Core/Inc/LCD_driver.h b/Core/Inc/LCD_driver.h index e0ff914..2e146ef 100644 --- a/Core/Inc/LCD_driver.h +++ b/Core/Inc/LCD_driver.h @@ -31,7 +31,6 @@ #define LCD_SCREEN_HEIGHT 320 #define LCD_SCREEN_WIDTH 480 - //CHIP SELECT PIN AND PORT, STANDARD GPIO #define LCD_CS_PIN (1<<8) #define LCD_DC_PIN (1<<11) @@ -45,7 +44,6 @@ //#define LCD_RST_PORT GPIOC //#define LCD_RST_PIN RST_Pin - #define BURST_MAX_SIZE 100 //buffer burst stocké sur pile. Par défaut stackSiZE=256 dans FreeRTOS. #define BLACK 0x0000 @@ -94,17 +92,29 @@ void LCD_Fill_Screen(uint16_t Colour); void LCD_Draw_Colour(uint16_t Colour); // @param Colour : voir #define de quelques couleurs 16 bits standard ci-dessus -void LCD_Draw_Pixel(uint16_t X,uint16_t Y,uint16_t Colour); +void LCD_Draw_Pixel(uint16_t X, uint16_t Y, uint16_t Colour); //@param X : coordonnee x //@param Y : coordonnee y //@param Colour : voir #define de quelques couleurs 16 bits standard ci-dessus -void LCD_Draw_Horizontal_Line(uint16_t X, uint16_t Y, uint16_t Width, uint16_t Colour); -void LCD_Draw_Vertical_Line(uint16_t X, uint16_t Y, uint16_t Height, uint16_t Colour); -void LCD_Draw_Rectangle(uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height, uint16_t Colour); +void LCD_Draw_Horizontal_Line( + uint16_t X, + uint16_t Y, + uint16_t Width, + uint16_t Colour); +void LCD_Draw_Vertical_Line( + uint16_t X, + uint16_t Y, + uint16_t Height, + uint16_t Colour); +void LCD_Draw_Rectangle( + uint16_t X, + uint16_t Y, + uint16_t Width, + uint16_t Height, + uint16_t Colour); void LCD_Draw_Colour_Burst(uint16_t Colour, uint32_t Size); - #endif /*******************PARTIE ISSUE DE LA LIB ILI9193_GFX.h***************************/ @@ -115,22 +125,60 @@ void LCD_Draw_Colour_Burst(uint16_t Colour, uint32_t Size); #define HORIZONTAL_IMAGE 0 #define VERTICAL_IMAGE 1 -void LCD_Draw_Hollow_Circle(uint16_t X, uint16_t Y, uint16_t Radius, uint16_t Colour); -void LCD_Draw_Filled_Circle(uint16_t X, uint16_t Y, uint16_t Radius, uint16_t Colour); -void LCD_Draw_Hollow_Rectangle_Coord(uint16_t X0, uint16_t Y0, uint16_t X1, uint16_t Y1, uint16_t Colour); -void LCD_Draw_Filled_Rectangle_Coord(uint16_t X0, uint16_t Y0, uint16_t X1, uint16_t Y1, uint16_t Colour); -void LCD_Draw_Char(char Character, uint16_t X, uint16_t Y, uint16_t Colour, uint16_t Size, uint16_t Background_Colour); +void LCD_Draw_Hollow_Circle( + uint16_t X, + uint16_t Y, + uint16_t Radius, + uint16_t Colour); +void LCD_Draw_Filled_Circle( + uint16_t X, + uint16_t Y, + uint16_t Radius, + uint16_t Colour); +void LCD_Draw_Hollow_Rectangle_Coord( + uint16_t X0, + uint16_t Y0, + uint16_t X1, + uint16_t Y1, + uint16_t Colour); +void LCD_Draw_Filled_Rectangle_Coord( + uint16_t X0, + uint16_t Y0, + uint16_t X1, + uint16_t Y1, + uint16_t Colour); +void LCD_Draw_Char( + char Character, + uint16_t X, + uint16_t Y, + uint16_t Colour, + uint16_t Size, + uint16_t Background_Colour); -void LCD_Draw_Text(const char* Text, uint16_t X, uint16_t Y, uint16_t Colour, uint16_t Size, uint16_t Background_Colour); +void LCD_Draw_Text( + const char *Text, + uint16_t X, + uint16_t Y, + uint16_t Colour, + uint16_t Size, + uint16_t Background_Colour); /*Draws a character (fonts imported from fonts.h) at X,Y location with specified font colour, size and Background colour*/ -void LCD_Draw_Filled_Rectangle_Size_Text(uint16_t X0, uint16_t Y0, uint16_t Size_X, uint16_t Size_Y, uint16_t Colour); +void LCD_Draw_Filled_Rectangle_Size_Text( + uint16_t X0, + uint16_t Y0, + uint16_t Size_X, + uint16_t Size_Y, + uint16_t Colour); - -void LCD_Draw_Image_XY(const char* Image_Array, uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height); +void LCD_Draw_Image_XY( + const char *Image_Array, + uint16_t X, + uint16_t Y, + uint16_t Width, + uint16_t Height); /*Dessine une image 65K couleurs (2Bytes / Pixel) dans une zone de l'ecran, aux coordonnées X et Y*/ //CONVERTISSEUR: http://www.digole.com/tools/PicturetoC_Hex_converter.php - -void LCD_Draw_Image_Full(const char* Image_Array, uint8_t Orientation); +void LCD_Draw_Image_Full(const char *Image_Array, uint8_t Orientation); #endif diff --git a/Core/Inc/main.h b/Core/Inc/main.h index 0c4b284..b9c7739 100644 --- a/Core/Inc/main.h +++ b/Core/Inc/main.h @@ -1,21 +1,22 @@ /* USER CODE BEGIN Header */ /** - ****************************************************************************** - * @file : main.h - * @brief : Header for main.c file. - * This file contains the common defines of the application. - ****************************************************************************** - * @attention - * - * Copyright (c) 2025 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +//@formatter:off /* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ @@ -31,29 +32,34 @@ extern "C" { /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ - +//@formatter:on +//@formatter:off /* USER CODE END Includes */ /* Exported types ------------------------------------------------------------*/ /* USER CODE BEGIN ET */ - +//@formatter:on +//@formatter:off /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ /* USER CODE BEGIN EC */ - +//@formatter:on +//@formatter:off /* USER CODE END EC */ /* Exported macro ------------------------------------------------------------*/ /* USER CODE BEGIN EM */ - +//@formatter:on +//@formatter:off /* USER CODE END EM */ /* Exported functions prototypes ---------------------------------------------*/ void Error_Handler(void); /* USER CODE BEGIN EFP */ - +//@formatter:on +//@formatter:off /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ @@ -105,7 +111,8 @@ void Error_Handler(void); #define DB12_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ - +//@formatter:on +//@formatter:off /* USER CODE END Private defines */ #ifdef __cplusplus diff --git a/Core/Src/LCD_driver.c b/Core/Src/LCD_driver.c index 14afa23..c311807 100644 --- a/Core/Src/LCD_driver.c +++ b/Core/Src/LCD_driver.c @@ -30,83 +30,79 @@ /* Global Variables ------------------------------------------------------------------*/ volatile uint16_t LCD_HEIGHT = LCD_SCREEN_HEIGHT; -volatile uint16_t LCD_WIDTH = LCD_SCREEN_WIDTH; - +volatile uint16_t LCD_WIDTH = LCD_SCREEN_WIDTH; /* SPI3 & GPIOs init function */ -void LCD_SPI_Init(void) -{ - //__HAL_RCC_SPI3_CLK_ENABLE(); - RCC->APB1ENR1 |= RCC_APB1ENR1_SPI3EN; // SPI3 clock enable - RCC->AHB2ENR |= RCC_AHB2ENR_GPIOCEN; // GPIOC clock enable +void LCD_SPI_Init(void) { +//__HAL_RCC_SPI3_CLK_ENABLE(); + RCC->APB1ENR1 |= RCC_APB1ENR1_SPI3EN;// SPI3 clock enable + RCC->AHB2ENR |= RCC_AHB2ENR_GPIOCEN;// GPIOC clock enable /** CS & DC GPIO signals configuration - PC8 ------> LCD_CS_PIN - PC11 ------> LCD_DC_PIN + PC8 ------> LCD_CS_PIN + PC11 ------> LCD_DC_PIN */ - GPIOC->BSRR = LCD_CS_PIN | (LCD_DC_PIN <<16); //CS à 1 et DC à 0 - GPIOC->MODER |= (1<<16)|(1<<22); //GPIO out - GPIOC->MODER &= ~((1<<17)|(1<<23)); //mise à 0 - GPIOC->OTYPER &= (GPIO_OTYPER_OT8 | GPIO_OTYPER_OT11); //PC8 & 11 en PP - GPIOC->OSPEEDR |= (3<<16) | (3<<22); //High speed + GPIOC->BSRR = LCD_CS_PIN | (LCD_DC_PIN << 16);//CS à 1 et DC à 0 + GPIOC->MODER |= (1 << 16) | (1 << 22);//GPIO out + GPIOC->MODER &= ~((1 << 17) | (1 << 23));//mise à 0 + GPIOC->OTYPER &= (GPIO_OTYPER_OT8 | GPIO_OTYPER_OT11);//PC8 & 11 en PP + GPIOC->OSPEEDR |= (3 << 16) | (3 << 22);//High speed /**SPI3 GPIO Configuration - PC10 ------> SPI3_SCK - PC12 ------> SPI3_MOSI */ - GPIOC->AFR[1] |= (6 << 8)|(6 << 16); //PC10 en AF6 : SPI3_SCK, PC12 en AF6 : SPI3_MOSI - GPIOC->AFR[1] &= 0xFFF6F6FF; //Mise à 0 - GPIOC->MODER |= (2<<20)|(2<<24); //MODE AF - GPIOC->MODER &= 0xFEEFFFFF; //Mise à 0 - GPIOC->OTYPER &= (GPIO_OTYPER_OT10 | GPIO_OTYPER_OT12); //PC10 & 12 en PP - GPIOC->OSPEEDR |= (3<<24) | (3<<20); //High speed + PC10 ------> SPI3_SCK + PC12 ------> SPI3_MOSI */ + GPIOC->AFR[1] |= (6 << 8) | (6 << 16);//PC10 en AF6 : SPI3_SCK, PC12 en AF6 : SPI3_MOSI + GPIOC->AFR[1] &= 0xFFF6F6FF;//Mise à 0 + GPIOC->MODER |= (2 << 20) | (2 << 24);//MODE AF + GPIOC->MODER &= 0xFEEFFFFF;//Mise à 0 + GPIOC->OTYPER &= (GPIO_OTYPER_OT10 | GPIO_OTYPER_OT12);//PC10 & 12 en PP + GPIOC->OSPEEDR |= (3 << 24) | (3 << 20);//High speed /*Configure module SPI3*/ - SPI3->CR1=SPI_CR1_SSM | SPI_CR1_SSI; //CS soft, SSI à 1 sinon decl. mode fault - SPI3->CR1|=SPI_CR1_MSTR; // 0 sauf SPE et mode Master, BR = 0 => /2=> Fsck=40M - SPI3->CR2=0x0700 | SPI_CR2_FRXTH;// | SPI_CR2_NSSP; //mode 8 bits, ITs disabled, no DMA, FRXTH doit être à 1 en 8 bits - SPI3->CR1|=SPI_CR1_SPE; + SPI3->CR1 = SPI_CR1_SSM | SPI_CR1_SSI;//CS soft, SSI à 1 sinon decl. mode fault + SPI3->CR1 |= SPI_CR1_MSTR;// 0 sauf SPE et mode Master, BR = 0 => /2=> Fsck=40M + SPI3->CR2 = 0x0700 | SPI_CR2_FRXTH;// | SPI_CR2_NSSP; //mode 8 bits, ITs disabled, no DMA, FRXTH doit être à 1 en 8 bits + SPI3->CR1 |= SPI_CR1_SPE; } /* Send command (char) to LCD via SPI bus */ -void LCD_Write_Command(uint8_t Command) -{ - // principe : on attend toujours la fin du transfert, à cause du CS_OFF soft qui arrive après. - // donc à priori pas besoin de tester l'état du buffer TX avant l'envoi : - // le buffer devrait toujours vide - CMD; //Ligne de commande a '1' - //CS_ON; - while ((SPI1->SR & SPI_SR_TXE) != 0); // SPI_SR_BSY si besoin d’attendre la fin complète de l’envoi des trames SPI. - *(uint8_t *)(SPI1_DR_ADR) = Command; //Cast sur pointeur, pour ecriture 8 bits. Sinon l'acces 16 bits provoque un tfert 16 bits - //CS_OFF; +void LCD_Write_Command(uint8_t Command) { + CMD + ; +//CS_ON; + while ((SPI1->SR & SPI_SR_TXE) != 0);// Waiting for TX register to be available. + *(uint8_t*) (SPI1_DR_ADR) = Command;// Cast sur pointeur, pour ecriture 8 bits. Sinon l'acces 16 bits provoque un tfert 16 bits +//while ((SPI1->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame (cf RM P1289) +//CS_OFF; } /* Send Data (char) to LCD via SPI bus */ -void LCD_Write_Data(uint8_t Data) -{ - DATA; //Ligne de data a '1' - CS_ON; - *(uint8_t *)(SPI1_DR_ADR) = Data; - while ((SPI1->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame (cf RM P1289) - CS_OFF; +void LCD_Write_Data(uint8_t Data) { + DATA + ; +//CS_ON; + while ((SPI1->SR & SPI_SR_TXE) != 0);// Waiting for TX register to be available. + *(uint8_t*) (SPI1_DR_ADR) = Data; +//while ((SPI1->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame (cf RM P1289) +//CS_OFF; } -/* Set Address - Location block - to draw into */ -void LCD_Set_Address(uint16_t X1, uint16_t Y1, uint16_t X2, uint16_t Y2) -{ -LCD_Write_Command(0x2A); -LCD_Write_Data(X1>>8); -LCD_Write_Data(X1); -LCD_Write_Data(X2>>8); -LCD_Write_Data(X2); +/* 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_Data(X1 >> 8); + LCD_Write_Data(X1); + LCD_Write_Data(X2 >> 8); + LCD_Write_Data(X2); -LCD_Write_Command(0x2B); -LCD_Write_Data(Y1>>8); -LCD_Write_Data(Y1); -LCD_Write_Data(Y2>>8); -LCD_Write_Data(Y2); + LCD_Write_Command(0x2B); + LCD_Write_Data(Y1 >> 8); + LCD_Write_Data(Y1); + LCD_Write_Data(Y2 >> 8); + LCD_Write_Data(Y2); -LCD_Write_Command(0x2C); + LCD_Write_Command(0x2C); } /*HARDWARE RESET*/ @@ -119,217 +115,210 @@ LCD_Write_Command(0x2C); // HAL_Delay(200); // HAL_GPIO_WritePin(LCD_RST_PORT, LCD_RST_PIN, GPIO_PIN_SET); // } - /*Ser rotation of the screen - changes x0 and y0*/ -void LCD_Set_Rotation(uint8_t Rotation) -{ - -uint8_t screen_rotation = Rotation; +void LCD_Set_Rotation(uint8_t Rotation) { -LCD_Write_Command(0x36); -for(volatile uint32_t i=0;i>8; // pour le tfert dans DR en 1 seul write mais - bufColour |= Colour<<8; // en mode 8 bits, il faut inverser les octets MSB/LSB - DATA; - CS_ON; - for(uint32_t j=0;jSR & SPI_SR_TXE) == 0); //Si FIFO full (TX buffer Empty=0), on attend - SPI3->DR = bufColour; - } - while ((SPI3->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame - CS_OFF; +void LCD_Draw_Colour_Burst(uint16_t Colour, uint32_t Size) { + short bufColour; +// On envoie la même couleur sur Size pixels + bufColour = Colour >> 8;// pour le tfert dans DR en 1 seul write mais + bufColour |= Colour << 8;// en mode 8 bits, il faut inverser les octets MSB/LSB + DATA + ; + CS_ON; + for (uint32_t j = 0; j < Size; j++) { + while ((SPI3->SR & SPI_SR_TXE) == 0);//Si FIFO full (TX buffer Empty=0), on attend + SPI3->DR = bufColour; + } + while ((SPI3->SR & SPI_SR_BSY) != 0);//Attendre fin envoi trame + CS_OFF; } //FILL THE ENTIRE SCREEN WITH SELECTED COLOUR (either #define-d ones or custom 16bit) /*Sets address (entire screen) and Sends Height*Width ammount of colour information to LCD*/ -void LCD_Fill_Screen(uint16_t Colour) -{ - LCD_Set_Address(0,0,LCD_WIDTH,LCD_HEIGHT); - LCD_Draw_Colour_Burst(Colour, LCD_WIDTH*LCD_HEIGHT); +void LCD_Fill_Screen(uint16_t Colour) { + LCD_Set_Address(0, 0, LCD_WIDTH, LCD_HEIGHT); + LCD_Draw_Colour_Burst(Colour, LCD_WIDTH * LCD_HEIGHT); } //DRAW PIXEL AT XY POSITION WITH SELECTED COLOUR @@ -338,45 +327,44 @@ void LCD_Fill_Screen(uint16_t Colour) //Using pixels to draw big simple structures is not recommended as it is really slow //Try using either rectangles or lines if possible // -void LCD_Draw_Pixel(uint16_t X,uint16_t Y,uint16_t Colour) -{ - if((X >=LCD_WIDTH) || (Y >=LCD_HEIGHT)) return; //OUT OF BOUNDS! +void LCD_Draw_Pixel(uint16_t X, uint16_t Y, uint16_t Colour) { + if ((X >= LCD_WIDTH) || (Y >= LCD_HEIGHT)) return;//OUT OF BOUNDS! - //ADDRESS - LCD_Write_Command(0x2A); +//ADDRESS + LCD_Write_Command(0x2A); - //XDATA - DATA; - CS_ON; - SPI3->DR = (X>>8) | (X<<8); //inversion MSB / LSB pour envoi des 2 mots 8 bits en 1W 16bits - //Pas d'att si FIFO full (TX buffer Empty=0) car juste 2 écriture 16 bits tiennent dans FIFO - SPI3->DR = ((X+1)>>8) | ((X+1)<<8); - while ((SPI3->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame - CS_OFF; +//XDATA + DATA + ; + CS_ON; + SPI3->DR = (X >> 8) | (X << 8);//inversion MSB / LSB pour envoi des 2 mots 8 bits en 1W 16bits +//Pas d'att si FIFO full (TX buffer Empty=0) car juste 2 écriture 16 bits tiennent dans FIFO + SPI3->DR = ((X + 1) >> 8) | ((X + 1) << 8); + while ((SPI3->SR & SPI_SR_BSY) != 0);//Attendre fin envoi trame + CS_OFF; +//ADDRESS + LCD_Write_Command(0x2B); - //ADDRESS - LCD_Write_Command(0x2B); +//YDATA + DATA + ; + CS_ON; + SPI3->DR = (Y >> 8) | (Y << 8); + SPI3->DR = ((Y + 1) >> 8) | ((Y + 1) << 8); + while ((SPI3->SR & SPI_SR_BSY) != 0);//Attendre fin envoi trame + CS_OFF; - //YDATA - DATA; - CS_ON; - SPI3->DR = (Y>>8) | (Y<<8); - SPI3->DR = ((Y+1)>>8) | ((Y+1)<<8); - while ((SPI3->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame - CS_OFF; +//ADDRESS + LCD_Write_Command(0x2C); - - - //ADDRESS - LCD_Write_Command(0x2C); - - //COLOUR - DATA; - CS_ON; - SPI3->DR = (Colour>>8) | (Colour<<8); - while ((SPI3->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame - CS_OFF; +//COLOUR + DATA + ; + CS_ON; + SPI3->DR = (Colour >> 8) | (Colour << 8); + while ((SPI3->SR & SPI_SR_BSY) != 0);//Attendre fin envoi trame + CS_OFF; } //DRAW RECTANGLE OF SET SIZE AND HEIGTH AT X and Y POSITION WITH CUSTOM COLOUR @@ -385,327 +373,333 @@ void LCD_Draw_Pixel(uint16_t X,uint16_t Y,uint16_t Colour) //As with all other draw calls x0 and y0 locations dependant on screen orientation // -void LCD_Draw_Rectangle(uint16_t X, uint16_t Y, uint16_t Width, uint16_t Height, uint16_t Colour) -{ -if((X >=LCD_WIDTH) || (Y >=LCD_HEIGHT)) return; -if((X+Width-1)>=LCD_WIDTH) - { - Width=LCD_WIDTH-X; - } -if((Y+Height-1)>=LCD_HEIGHT) - { - Height=LCD_HEIGHT-Y; - } -LCD_Set_Address(X, Y, X+Width-1, Y+Height-1); -LCD_Draw_Colour_Burst(Colour, Height*Width); +void LCD_Draw_Rectangle( + uint16_t X, + uint16_t Y, + uint16_t Width, + uint16_t Height, + uint16_t Colour) { + if ((X >= LCD_WIDTH) || (Y >= LCD_HEIGHT)) return; + if ((X + Width - 1) >= LCD_WIDTH) { + Width = LCD_WIDTH - X; + } + if ((Y + Height - 1) >= LCD_HEIGHT) { + Height = LCD_HEIGHT - Y; + } + LCD_Set_Address(X, Y, X + Width - 1, Y + Height - 1); + LCD_Draw_Colour_Burst(Colour, Height * Width); } //DRAW LINE FROM X,Y LOCATION to X+Width,Y LOCATION -void LCD_Draw_Horizontal_Line(uint16_t X, uint16_t Y, uint16_t Width, uint16_t Colour) -{ -if((X >=LCD_WIDTH) || (Y >=LCD_HEIGHT)) return; -if((X+Width-1)>=LCD_WIDTH) - { - Width=LCD_WIDTH-X; - } -LCD_Set_Address(X, Y, X+Width-1, Y); -LCD_Draw_Colour_Burst(Colour, Width); +void LCD_Draw_Horizontal_Line( + uint16_t X, + uint16_t Y, + uint16_t Width, + uint16_t Colour) { + if ((X >= LCD_WIDTH) || (Y >= LCD_HEIGHT)) return; + if ((X + Width - 1) >= LCD_WIDTH) { + Width = LCD_WIDTH - X; + } + LCD_Set_Address(X, Y, X + Width - 1, Y); + LCD_Draw_Colour_Burst(Colour, Width); } //DRAW LINE FROM X,Y LOCATION to X,Y+Height LOCATION -void LCD_Draw_Vertical_Line(uint16_t X, uint16_t Y, uint16_t Height, uint16_t Colour) -{ -if((X >=LCD_WIDTH) || (Y >=LCD_HEIGHT)) return; -if((Y+Height-1)>=LCD_HEIGHT) - { - Height=LCD_HEIGHT-Y; - } -LCD_Set_Address(X, Y, X, Y+Height-1); -LCD_Draw_Colour_Burst(Colour, Height); +void LCD_Draw_Vertical_Line( + uint16_t X, + uint16_t Y, + uint16_t Height, + uint16_t Colour) { + if ((X >= LCD_WIDTH) || (Y >= LCD_HEIGHT)) return; + if ((Y + Height - 1) >= LCD_HEIGHT) { + Height = LCD_HEIGHT - Y; + } + LCD_Set_Address(X, Y, X, Y + Height - 1); + LCD_Draw_Colour_Burst(Colour, Height); } /*********************Partie de la Lib issue de LCD_GFX**************************/ /*Draw hollow circle at X,Y location with specified radius and colour. X and Y represent circles center */ -void LCD_Draw_Hollow_Circle(uint16_t X, uint16_t Y, uint16_t Radius, uint16_t Colour) -{ - int x = Radius-1; - int y = 0; - int dx = 1; - int dy = 1; - int err = dx - (Radius << 1); +void LCD_Draw_Hollow_Circle( + uint16_t X, + uint16_t Y, + uint16_t Radius, + uint16_t Colour) { + int x = Radius - 1; + int y = 0; + int dx = 1; + int dy = 1; + int err = dx - (Radius << 1); - while (x >= y) - { - LCD_Draw_Pixel(X + x, Y + y, Colour); - LCD_Draw_Pixel(X + y, Y + x, Colour); - LCD_Draw_Pixel(X - y, Y + x, Colour); - LCD_Draw_Pixel(X - x, Y + y, Colour); - LCD_Draw_Pixel(X - x, Y - y, Colour); - LCD_Draw_Pixel(X - y, Y - x, Colour); - LCD_Draw_Pixel(X + y, Y - x, Colour); - LCD_Draw_Pixel(X + x, Y - y, Colour); + while (x >= y) { + LCD_Draw_Pixel(X + x, Y + y, Colour); + LCD_Draw_Pixel(X + y, Y + x, Colour); + LCD_Draw_Pixel(X - y, Y + x, Colour); + LCD_Draw_Pixel(X - x, Y + y, Colour); + LCD_Draw_Pixel(X - x, Y - y, Colour); + LCD_Draw_Pixel(X - y, Y - x, Colour); + LCD_Draw_Pixel(X + y, Y - x, Colour); + LCD_Draw_Pixel(X + x, Y - y, Colour); - if (err <= 0) - { - y++; - err += dy; - dy += 2; - } - if (err > 0) - { - x--; - dx += 2; - err += (-Radius << 1) + dx; - } + if (err <= 0) { + y++; + err += dy; + dy += 2; } + if (err > 0) { + x--; + dx += 2; + err += (-Radius << 1) + dx; + } + } } /*Draw filled circle at X,Y location with specified radius and colour. X and Y represent circles center */ -void LCD_Draw_Filled_Circle(uint16_t X, uint16_t Y, uint16_t Radius, uint16_t Colour) -{ +void LCD_Draw_Filled_Circle( + uint16_t X, + uint16_t Y, + uint16_t Radius, + uint16_t Colour) { - int x = Radius; - int y = 0; - int xChange = 1 - (Radius << 1); - int yChange = 0; - int radiusError = 0; + int x = Radius; + int y = 0; + int xChange = 1 - (Radius << 1); + int yChange = 0; + int radiusError = 0; - while (x >= y) - { - for (int i = X - x; i <= X + x; i++) - { - LCD_Draw_Pixel(i, Y + y,Colour); - LCD_Draw_Pixel(i, Y - y,Colour); - } - for (int i = X - y; i <= X + y; i++) - { - LCD_Draw_Pixel(i, Y + x,Colour); - LCD_Draw_Pixel(i, Y - x,Colour); - } - - y++; - radiusError += yChange; - yChange += 2; - if (((radiusError << 1) + xChange) > 0) - { - x--; - radiusError += xChange; - xChange += 2; - } + while (x >= y) { + for (int i = X - x; i <= X + x; i++) { + LCD_Draw_Pixel(i, Y + y, Colour); + LCD_Draw_Pixel(i, Y - y, Colour); } - //Really slow implementation, will require future overhaul - //TODO: https://stackoverflow.com/questions/1201200/fast-algorithm-for-drawing-filled-circles + for (int i = X - y; i <= X + y; i++) { + LCD_Draw_Pixel(i, Y + x, Colour); + LCD_Draw_Pixel(i, Y - x, Colour); + } + + y++; + radiusError += yChange; + yChange += 2; + if (((radiusError << 1) + xChange) > 0) { + x--; + radiusError += xChange; + xChange += 2; + } + } +//Really slow implementation, will require future overhaul +//TODO: https://stackoverflow.com/questions/1201200/fast-algorithm-for-drawing-filled-circles } /*Draw a hollow rectangle between positions X0,Y0 and X1,Y1 with specified colour*/ -void LCD_Draw_Hollow_Rectangle_Coord(uint16_t X0, uint16_t Y0, uint16_t X1, uint16_t Y1, uint16_t Colour) -{ - uint16_t X_length = 0; - uint16_t Y_length = 0; - uint8_t Negative_X = 0; - uint8_t Negative_Y = 0; - float Calc_Negative = 0; +void LCD_Draw_Hollow_Rectangle_Coord( + uint16_t X0, + uint16_t Y0, + uint16_t X1, + uint16_t Y1, + uint16_t Colour) { + uint16_t X_length = 0; + uint16_t Y_length = 0; + uint8_t Negative_X = 0; + uint8_t Negative_Y = 0; + float Calc_Negative = 0; - Calc_Negative = X1 - X0; - if(Calc_Negative < 0) Negative_X = 1; - Calc_Negative = 0; + Calc_Negative = X1 - X0; + if (Calc_Negative < 0) Negative_X = 1; + Calc_Negative = 0; - Calc_Negative = Y1 - Y0; - if(Calc_Negative < 0) Negative_Y = 1; + Calc_Negative = Y1 - Y0; + if (Calc_Negative < 0) Negative_Y = 1; +//DRAW HORIZONTAL! + if (!Negative_X) { + X_length = X1 - X0; + } else { + X_length = X0 - X1; + } + LCD_Draw_Horizontal_Line(X0, Y0, X_length, Colour); + LCD_Draw_Horizontal_Line(X0, Y1, X_length, Colour); - //DRAW HORIZONTAL! - if(!Negative_X) - { - X_length = X1 - X0; - } - else - { - X_length = X0 - X1; - } - LCD_Draw_Horizontal_Line(X0, Y0, X_length, Colour); - LCD_Draw_Horizontal_Line(X0, Y1, X_length, Colour); +//DRAW VERTICAL! + if (!Negative_Y) { + Y_length = Y1 - Y0; + } else { + Y_length = Y0 - Y1; + } + LCD_Draw_Vertical_Line(X0, Y0, Y_length, Colour); + LCD_Draw_Vertical_Line(X1, Y0, Y_length, Colour); - - - //DRAW VERTICAL! - if(!Negative_Y) - { - Y_length = Y1 - Y0; - } - else - { - Y_length = Y0 - Y1; - } - LCD_Draw_Vertical_Line(X0, Y0, Y_length, Colour); - LCD_Draw_Vertical_Line(X1, Y0, Y_length, Colour); - - if((X_length > 0)||(Y_length > 0)) - { - LCD_Draw_Pixel(X1, Y1, Colour); - } + if ((X_length > 0) || (Y_length > 0)) { + LCD_Draw_Pixel(X1, Y1, Colour); + } } /*Draw a filled rectangle between positions X0,Y0 and X1,Y1 with specified colour*/ -void LCD_Draw_Filled_Rectangle_Coord(uint16_t X0, uint16_t Y0, uint16_t X1, uint16_t Y1, uint16_t Colour) -{ - uint16_t X_length = 0; - uint16_t Y_length = 0; - uint8_t Negative_X = 0; - uint8_t Negative_Y = 0; - int32_t Calc_Negative = 0; +void LCD_Draw_Filled_Rectangle_Coord( + uint16_t X0, + uint16_t Y0, + uint16_t X1, + uint16_t Y1, + uint16_t Colour) { + uint16_t X_length = 0; + uint16_t Y_length = 0; + uint8_t Negative_X = 0; + uint8_t Negative_Y = 0; + int32_t Calc_Negative = 0; - uint16_t X0_true = 0; - uint16_t Y0_true = 0; + uint16_t X0_true = 0; + uint16_t Y0_true = 0; - Calc_Negative = X1 - X0; - if(Calc_Negative < 0) Negative_X = 1; - Calc_Negative = 0; + Calc_Negative = X1 - X0; + if (Calc_Negative < 0) Negative_X = 1; + Calc_Negative = 0; - Calc_Negative = Y1 - Y0; - if(Calc_Negative < 0) Negative_Y = 1; + Calc_Negative = Y1 - Y0; + if (Calc_Negative < 0) Negative_Y = 1; +//DRAW HORIZONTAL! + if (!Negative_X) { + X_length = X1 - X0; + X0_true = X0; + } else { + X_length = X0 - X1; + X0_true = X1; + } - //DRAW HORIZONTAL! - if(!Negative_X) - { - X_length = X1 - X0; - X0_true = X0; - } - else - { - X_length = X0 - X1; - X0_true = X1; - } +//DRAW VERTICAL! + if (!Negative_Y) { + Y_length = Y1 - Y0; + Y0_true = Y0; + } else { + Y_length = Y0 - Y1; + Y0_true = Y1; + } - //DRAW VERTICAL! - if(!Negative_Y) - { - Y_length = Y1 - Y0; - Y0_true = Y0; - } - else - { - Y_length = Y0 - Y1; - Y0_true = Y1; - } - - LCD_Draw_Rectangle(X0_true, Y0_true, X_length, Y_length, Colour); + LCD_Draw_Rectangle(X0_true, Y0_true, X_length, Y_length, Colour); } /*Draws a character (fonts imported from fonts.h) at X,Y location with specified font colour, size and Background colour*/ /*See fonts.h implementation of font on what is required for changing to a different font when switching fonts libraries*/ -void LCD_Draw_Char(char Character, uint16_t X, uint16_t Y, uint16_t Colour, uint16_t Size, uint16_t Background_Colour) -{ - uint8_t function_char; - uint8_t i,j; +void LCD_Draw_Char( + char Character, + uint16_t X, + uint16_t Y, + uint16_t Colour, + uint16_t Size, + uint16_t Background_Colour) { + uint8_t function_char; + uint8_t i, j; - function_char = Character; + function_char = Character; - if (function_char < ' ') { - Character = 0; - } else { - function_char -= 32; - } + if (function_char < ' ') { + Character = 0; + } else { + function_char -= 32; + } - char temp[CHAR_WIDTH]; - for(uint8_t k = 0; kSR & SPI_SR_TXE) == 0); //Si FIFO full (TX buffer Empty=0), on attend - // on utilise l'ecriture 16 bits dans DR, pour des envois 8 bits - // Le LSB doit etre place ds le MSB : - SPI3->DR = ((short)Image_Array[i+1])<<8 | Image_Array[i]; - } + for (uint32_t i = 0; i < Width * Height * 2; i += 2) { + while ((SPI3->SR & SPI_SR_TXE) == 0);//Si FIFO full (TX buffer Empty=0), on attend +// on utilise l'ecriture 16 bits dans DR, pour des envois 8 bits +// Le LSB doit etre place ds le MSB : + SPI3->DR = ((short) Image_Array[i + 1]) << 8 | Image_Array[i]; + } - while ((SPI3->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame - CS_OFF; + while ((SPI3->SR & SPI_SR_BSY) != 0);//Attendre fin envoi trame + CS_OFF; } /*Draws a full screen picture from flash. Image converted from RGB .jpeg/other to C array using online converter*/ //USING CONVERTER: http://www.digole.com/tools/PicturetoC_Hex_converter.php //65K colour (2Bytes / Pixel) -void LCD_Draw_Image_Full(const char* Image_Array, uint8_t Orientation) -{ - switch(Orientation) - { - case SCREEN_HORIZONTAL_1 : - LCD_Set_Rotation(SCREEN_HORIZONTAL_1); - LCD_Set_Address(0,0,LCD_SCREEN_WIDTH,LCD_SCREEN_HEIGHT); - break; +void LCD_Draw_Image_Full(const char *Image_Array, uint8_t Orientation) { + switch (Orientation) { + case SCREEN_HORIZONTAL_1: + LCD_Set_Rotation(SCREEN_HORIZONTAL_1); + LCD_Set_Address(0, 0, LCD_SCREEN_WIDTH, LCD_SCREEN_HEIGHT); + break; - case SCREEN_HORIZONTAL_2 : - LCD_Set_Rotation(SCREEN_HORIZONTAL_2); - LCD_Set_Address(0,0,LCD_SCREEN_WIDTH,LCD_SCREEN_HEIGHT); - break; + case SCREEN_HORIZONTAL_2: + LCD_Set_Rotation(SCREEN_HORIZONTAL_2); + LCD_Set_Address(0, 0, LCD_SCREEN_WIDTH, LCD_SCREEN_HEIGHT); + break; - case SCREEN_VERTICAL_1 : - LCD_Set_Rotation(SCREEN_VERTICAL_1); - LCD_Set_Address(0,0,LCD_SCREEN_HEIGHT,LCD_SCREEN_WIDTH); - break; + case SCREEN_VERTICAL_1: + LCD_Set_Rotation(SCREEN_VERTICAL_1); + LCD_Set_Address(0, 0, LCD_SCREEN_HEIGHT, LCD_SCREEN_WIDTH); + break; - case SCREEN_VERTICAL_2 : - LCD_Set_Rotation(SCREEN_VERTICAL_2); - LCD_Set_Address(0,0,LCD_SCREEN_HEIGHT,LCD_SCREEN_WIDTH); - break; - } + case SCREEN_VERTICAL_2: + LCD_Set_Rotation(SCREEN_VERTICAL_2); + LCD_Set_Address(0, 0, LCD_SCREEN_HEIGHT, LCD_SCREEN_WIDTH); + break; + } - DATA; - CS_ON; + DATA + ; + CS_ON; - for(uint32_t i = 0; i < LCD_SCREEN_WIDTH*LCD_SCREEN_HEIGHT*2; i+=2) - { - while((SPI3->SR & SPI_SR_TXE) == 0); //Si FIFO full (TX buffer Empty=0), on attend - // on utilise l'ecriture 16 bits dans DR, pour des envois 8 bits - // Le LSB doit etre place ds le MSB : - SPI3->DR = ((short)Image_Array[i+1])<<8 | Image_Array[i]; - } + for (uint32_t i = 0; i < LCD_SCREEN_WIDTH * LCD_SCREEN_HEIGHT * 2; i += 2) { + while ((SPI3->SR & SPI_SR_TXE) == 0);//Si FIFO full (TX buffer Empty=0), on attend +// on utilise l'ecriture 16 bits dans DR, pour des envois 8 bits +// Le LSB doit etre place ds le MSB : + SPI3->DR = ((short) Image_Array[i + 1]) << 8 | Image_Array[i]; + } - while ((SPI3->SR & SPI_SR_BSY) != 0); //Attendre fin envoi trame - CS_OFF; + while ((SPI3->SR & SPI_SR_BSY) != 0);//Attendre fin envoi trame + CS_OFF; } diff --git a/Core/Src/main.c b/Core/Src/main.c index 3d09f06..d32660e 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -1,21 +1,21 @@ -/* USER CODE BEGIN Header */ +/* USER CODE BEGIN */ /** - ****************************************************************************** - * @file : main.c - * @brief : Main program body - ****************************************************************************** - * @attention - * - * Copyright (c) 2025 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ -/* USER CODE END Header */ + ****************************************************************************** + * @file : main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2025 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END */ /* Includes ------------------------------------------------------------------*/ #include "main.h" #include "LCD_driver.h" @@ -23,47 +23,47 @@ #include "LogoIUT.h" /* Private includes ----------------------------------------------------------*/ -/* USER CODE BEGIN Includes */ +/* USER CODE BEGIN */ -/* USER CODE END Includes */ +/* USER CODE END */ /* Private typedef -----------------------------------------------------------*/ -/* USER CODE BEGIN PTD */ +/* USER CODE BEGIN */ -/* USER CODE END PTD */ +/* USER CODE END */ /* Private define ------------------------------------------------------------*/ -/* USER CODE BEGIN PD */ +/* USER CODE BEGIN */ -/* USER CODE END PD */ +/* USER CODE END */ /* Private macro -------------------------------------------------------------*/ -/* USER CODE BEGIN PM */ +/* USER CODE BEGIN */ -/* USER CODE END PM */ +/* USER CODE END */ /* Private variables ---------------------------------------------------------*/ SPI_HandleTypeDef hspi1; UART_HandleTypeDef huart1; -/* USER CODE BEGIN PV */ +/* USER CODE BEGIN */ -/* USER CODE END PV */ +/* USER CODE END */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_SPI1_Init(void); static void MX_USART1_UART_Init(void); -/* USER CODE BEGIN PFP */ +/* USER CODE BEGIN */ -/* USER CODE END PFP */ +/* USER CODE END */ /* Private user code ---------------------------------------------------------*/ -/* USER CODE BEGIN 0 */ +/* USER CODE BEGIN */ -/* USER CODE END 0 */ +/* USER CODE END */ /** * @brief The application entry point. @@ -72,47 +72,48 @@ static void MX_USART1_UART_Init(void); int main(void) { - /* USER CODE BEGIN 1 */ +/* USER CODE BEGIN */ - /* USER CODE END 1 */ +/* USER CODE END */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); - /* USER CODE BEGIN Init */ +/* USER CODE BEGIN */ - /* USER CODE END Init */ +/* USER CODE END */ /* Configure the system clock */ SystemClock_Config(); - /* USER CODE BEGIN SysInit */ - - /* USER CODE END SysInit */ +/* USER CODE BEGIN */ +/* USER CODE END */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_SPI1_Init(); MX_USART1_UART_Init(); - /* USER CODE BEGIN 2 */ + /* USER CODE BEGIN */ - /* USER CODE END 2 */ + LCD_Init(); + LCD_Fill_Screen(PURPLE); + + /* USER CODE END */ /* Infinite loop */ - /* USER CODE BEGIN WHILE */ + /* USER CODE BEGIN */ - while (1) - { + while (1) { - /* USER CODE END WHILE */ + /* USER CODE END */ - /* USER CODE BEGIN 3 */ + /* USER CODE BEGIN */ } - /* USER CODE END 3 */ + /* USER CODE END */ } /** @@ -161,13 +162,13 @@ void SystemClock_Config(void) static void MX_SPI1_Init(void) { - /* USER CODE BEGIN SPI1_Init 0 */ + /* USER CODE BEGIN */ - /* USER CODE END SPI1_Init 0 */ + /* USER CODE END */ - /* USER CODE BEGIN SPI1_Init 1 */ + /* USER CODE BEGIN */ - /* USER CODE END SPI1_Init 1 */ + /* USER CODE END */ /* SPI1 parameter configuration*/ hspi1.Instance = SPI1; hspi1.Init.Mode = SPI_MODE_MASTER; @@ -185,9 +186,9 @@ static void MX_SPI1_Init(void) { Error_Handler(); } - /* USER CODE BEGIN SPI1_Init 2 */ + /* USER CODE BEGIN */ - /* USER CODE END SPI1_Init 2 */ + /* USER CODE END */ } @@ -199,13 +200,13 @@ static void MX_SPI1_Init(void) static void MX_USART1_UART_Init(void) { - /* USER CODE BEGIN USART1_Init 0 */ + /* USER CODE BEGIN */ - /* USER CODE END USART1_Init 0 */ + /* USER CODE END */ - /* USER CODE BEGIN USART1_Init 1 */ + /* USER CODE BEGIN */ - /* USER CODE END USART1_Init 1 */ + /* USER CODE END */ huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; @@ -218,9 +219,9 @@ static void MX_USART1_UART_Init(void) { Error_Handler(); } - /* USER CODE BEGIN USART1_Init 2 */ + /* USER CODE BEGIN */ - /* USER CODE END USART1_Init 2 */ + /* USER CODE END */ } @@ -232,9 +233,9 @@ static void MX_USART1_UART_Init(void) static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct = {0}; - /* USER CODE BEGIN MX_GPIO_Init_1 */ + /* USER CODE BEGIN */ - /* USER CODE END MX_GPIO_Init_1 */ + /* USER CODE END */ /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOC_CLK_ENABLE(); @@ -319,14 +320,14 @@ static void MX_GPIO_Init(void) /*Configure peripheral I/O remapping */ __HAL_AFIO_REMAP_PD01_ENABLE(); - /* USER CODE BEGIN MX_GPIO_Init_2 */ + /* USER CODE BEGIN */ - /* USER CODE END MX_GPIO_Init_2 */ + /* USER CODE END */ } -/* USER CODE BEGIN 4 */ + /* USER CODE BEGIN */ -/* USER CODE END 4 */ + /* USER CODE END */ /** * @brief This function is executed in case of error occurrence. @@ -334,13 +335,12 @@ static void MX_GPIO_Init(void) */ void Error_Handler(void) { - /* USER CODE BEGIN Error_Handler_Debug */ + /* USER CODE BEGIN */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); - while (1) - { + while (1) { } - /* USER CODE END Error_Handler_Debug */ + /* USER CODE END */ } #ifdef USE_FULL_ASSERT /** @@ -350,11 +350,11 @@ void Error_Handler(void) * @param line: assert_param error line source number * @retval None */ -void assert_failed(uint8_t *file, uint32_t line) +void assert_failed( uint8_t * file , uint32_t line) { - /* USER CODE BEGIN 6 */ +/* USER CODE BEGIN */ /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ - /* USER CODE END 6 */ +/* USER CODE END */ } #endif /* USE_FULL_ASSERT */