/** ****************************************************************************** * @file main.c * @author Ac6 * @version V1.0 * @date 01-December-2013 * @brief Default main function. * Awesome ADC fix start project here to be good awesome!! ****************************************************************************** */ #include "drivers/adc.h" #include "drivers/system_clock.h" #include "stm32f4xx.h" #include "stm32f4xx_revo.h" #include "system_variables.h" #include "utilities.h" #include /* Private function prototypes -----------------------------------------------*/ static void SystemClock_Config(void); static void Error_Handler(void); ADC_HandleTypeDef adc_testinput_handle; // For example battery voltage ADC_HandleTypeDef adc_test2input_handle; uint32_t g_ADCValue; uint32_t g_ADC2; int g_MeasurementNumber; int main(void) { // Initialize the Hardware Abstraction Layer HAL_Init(); /*##-2- Configure PA05 IO in output push-pull mode to drive external LED ###*/ //GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6; //GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; //GPIO_InitStruct.Pull = GPIO_PULLUP; //GPIO_InitStruct.Speed = GPIO_SPEED_FAST; HAL_GPIO_Init(GPIOA, &gpinit); // Configure the system clock to 100 MHz system_clock_config(); int i = 1; //Add ADC Channels adc_pin_add(ADC_CHANNEL_0); adc_pin_add(ADC_CHANNEL_1); adc_pin_add(ADC_CHANNEL_12); //Configure the ADCs adc_configure(); /* This is done in system_clock_config for all GPIO clocks */ //__GPIOB_CLK_ENABLE(); GPIO_InitTypeDef gpinit; gpinit.Pin = GPIO_PIN_5; gpinit.Mode = GPIO_MODE_OUTPUT_PP; gpinit.Pull = GPIO_PULLUP; gpinit.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(GPIOB, &gpinit); adc_start(); int num = 2000; int j = 0; volatile uint32_t time_us[num]; while (1) { i++; //g_ADCValue = accumulate(g_ADCBuffer,ADC_BUFFER_LENGTH) / ADC_BUFFER_LENGTH; //HAL_Delay(100); int g_ADCValue = adc_read(ADC_CHANNEL_0); int g_ADCValue1 = adc_read(ADC_CHANNEL_1); int g_ADCValue12 = adc_read(ADC_CHANNEL_12); int offTime = g_ADCValue; int onTime = 4096 - offTime; HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_SET); for (int i = 0; i < onTime; i++) { asm("nop"); } HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5,GPIO_PIN_RESET); for (int i = 0; i < offTime; i++) { asm("nop"); } //Get time in microseconds if(j < num) time_us[j++] = clock_get_us(); } for(;;); }