//============================================================================================= int main(void) { init(); //system init DAC1_Config(); //DAC with DMA triggered from TIM6 while(1) { //get_adc_value(); } }
/** * @brief Main program. * @param None * @retval None */ int main(void) { float capacitanceratio; /* STM32F3xx HAL library initialization: - Configure the Flash prefetch - Systick timer is configured by default as source of time base, but user can eventually implement his proper time base source (a general purpose timer for example or other time source), keeping in mind that Time base duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and handled in milliseconds basis. - Set NVIC Group Priority to 4 - Low Level Initialization */ HAL_Init(); /* Configure the system clock to have a system clock = 72 Mhz */ SystemClock_Config(); /******* Initialize LEDs available on STM32303C-EVAL board ******************/ BSP_LED_Init(LED1); BSP_LED_Init(LED2); BSP_LED_Init(LED3); BSP_LED_Init(LED4); /*##-1- Initialize the Key and Joystick ####################################*/ BSP_PB_Init(BUTTON_KEY, BUTTON_MODE_GPIO); BSP_JOY_Init(JOY_MODE_GPIO); /*##-2- Initialize the LCD #################################################*/ /* Initialize the LCD */ BSP_LCD_Init(); /*##-3- Display messages on LCD ############################################*/ /* Display Example Welcome message */ Display_ExampleDescription(); /* Wait For User inputs */ while (1) { if (BSP_PB_GetState(BUTTON_KEY) == RESET) { while (BSP_PB_GetState(BUTTON_KEY) == RESET); break; } } /* Display Example Template */ HYGROMETER_SetHint(); /*##-4- Configure DAC1 #####################################################*/ /* configure DAC1 */ DAC1_Config(); /*##-5- Configure Comparators ##############################################*/ /* configure COMP4 */ COMP4_Config(); /*##-6- Configure Timers ###################################################*/ TIM3_Config(); TIM4_Config(); /*##-7- Start Example ######################################################*/ /* wait until first AvrgICReadValue is calculated */ while(AvrgICReadValue == 0); /* Enter Calibration menu */ Calibration_Menu(); /* Infinite loop */ while (1) { /* Calculate Trigger Time Value */ TriggerTime = (float) (AvrgICReadValue-ICError)/SystemCoreClock; /* Comp4 inverted input connected to DAC1 : * TriggerTime = RES * Capacitance * ln(VDD/(VDD - VREF)) * @VREF = 2.086V (generated by DAC), ln(VDD/(VDD - VREF)) is ~ 1 * ==> Capacitance = TriggerTime/RES */ Capacitance = (float) TriggerTime/RES; /* Calculate humidity value using reversed polynomial expression */ capacitanceratio = Capacitance/Capacitance55RH; /* RH (%) = -3.4656*10^3 * X^3 + 1.0732*10^4 * X^2 - 1.0457*10^4*X + 3.2459*10^3 with X = C (read) / C@55%RH = capacitanceratio */ RelativeHumidity = RP3 * pow(capacitanceratio, 3) + RP2 * pow(capacitanceratio, 2) + RP1 * capacitanceratio + RP0; /* Restrict Relative Humidity Value to 0-99 Domain */ if (RelativeHumidity < 0) { RelativeHumidity = 0; } if (RelativeHumidity > 99) { RelativeHumidity = 99; } /* Display the humidity value */ Display_Humidity((uint32_t) RelativeHumidity); } }