From a9d0437841c71da0fd00e8c5643137f103193b7f Mon Sep 17 00:00:00 2001 From: Cedric Date: Tue, 4 Apr 2023 15:17:52 +0200 Subject: [PATCH] UART : GPIO selection add --- Drivers/Include/Driver_UART.h | 3 +- Drivers/Sources/Driver_UART.c | 37 ++++++++++++++- GPIO_Test/GPIO_Test.uvoptx | 84 +++++++++++++++++------------------ GPIO_Test/Sources/Main.c | 27 +++-------- 4 files changed, 85 insertions(+), 66 deletions(-) diff --git a/Drivers/Include/Driver_UART.h b/Drivers/Include/Driver_UART.h index c296384..fc9e08a 100644 --- a/Drivers/Include/Driver_UART.h +++ b/Drivers/Include/Driver_UART.h @@ -14,8 +14,7 @@ void UART_init(MyUART_Struct_Typedef * UART); void USART1_IRQHandler(void); void USART2_IRQHandler(void); void USART3_IRQHandler(void); - - +void UART_InitGPIO(MyUART_Struct_Typedef * UART); diff --git a/Drivers/Sources/Driver_UART.c b/Drivers/Sources/Driver_UART.c index b76c540..3d98d55 100644 --- a/Drivers/Sources/Driver_UART.c +++ b/Drivers/Sources/Driver_UART.c @@ -1,4 +1,5 @@ #include "Driver_UART.h" +#include "Driver_GPIO.h" char received_data1, received_data2, received_data3; @@ -102,6 +103,40 @@ void UART_interruption (MyUART_Struct_Typedef * UART) { NVIC->ISER[1] |= (1<<(USART3_IRQn-32)); } - } +void UART_InitGPIO(MyUART_Struct_Typedef * UART) +{ + if(UART->UART == USART1) + { + MyUART_Struct_Typedef UART1 = {USART1,9600}; + MyGPIO_Struct_TypeDef PA9 = {GPIOA,9,AltOut_Ppull}; + MyGPIO_Struct_TypeDef PA10 = {GPIOA,10,In_PullUp}; + MyGPIO_Init (&PA9); + MyGPIO_Init (&PA10); + UART_init(&UART1); + } + else if(UART->UART == USART2) { + MyUART_Struct_Typedef UART2 = {USART2,9600}; + MyGPIO_Struct_TypeDef PA2 = {GPIOA,2,AltOut_Ppull}; + MyGPIO_Struct_TypeDef PA3 = {GPIOA,3,In_Floating}; + MyGPIO_Init (&PA2); + MyGPIO_Init (&PA3); + UART_init(&UART2); + } + else if(UART->UART == USART3) { + MyUART_Struct_Typedef UART3 = {USART3,9600}; + MyGPIO_Struct_TypeDef PA10 = {GPIOA,10,AltOut_Ppull}; + MyGPIO_Struct_TypeDef PA11 = {GPIOA,11,In_PullUp}; + MyGPIO_Init (&PA10); + MyGPIO_Init (&PA11); + UART_init(&UART3); + } + else { + return; + } + +} + + + diff --git a/GPIO_Test/GPIO_Test.uvoptx b/GPIO_Test/GPIO_Test.uvoptx index 4548a0d..6dd6ca4 100644 --- a/GPIO_Test/GPIO_Test.uvoptx +++ b/GPIO_Test/GPIO_Test.uvoptx @@ -125,7 +125,7 @@ 0 DLGDARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=865,485,1286,912,1)(121=-1,-1,-1,-1,0)(122=546,289,967,716,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=911,135,1505,886,0)(131=997,343,1591,1094,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=1131,175,1579,589,1)(161=1383,268,1831,682,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0) + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=-1,-1,-1,-1,0)(120=1357,482,1778,909,1)(121=-1,-1,-1,-1,0)(122=546,289,967,716,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=911,135,1505,886,0)(131=997,343,1591,1094,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=1345,64,1793,478,1)(161=1383,268,1831,682,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0) 0 @@ -147,56 +147,24 @@ 0 0 - 30 - 1 -
0
+ 38 + 0 +
134219492
0 0 0 0 0 - 0 - .\Sources\Main.c + 1 + U:\INSA\Microcontrôleur\Projet_Voilier_grp\Voilier\Drivers\Sources\Driver_UART.c - + \\GPIO_Test\../Drivers/Sources/Driver_UART.c\38
1 0 - 30 - 1 -
134219668
- 0 - 0 - 0 - 0 - 0 - 1 - U:\INSA\Microcontrôleur\Projet_Voilier_grp\Voilier\GPIO_Test\Sources\Main.c - - \\GPIO_Test\Sources/Main.c\30 -
- - 2 - 0 - 70 - 1 -
134219784
- 0 - 0 - 0 - 0 - 0 - 1 - U:\INSA\Microcontrôleur\Projet_Voilier_grp\Voilier\GPIO_Test\Sources\Main.c - - \\GPIO_Test\Sources/Main.c\70 -
- - 3 - 0 - 71 - 1 + 39 + 0
0
0 0 @@ -204,7 +172,39 @@ 0 0 0 - .\Sources\Main.c + ..\Drivers\Sources\Driver_UART.c + + +
+ + 2 + 0 + 54 + 0 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\Drivers\Sources\Driver_UART.c + + +
+ + 3 + 0 + 67 + 0 +
0
+ 0 + 0 + 0 + 0 + 0 + 0 + ..\Drivers\Sources\Driver_UART.c
diff --git a/GPIO_Test/Sources/Main.c b/GPIO_Test/Sources/Main.c index f0d3c98..8c2d4ba 100644 --- a/GPIO_Test/Sources/Main.c +++ b/GPIO_Test/Sources/Main.c @@ -10,26 +10,10 @@ int main (void){ //Déclaration d'une LED et d'un BP par structure GPIO MyGPIO_Struct_TypeDef LED; MyGPIO_Struct_TypeDef BP; - + MyUART_Struct_Typedef UART; //Déclaration d'un Timer 500 ms MyTimer_Struct_TypeDef TIM500ms; - //Déclaration de l'UART / - MyUART_Struct_Typedef UART1 = {USART1,9600}; - MyUART_Struct_Typedef UART2 = {USART2,9600}; - - //UART2 - //MyGPIO_Struct_TypeDef PA2 = {GPIOA,2,AltOut_Ppull}; - //MyGPIO_Struct_TypeDef PA3 = {GPIOA,3,In_PullUp}; - //UART1 - MyGPIO_Struct_TypeDef PA9 = {GPIOA,9,AltOut_Ppull}; - MyGPIO_Struct_TypeDef PA10 = {GPIOA,10,In_Floating}; - - - //MyGPIO_Init (&PA2); - //MyGPIO_Init (&PA3); - MyGPIO_Init (&PA9); - MyGPIO_Init (&PA10); //Config LED PA5 LED.GPIO_Conf = Out_Ppull; @@ -49,6 +33,9 @@ int main (void){ TIM500ms.ARR = 5000; MyTimer_Base_Init(&TIM500ms); + //InitUART + UART.UART = USART1; + /* TIM2->DIER |= 1<< 0 ; //INTERRUPTION PERIPH //TIM2->DIER |= TIM_DIER_UIE ; @@ -62,17 +49,15 @@ int main (void){ - UART_init(&UART1); - UART_init(&UART2); //NVIC_EnableIRQ(USART1_IRQn);// Activer les interruptions - + UART_InitGPIO(&UART); // Envoyer les données for (i = 0; i < len; i++) { UART_send(data[i]); } - UART_read(data[i], &UART1); + UART_read(data[i], &UART);