void systemInit(void) { // Init cycle counter cycleCounterInit(); // SysTick SysTick_Config(SystemCoreClock / 1000); /////////////////////////////////// checkFirstTime(false); readEEPROM(); if (eepromConfig.receiverType == SPEKTRUM) checkSpektrumBind(); checkResetType(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 2 bits for pre-emption priority, 2 bits for subpriority initMixer(); ledInit(); cliInit(); BLUE_LED_ON; delay(20000); // 20 sec total delay for sensor stabilization - probably not long enough..... adcInit(); batteryInit(); gpsInit(); i2cInit(I2C1); i2cInit(I2C2); pwmEscInit(eepromConfig.escPwmRate); pwmServoInit(eepromConfig.servoPwmRate); rxInit(); spiInit(SPI2); spiInit(SPI3); telemetryInit(); timingFunctionsInit(); initFirstOrderFilter(); initGPS(); initMax7456(); initPID(); GREEN_LED_ON; initMPU6000(); initMag(HMC5883L_I2C); initPressure(MS5611_I2C); }
void max7456CLI() { uint8_t max7456query = 'x'; uint8_t validQuery = false; cliBusy = true; cliPrint("\nEntering MAX7456 CLI....\n\n"); resetMax7456(); while(true) { if (!validQuery) cliPrint("MAX7456 CLI -> "); while ((cliAvailable() == false) && (validQuery == false)); if (validQuery == false) max7456query = cliRead(); if (!validQuery) cliPrint("\n"); switch(max7456query) { /////////////////////// case 'a': // OSD Configuration cliPrint("\nMAX7456 OSD Status: "); if (eepromConfig.osdEnabled) cliPrint("Enabled\n"); else cliPrint("Disabled\n"); cliPrint("OSD Default Video Standard: "); if (eepromConfig.defaultVideoStandard) cliPrint("PAL\n"); else cliPrint("NTSC\n"); cliPrint("OSD Display Units: "); if (eepromConfig.metricUnits) cliPrint("Metric\n"); else cliPrint("English\n"); cliPrint("OSD Altitude Display: "); if (eepromConfig.osdDisplayAlt) cliPrint("On\n"); else cliPrint("Off\n"); cliPrint("OSD Artifical Horizon Display: "); if (eepromConfig.osdDisplayAH) cliPrint("On\n"); else cliPrint("Off\n"); cliPrint("OSD Attitude Display: "); if (eepromConfig.osdDisplayAtt) cliPrint("On\n"); else cliPrint("Off\n"); cliPrint("OSD Heading Display: "); if (eepromConfig.osdDisplayHdg) cliPrint("On\n"); else cliPrint("Off\n"); cliPrint("\n"); validQuery = false; break; /////////////////////// case 'b': // Enable OSD Altitude Display eepromConfig.osdDisplayAlt = true; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'c': // Enable OSD Artifical Horizon Display eepromConfig.osdDisplayAH = true; eepromConfig.osdDisplayAtt = false; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'd': // Enable OSD Attitude Display eepromConfig.osdDisplayAtt = true; eepromConfig.osdDisplayAH = false; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'e': // Enable OSD Heading Display eepromConfig.osdDisplayHdg = true; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'q': // Set English Display Units eepromConfig.metricUnits = false; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'r': // Reset MAX7456 resetMax7456(); cliPrint("\nMAX7456 Reset....\n\n"); break; /////////////////////// case 's': // Show character set showMax7456Font(); cliPrint("\nMAX7456 Character Set Displayed....\n\n"); break; /////////////////////// case 't': // Download font downloadMax7456Font(); break; /////////////////////// case 'u': // Toggle OSD enabled status if (eepromConfig.osdEnabled) // If Enabled eepromConfig.osdEnabled = false; // Set Disabled else { // If Disabled eepromConfig.osdEnabled = true; // Set Enabled initMax7456(); // and call init procedure } max7456query = 'a'; validQuery = true; break; /////////////////////// case 'v': // Toggle default video standard if (eepromConfig.defaultVideoStandard) // If PAL eepromConfig.defaultVideoStandard = NTSC; // Set NTSC else // If NTSC eepromConfig.defaultVideoStandard = PAL; // Set PAL max7456query = 'a'; validQuery = true; break; /////////////////////// case 'x': cliPrint("\nExiting MAX7456 CLI....\n\n"); cliBusy = false; return; break; /////////////////////// case 'B': // Disable OSD Altitude Display eepromConfig.osdDisplayAlt = false; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'C': // Disable OSD Artifical Horizon Display eepromConfig.osdDisplayAH = false; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'D': // Disable OSD Attitude Display eepromConfig.osdDisplayAtt = false; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'E': // Disable OSD Heading Display eepromConfig.osdDisplayHdg = false; max7456query = 'a'; validQuery = true; break; /////////////////////// case 'Q': // Set Metric Display Units eepromConfig.metricUnits = true; max7456query = 'a'; validQuery = true; break; /////////////////////////// case 'W': // Write EEPROM Parameters cliPrint("\nWriting EEPROM Parameters....\n\n"); writeEEPROM(); break; /////////////////////// case '?': cliPrint("\n"); cliPrint("'a' OSD Configuration\n"); cliPrint("'b' Enable OSD Altitude Display 'B' Disable OSD Altitude Display\n"); cliPrint("'c' Enable OSD Artificial Horizon Display 'C' Disable OSD Artificial Horizon Display\n"); cliPrint("'d' Enable OSD Attitude Display 'D' Disable OSD Attitude Display\n"); cliPrint("'e' Enable OSD Heading Display 'E' Disable OSD Heading Display\n"); cliPrint("'q' Set English Display Units 'Q' Set Metric Display Units\n"); cliPrint("'r' Reset MAX7456\n"); cliPrint("'s' Display MAX7456 Character Set\n"); cliPrint("'t' Download Font to MAX7456\n"); cliPrint("'u' Change OSD Installed State\n"); cliPrint("'v' Change Default Video Standard 'W' Write EEPROM Parameters\n"); cliPrint("'x' Exit Sensor CLI '?' Command Summary\n"); cliPrint("\n"); break; /////////////////////// } } }
void systemInit(void) { RCC_ClocksTypeDef rccClocks; /////////////////////////////////// // Init cycle counter cycleCounterInit(); // SysTick SysTick_Config(SystemCoreClock / 1000); // Turn on peripherial clcoks RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM11, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); /////////////////////////////////// checkFirstTime(false); readEEPROM(); if (eepromConfig.receiverType == SPEKTRUM) checkSpektrumBind(); checkResetType(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 2 bits for pre-emption priority, 2 bits for subpriority /////////////////////////////////// gpsPortClearBuffer = &uart2ClearBuffer; gpsPortNumCharsAvailable = &uart2NumCharsAvailable; gpsPortPrintBinary = &uart2PrintBinary; gpsPortRead = &uart2Read; telemPortAvailable = &uart1Available; telemPortPrint = &uart1Print; telemPortPrintF = &uart1PrintF; telemPortRead = &uart1Read; /////////////////////////////////// initMixer(); usbInit(); ledInit(); uart1Init(); uart2Init(); BLUE_LED_ON; /////////////////////////////////// delay(10000); // 10 seconds of 20 second delay for sensor stabilization checkUsbActive(); #ifdef __VERSION__ cliPortPrintF("\ngcc version " __VERSION__ "\n"); #endif cliPortPrintF("\nAQ32Plus Firmware V%s, Build Date " __DATE__ " "__TIME__" \n", __AQ32PLUS_VERSION); if ((RCC->CR & RCC_CR_HSERDY) != RESET) { cliPortPrint("\nRunning on external HSE clock....\n"); } else { cliPortPrint("\nERROR: Running on internal HSI clock....\n"); } RCC_GetClocksFreq(&rccClocks); cliPortPrintF("\nHCLK-> %3d MHz\n", rccClocks.HCLK_Frequency / 1000000); cliPortPrintF( "PCLK1-> %3d MHz\n", rccClocks.PCLK1_Frequency / 1000000); cliPortPrintF( "PCLK2-> %3d MHz\n", rccClocks.PCLK2_Frequency / 1000000); cliPortPrintF( "SYSCLK-> %3d MHz\n\n", rccClocks.SYSCLK_Frequency / 1000000); initUBLOX(); delay(10000); // Remaining 10 seconds of 20 second delay for sensor stabilization - probably not long enough.. /////////////////////////////////// adcInit(); i2cInit(I2C1); i2cInit(I2C2); pwmServoInit(); rxInit(); spiInit(SPI2); spiInit(SPI3); timingFunctionsInit(); batteryInit(); initFirstOrderFilter(); initMavlink(); initMax7456(); initPID(); GREEN_LED_ON; initMPU6000(); initMag(); initPressure(); }