test batterie pas convaiquant

This commit is contained in:
leo 2025-11-26 23:36:40 +01:00
parent 0c1e39ffd6
commit d452faf402
4 changed files with 19 additions and 9 deletions

View file

@ -7,27 +7,34 @@
float d; float d;
short v; short v;
int p; int p;
char test;
void MyBatterie_Init(void){ void MyBatterie_Init(void){
MyGPIO_Init(GPIOC,4,In_Analog); // Init PORT pour recevoir tension MyGPIO_Init(GPIOC,4,In_Analog); // Init PORT pour recevoir tension
MyGPIO_Init(GPIOA,2,AltOut_Ppull); // Init PORT UART2 TX pour envoyer pourcentage batterie
MyGPIO_Init(GPIOA,3,In_Floating);
MyADC_Init(ADC1,14); // Init ADC channel 14 pour convertir valeur MyADC_Init(ADC1,14); // Init ADC channel 14 pour convertir valeur
MyADC_ActiveIT(ADC1,15,&handler_ADC); // Init interruption quand conversion finie MyADC_ActiveIT(ADC1,15,&handler_ADC); // Init interruption quand conversion finie
My_USART_Init(USART2); // Init USART pour envoyer batterie My_USART_Init(USART2); // Init USART pour envoyer batterie
My_USART_Init(USART1);
MyUSART_ActiveIT(USART1,10,&handler);
start_conversion(ADC1); // Premiere conversion start_conversion(ADC1); // Premiere conversion
} }
void handler_ADC (void){ void handler_ADC (void){
d = ADC1->DR &~ (0xF << 12); // Retourne valeur numérique d = 1044;//ADC1->DR &~ (0xF << 12); // Retourne valeur numérique
d = d*3.3/4096; d = d*3.3/4096;
d = d*13*100/12; d = d*13*100/12;
p = (int) d; p = (int) d;
send_USART(USART2,(p/10) + '0'); // Envoie le chiffre des dizaines send_USART(USART2,(p/10) + '0'); // Envoie le chiffre des dizaines
send_USART(USART2,(p%10) + '0'); // Envoie le chiffre des unités send_USART(USART2,(p%10) + '0'); // Envoie le chiffre des unités
send_USART(USART2,'%'); send_USART(USART2,'%');
start_conversion(ADC1); // Recommence la conversion pour le prochain //start_conversion(ADC1); // Recommence la conversion pour le prochain
}
void handler(void){
test = USART1->DR;
test = test + 1;
} }

View file

@ -3,5 +3,6 @@
void MyBatterie_Init(void); void MyBatterie_Init(void);
void handler_ADC(void); void handler_ADC(void);
void handler(void);
#endif #endif

View file

@ -9,11 +9,11 @@ void MySPI_Init(SPI_TypeDef * SPI){
// Initialisationdes PORTS IOs // Initialisationdes PORTS IOs
MyGPIO_Init(GPIOA,4,Out_Ppull); MyGPIO_Init(GPIOA,4,Out_Ppull);
MyGPIO_Init(GPIOA,5,AltOut_Ppull); MyGPIO_Init(GPIOA,5,AltOut_Ppull);
MyGPIO_Init(GPIOA,6,In_PullDown); MyGPIO_Init(GPIOA,6,In_Floating);
MyGPIO_Init(GPIOA,7,AltOut_Ppull); MyGPIO_Init(GPIOA,7,AltOut_Ppull);
} }
else if (SPI == SPI2) { else if (SPI == SPI2) {
RCC->APB2ENR |= RCC_APB1ENR_SPI2EN; RCC->APB1ENR |= RCC_APB1ENR_SPI2EN;
SPI->CR1 |= SPI_CR1_BR_1 | SPI_CR1_BR_2; SPI->CR1 |= SPI_CR1_BR_1 | SPI_CR1_BR_2;
MyGPIO_Init(GPIOB,12,Out_Ppull); MyGPIO_Init(GPIOB,12,Out_Ppull);
MyGPIO_Init(GPIOB,13,AltOut_Ppull); MyGPIO_Init(GPIOB,13,AltOut_Ppull);
@ -34,6 +34,7 @@ void MySPI_Send(char ByteToSend){
while (!(SPI1->SR & SPI_SR_TXE)){} // Attend que DR soit vide while (!(SPI1->SR & SPI_SR_TXE)){} // Attend que DR soit vide
SPI1->DR = ByteToSend; // On met notre donnée dans DR SPI1->DR = ByteToSend; // On met notre donnée dans DR
while (!(SPI1->SR & SPI_SR_RXNE)){} // Attente de réception du byte poubelle sur MISO while (!(SPI1->SR & SPI_SR_RXNE)){} // Attente de réception du byte poubelle sur MISO
while (SPI1->SR & SPI_SR_BSY){}
char poubelle = SPI1->DR; // Je pense qu'on pourrait clear RXNE a la place : SPI1->SR &=~ SPI_SR_RXNE char poubelle = SPI1->DR; // Je pense qu'on pourrait clear RXNE a la place : SPI1->SR &=~ SPI_SR_RXNE
} }
@ -41,6 +42,7 @@ char MySPI_Read(void){
while (!(SPI1->SR & SPI_SR_TXE)){} // Attend que DR soit vide while (!(SPI1->SR & SPI_SR_TXE)){} // Attend que DR soit vide
SPI1->DR = 0x00; // Pour trasmettre la clock SPI1->DR = 0x00; // Pour trasmettre la clock
while (!(SPI1->SR & SPI_SR_RXNE)) {} // On attend de recevoir dans buffer de reception le byte while (!(SPI1->SR & SPI_SR_RXNE)) {} // On attend de recevoir dans buffer de reception le byte
while (SPI1->SR & SPI_SR_BSY){}
return SPI1->DR; return SPI1->DR;
} }

View file

@ -27,15 +27,15 @@ void My_USART_Init(USART_TypeDef *USART){
} }
USART->CR1 |= USART_CR1_UE; // Activation de l'USART USART->CR1 |= USART_CR1_UE; // Activation de l'USART
USART->CR1 &= ~USART_CR1_M; // Choix d'une taille de 8 bits de données USART->CR1 &= ~USART_CR1_M; // Choix d'une taille de 8 bits de données
USART->CR2 &= USART_CR2_STOP; // Choix d'un seul bit de stop USART->CR2 &=~ USART_CR2_STOP; // Choix d'un seul bit de stop
USART->CR1 |= USART_CR1_TE; // Transmission validée USART->CR1 |= USART_CR1_TE; // Transmission validée
USART->CR1 |= USART_CR1_RE; // réception validée USART->CR1 |= USART_CR1_RE; // réception validée
} }
void send_USART(USART_TypeDef *USART, char data){ void send_USART(USART_TypeDef *USART, char data){
USART->DR |= data; // Ecriture de la donnée dans le registre DR USART->DR = data; // Ecriture de la donnée dans le registre DR
while(!(USART->SR & USART_SR_TXE)) {} // Attente de la fin de transmission while(!(USART->SR & USART_SR_TXE)) {} // Attente de la fin de transmission --TC ????? Inverser 2 lignes +TC a la fin
} }
char read_USART(USART_TypeDef *USART){ char read_USART(USART_TypeDef *USART){