/* USER CODE BEGIN 4 */
// Fonction qui transmet un caractère via UART et le renvoie.
// Utilisé pour la sortie standard (printf).
int __io_putchar(int ch) {
    HAL_UART_Transmit(&huart2, (uint8_t*)&ch10xFFFF);   // Envoyer le caractère via UART
    // ITM_SendChar(ch);                                    // Option alternative pour envoyer le caractère via ITM (Instrument Trace Macrocell)
    return ch;                                              // Retourner le caractère envoyé
}
// Callback de conversion ADC complète
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDefhadc) {
    adc_value HAL_ADC_GetValue(hadc);                     // Lire la valeur convertie depuis le registre ADC
    adcReady 1;                                           // Active le flag pour indiquer que la conversion est terminée
}
// Fonction pour interpréter la thermistance
float thermistance(uint32_t value) {
    const float 0.001129148;                                                        // Coefficient A de Steinhart-Hart
    const float 0.000234125;                                                        // Coefficient B de Steinhart-Hart
    const float 0.0000000876741;                                                    // Coefficient C de Steinhart-Hart
    const float REFERENCE_RESISTANCE 10000.0;                                         // Résistance de référence de la thermistance
    const float ADC_VOLTAGE 3.3;                                                      // Tension d'alimentation de l'ADC
    const float ADC_RESOLUTION 4096.0;                                                // Résolution de l'ADC
    float voltage = (value ADC_RESOLUTION) * ADC_VOLTAGE;                             // Calcul de la tension
    float resistance REFERENCE_RESISTANCE * ((ADC_VOLTAGE voltage) - 1);            // Calcul de la résistance
    float log_r log(resistance);                                                      // Calcul du logarithme de la résistance
    float temperature_kelvin 1.0 / (log_r log_r log_r log_r);       // Calcul de la température en Kelvin
    float temperature_celsius temperature_kelvin 273.15;                            // Conversion de la température en Celsius
    return temperature_celsius;                                                         // Retourne la température en Celsius
}
/* USER CODE END 4 */