// // Created by cfif on 22.09.2025. // #include "Clock.h" #include "cmsis_os.h" #include "MainModesArbiter.h" #include "LoggerInterface.h" #include "PeripheralInterfaces.h" //#define BOOT_AREA_LENGTH (256 * 1024) //#define FIRMWARE_MAIN_ADDR (0x01000000 + BOOT_AREA_LENGTH) //#define FIRMWARE_MAIN_RECOVERY_ADDR (FIRMWARE_MAIN_ADDR + FIRMWARE_MAIN_AREA_LENGTH) tMma MAIN_ENV; //deep sleep 98 116 197 264 //int _write(int fd, char* ptr, int len) { // MAIN_ENV.serialPorts->cliVirtualPortOut_Io.transmit(MAIN_ENV.serialPorts->cliVirtualPortOut_Io.env, (uint8_t *)ptr, len, 0); // return len; //return 0; //} #define LOGGER &MAIN_ENV.slog.logger #define LOG_SIGN "Model" char buffer_printf[1024]; int printf(const char *format, ...) { return 0; va_list args; va_start(args, format); int ret = vsnprintf(buffer_printf, sizeof(buffer_printf), format, args); va_end(args); if (ret > 0) { // if (buffer_printf[ret - 1] == '\n') { // buffer_printf[ret - 1] = ' '; // } LoggerCnInfo(LOGGER, LOG_SIGN, buffer_printf, ret) } return ret; } _Noreturn void stop() { while (1) { asm("nop"); } } #define STOP stop(); #if (configCHECK_FOR_STACK_OVERFLOW > 0) void vApplicationStackOverflowHook(TaskHandle_t xTask, const char *pcTaskName) { PROCESS_UNUSED_VAR(xTask); PROCESS_UNUSED_VAR(pcTaskName); STOP } #endif void FirmwareStopThread() { ModelTask_StopThread(&MAIN_ENV.ModelTask); } int main(void) { Bsp_CLOCK_Init(); NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4); osKernelInitialize(); Mma_Init(&MAIN_ENV, &GPIOS, &ADCS, &SERIAL_PORTS, &LIN_PORTS, &CAN_PORTS, &NVM_STORAGE, &PWMS, &RTCS); Mma_StartThread(&MAIN_ENV); osKernelStart(); STOP }