#include #include #include "sdk/os/zos.hpp" #include "sdk\components\flash\zsimple_flash.hpp" #include "sdk\components\zcancmder\zcanreceiver.hpp" #include "sdk\components\zcancmder_module\zcan_basic_order_module.hpp" #include "sdk\components\zprotocols\zcancmder_v2\protocol_parser.hpp" // #include "sdk\components\flash\znvs.hpp" // #include "sdk/components/step_motor_ctrl_module/step_motor_ctrl_module.hpp" #include "sdk\components\cmdscheduler\cmd_scheduler_v2.hpp" #include "sdk\components\hardware\uart\zuart_dma_receiver.hpp" #include "sdk\components\mini_servo_motor\mini_servo_motor_ctrl_module.hpp" #include "sdk\components\pipette_module\pipette_ctrl_module_v2.hpp" #include "sdk\components\sensors\m3078\m3078_code_scaner.hpp" #include "sdk\components\sensors\tmp117\tmp117.hpp" #include "sdk\components\ti\drv8710.hpp" #include "sdk\components\tmc\ic\ztmc5130.hpp" #include "sdk\components\water_cooling_temperature_control_module\pwm_ctrl_module.hpp" #include "sdk\components\water_cooling_temperature_control_module\water_cooling_temperature_control_module.hpp" #include "sdk\components\zcancmder\zcan_board_module.hpp" #include "sdk\components\zcancmder\zcanreceiver_master.hpp" #include "sdk\components\zprotocol_helper\micro_computer_module_device_script_cmder_paser.hpp" #include "sdk\components\zprotocols\zcancmder_v2\protocol_proxy.hpp" #include "sdk\components\zprotocols\zcancmder_v2\zmodule_device_manager.hpp" // #include "M3078CodeScanner" #define TAG "main" using namespace iflytop; using namespace std; extern void umain(); extern "C" { void StartDefaultTask(void const* argument) { umain(); } } static ZModuleDeviceManager g_zModuleDeviceManager; static MicroComputerModuleDeviceScriptCmderPaser g_zModuleDeviceScriptCmderPaser; static ZCanCommnaderMaster m_zcanCommnaderMaster; static ZIProtocolProxy proxy[255]; void initcfg() { /** * @brief 初始化配置,系统中需要配置都需要在这里进行初始化 */ static I_StepMotorCtrlModule::flash_config_t cfg; StepMotorCtrlModule::create_default_cfg(cfg); // ZNVS::ins().alloc_config(MOTOR_CFG_FLASH_MARK, (uint8_t*)&cfg, sizeof(cfg)); } void initmodule() {} void umain() { chip_cfg_t chipcfg; chipcfg.us_dleay_tim = &PC_SYS_DELAY_US_TIMER; chipcfg.tim_irq_scheduler_tim = &PC_SYS_TIM_IRQ_SCHEDULER_TIMER; chipcfg.huart = &PC_DEBUG_UART; chipcfg.debuglight = PC_DEBUG_LIGHT_GPIO; chip_init(&chipcfg); zos_cfg_t zoscfg; zos_init(&zoscfg); ZLOGI(TAG, "boardId:%d", 0); ZLOGI(TAG, "init can bus"); auto* m_zcanCommnaderMaster_cfg = m_zcanCommnaderMaster.createCFG(); // can总线配置 m_zcanCommnaderMaster.init(m_zcanCommnaderMaster_cfg); // can总线 g_zModuleDeviceManager.initialize(&m_zcanCommnaderMaster); ZLOGI(TAG, "init can bus end..."); static ZUARTDmaReceiver dmaUartReceiver; static CmdSchedulerV2 cmder; ZUARTDmaReceiver::hardware_config_t cfg = { .huart = &PC_DEBUG_UART, .dma_rx = &PC_DEBUG_UART_DMA_HANDLER, .rxbuffersize = PC_DEBUG_UART_RX_BUF_SIZE, .rxovertime_ms = 10, }; ZLOGI(TAG, "init cmder"); dmaUartReceiver.initialize(&cfg); cmder.initialize(&dmaUartReceiver); ZLOGI(TAG, "init cmder end..."); ZLOGI(TAG, "init module"); g_zModuleDeviceManager.initialize(nullptr); g_zModuleDeviceScriptCmderPaser.initialize(&cmder, &g_zModuleDeviceManager); for (size_t i = 1; i < 255; i++) { proxy[i].initialize(i, &m_zcanCommnaderMaster); g_zModuleDeviceManager.registerModule(&proxy[i]); } ZLOGI(TAG, "board init ok..."); while (true) { OSDefaultSchduler::getInstance()->loop(); cmder.schedule(); } };