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;
short v;
int p;
char test;
void MyBatterie_Init(void){
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_ActiveIT(ADC1,15,&handler_ADC); // Init interruption quand conversion finie
My_USART_Init(USART2); // Init USART pour envoyer batterie
My_USART_Init(USART1);
MyUSART_ActiveIT(USART1,10,&handler);
start_conversion(ADC1); // Premiere conversion
}
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*13*100/12;
p = (int) d;
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,'%');
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 handler_ADC(void);
void handler(void);
#endif

View file

@ -9,11 +9,11 @@ void MySPI_Init(SPI_TypeDef * SPI){
// Initialisationdes PORTS IOs
MyGPIO_Init(GPIOA,4,Out_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);
}
else if (SPI == SPI2) {
RCC->APB2ENR |= RCC_APB1ENR_SPI2EN;
RCC->APB1ENR |= RCC_APB1ENR_SPI2EN;
SPI->CR1 |= SPI_CR1_BR_1 | SPI_CR1_BR_2;
MyGPIO_Init(GPIOB,12,Out_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
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_BSY){}
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
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_BSY){}
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_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_RE; // réception validée
}
void send_USART(USART_TypeDef *USART, char data){
USART->DR |= data; // Ecriture de la donnée dans le registre DR
while(!(USART->SR & USART_SR_TXE)) {} // Attente de la fin de transmission
USART->DR = data; // Ecriture de la donnée dans le registre DR
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){