void adcSetResolution (uint8_t res){ samplingDisable(); HAL_ADC_Stop_DMA(&hadc1); HAL_ADC_Stop_DMA(&hadc2); HAL_ADC_Stop_DMA(&hadc3); if(res==8){ ADCResolution = ADC_RESOLUTION8b; }else if(res==12){ ADCResolution = ADC_RESOLUTION12b; }else{ return; } HAL_ADC_DeInit(&hadc1); HAL_ADC_DeInit(&hadc2); HAL_ADC_DeInit(&hadc3); HAL_DMA_DeInit(&hdma_adc1); HAL_DMA_DeInit(&hdma_adc2); HAL_DMA_DeInit(&hdma_adc3); MX_ADC1_Init(); MX_ADC2_Init(); MX_ADC3_Init(); }
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_USART3_UART_Init(); MX_LWIP_Init(); MX_ADC3_Init(); /* USER CODE BEGIN 2 */ /* Http webserver Init */ http_server_init(); /* Notify user about the network interface config */ User_notification(&gnetif); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ /* Read a received packet from the Ethernet buffers and send it to the lwIP for handling */ ethernetif_input(&gnetif); /* Handle timeouts */ sys_check_timeouts(); } /* USER CODE END 3 */ }
int main(void) { /* USER CODE BEGIN 1 */ CMDLINE_CONTEXT cmd_context; const char *zhonx_info = (char *)CONFIG_ZHONX_INFO_ADDR; /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); MX_ADC2_Init(); MX_ADC3_Init(); MX_I2C1_Init(); MX_RNG_Init(); MX_TIM1_Init(); MX_TIM2_Init(); MX_TIM3_Init(); MX_TIM4_Init(); MX_TIM5_Init(); MX_TIM6_Init(); MX_TIM7_Init(); MX_TIM8_Init(); MX_TIM11_Init(); MX_USART3_UART_Init(); /* USER CODE BEGIN 2 */ expanderInit(); HAL_Delay(100); mainControlInit(); ssd1306Init(0); timesBaseInit(); ledPowerBlink(990, 10); settingsInit(); mulimeterInit(); bluetoothInit(); toneInit(); spyPostInit(); positionControlSetPositionType(GYRO); mainControlSetFollowType(NO_FOLLOW); toneSetVolulme(100); tone(F4, 50); toneItMode(A4, 50); // Register Output callback cmd_context.out = blockingPrintf; // Initialize Command Line module cmdline_init(&cmd_context); // Check if robot name is populated in Flash memset(zhonxName, 0, sizeof(zhonxName)); // Retrieve ZHONX information from flash if any if (zhonx_info[0] == 'Z') { strcpy(zhonxName, zhonx_info); } while (zhonxName[0] == 0) { menu(zhonxNameMenu); } while (1) { menu(mainMenu); powerOffConfirmation(); } /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) ; /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ /* USER CODE END 3 */ }
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); MX_ADC2_Init(); MX_ADC3_Init(); MX_ADC4_Init(); MX_DAC_Init(); MX_TIM3_Init(); MX_TIM6_Init(); MX_TIM7_Init(); MX_USART2_UART_Init(); /* USER CODE BEGIN 2 */ /* USER CODE END 2 */ /* USER CODE BEGIN RTOS_MUTEX */ /* add mutexes, ... */ /* USER CODE END RTOS_MUTEX */ /* USER CODE BEGIN RTOS_SEMAPHORES */ /* add semaphores, ... */ /* USER CODE END RTOS_SEMAPHORES */ /* USER CODE BEGIN RTOS_TIMERS */ /* start timers, add new ones, ... */ /* USER CODE END RTOS_TIMERS */ /* Create the thread(s) */ /* definition and creation of defaultTask */ osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128); defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL); /* USER CODE BEGIN RTOS_THREADS */ /* add threads, ... */ /* USER CODE END RTOS_THREADS */ /* USER CODE BEGIN RTOS_QUEUES */ /* add queues, ... */ /* USER CODE END RTOS_QUEUES */ /* Start scheduler */ osKernelStart(NULL, NULL); /* We should never get here as control is now taken by the scheduler */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_DMA_Init(); MX_ADC1_Init(); MX_ADC3_Init(); MX_I2C1_Init(); MX_SPI1_Init(); MX_SPI2_Init(); MX_TIM1_Init(); MX_TIM2_Init(); MX_USB_OTG_FS_PCD_Init(); /* USER CODE BEGIN 2 */ TIM1->CCR1 = 0x300; TIM1->CCR2 = 0x300; TIM2->CCR2 = 0x60; // Настройка deathTime pwm.init(); /* bugfix */ pwmDeathTime.setValue(10); htim1.Instance->BDTR &= ~TIM_BDTR_DTG; htim1.Instance->BDTR |= pwm.computeDeathTime(pwmDeathTime.getValueFlt()); HAL_TIM_Base_Start(&htim1); // Выходной сигнал для ацп HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_2); // Выходной сигнал для ацп HAL_TIM_OC_Start(&htim1, TIM_CHANNEL_3); // HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1); // HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2); // pwm.start(); // HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1); // HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_2); __HAL_RCC_DMA2_CLK_ENABLE(); HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc1.getBufer(), adc1.getBuferSize()); HAL_ADC_Start_DMA(&hadc3, (uint32_t*)adc3.getBufer(), adc3.getBuferSize()); //------------------------------------------------------------------------------ // Низкоуровневая инициализация //------------------------------------------------------------------------------ // Разрешение выходов буферов GPIOC->BSRR = BIT_14; // Инициализация SPI портов //------------------------------------------------------------------------------ // Агрегация объектов // Определяется только при инициализации программы //------------------------------------------------------------------------------ mainMenu.addObserver( &menuEngine ); // Объект menuEngine подписался на рассылку событий, объявленных в IControlCommands //------------------------------------------------------------------------------ // Начальные условия //------------------------------------------------------------------------------ menuEngine.setMenuValue(""); // Затычка на время отсутствия FRAM. Инициализация float данных vICalibrating.setValue(vICalibrating.getValue()); vUDcBusCodeUCal.setValue(vUDcBusCodeUCal.getValue()); vUDcBusCodeZero.setValue(vUDcBusCodeZero.getValue()); vIChargeCodeICal.setValue(vIChargeCodeICal.getValue()); vUChargeCodeUCal.setValue(vUChargeCodeUCal.getValue()); vIChargeCodeZero.setValue(vIChargeCodeZero.getValue()); vUChargeCodeZero.setValue(vUChargeCodeZero.getValue()); vDcBusLoadVoltageDifferent.setValue(vDcBusLoadVoltageDifferent.getValue()); /* USER CODE END 2 */ /* Call init function for freertos objects (in freertos.c) */ MX_FREERTOS_Init(); /* Start scheduler */ osKernelStart(); /* We should never get here as control is now taken by the scheduler */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ }