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 */