static void loadSystemParams(void) { u08 EEaddr; s08 eeStatus = FALSE; u08 i; systemVarsType sVars; // Leo la configuracion: Intento leer hasta 3 veces. EEaddr = EEADDR_START_PARAMS; for (i=0; i<3; i++) { eeStatus = paramLoad(&sVars, EEaddr, sizeof(systemVarsType)); if (eeStatus == TRUE) break; } vTaskDelay( 100 / portTICK_RATE_MS ); // Confirmo que pude leer bien. if ( (eeStatus == FALSE) || (sVars.initByte != 0x49) ) { // No pude leer la EE correctamente o es la primera vez que arranco. // Inicializo a default. snprintf_P( &cmd_printfBuff,CHAR128,PSTR("loadSystemParams::Load EE error: default !!\r\n\0") ); logPrintStr(LOG_NONE, &cmd_printfBuff); loadDefaults(&sVars); // Almaceno en la EE para el proximo arranque. paramStore(&sVars, EEaddr, sizeof(systemVars)); } else { // Pude leer la eeprom correctamente. snprintf_P( &cmd_printfBuff,CHAR128,PSTR("loadSystemParams::Load config ok !!\r\n\0") ); logPrintStr(LOG_NONE, &cmd_printfBuff); } // Siempre debo arrancar con esto en FALSE para aguantar a las tareas. sVars.initStatus = FALSE; sVars.wrkMode = WK_NORMAL; strncpy_P(sVars.dlgIp, PSTR("000.000.000.000\0"),16); sVars.csq = 0; sVars.dbm = 0; sVars.dcd = 0; sVars.ri = 0; sVars.termsw = 0; // Actualizo el systemVars. if (xSemaphoreTake( sem_systemVars, MSTOTAKESYSTEMVARSSEMPH ) == pdTRUE ) { memcpy(&systemVars, &sVars, sizeof(systemVarsType)); xSemaphoreGive( sem_systemVars ); } snprintf_P( &cmd_printfBuff,CHAR128,PSTR("loadSystemParams::Config analogs=%d\r\n\0"), NRO_CHANNELS ); logPrintStr(LOG_NONE, &cmd_printfBuff); }
void IAC_Init(void) { delay_init(72); //延时函数初始化 Nvic_Init(); //中断初始化 LED_Init(); //led初始化 KEY_Init(); //按键初始化 OLED_Init(); //oled初始化 //Draw_LibLogo(); //logo paramLoad(); //pid参数初始化 State_Display();//OLED数据显示 Moto_Init(); //电机初始化//200hz usart1_init(72,115200); //串口1初始化 摄像头 usart2_Init(36,9600); //ks103数据 9600 usart3_config(460800); //串口3初始化 上位机 TIM3_Init(2500); //定时器初始化 2.5MS }
//------------------------------------------------------------------------------------ // GENERAL static void loadSystemParams(void) { s08 eeStatus = FALSE; u08 i; // Leo la configuracion: Intento leer hasta 3 veces. for (i=0; i<3; i++) { eeStatus = paramLoad( &systemVars, EEADDR_START_PARAMS, sizeof(systemVarsType)); if (eeStatus == TRUE) break; vTaskDelay( 200 / portTICK_RATE_MS ); } // Confirmo que pude leer bien. if ( (eeStatus == FALSE) || (systemVars.initByte != 0x49) ) { // No pude leer la EE correctamente o es la primera vez que arranco. // Inicializo a default. loadDefaults(); snprintf_P( ctl_printfBuff,CHAR64,PSTR("loadSystemParams::Load EE error: default !!\r\n") ); TERMrprintfStr( ctl_printfBuff ); } else { // Pude leer la eeprom correctamente. snprintf_P( ctl_printfBuff,CHAR64,PSTR("loadSystemParams::Load config ok !!\r\n") ); TERMrprintfStr( ctl_printfBuff ); } // Ajustes de inicio: strncpy_P(systemVars.dlgIp, PSTR("000.000.000.000\0"),16); systemVars.csq = 0; systemVars.dbm = 0; systemVars.dcd = 0; systemVars.ri = 0; systemVars.termsw = 0; systemVars.wrkMode = WK_NORMAL; snprintf_P( ctl_printfBuff,CHAR64,PSTR("loadSystemParams::FW %d analogs\r\n"), NRO_CHANNELS ); TERMrprintfStr( ctl_printfBuff ); }