#include "apptasks.h" #if (CUR_CORE_BOARD == CORE_BOARD_APP) #include "inout.h" #include "trigger.h" #include "shell.h" #include "fram.h" #include "buttons.h" #include "embfpga.h" #include "extendboards.h" #include "operator.h" #include "paras.h" #include "corefmc.h" #include "workctrl.h" #include "error.h" #include "encrypt.h" void TaskPreMainLoop(void); void AppMainTask(void) { SetDefaultOut(); InitTrigger(); // 初始化定时触发功能 InitShell(); // 初始化Shell命令 InitFram(); InitButtonCtrl(); // 初始化按钮控制 InitEmbFpga(); InitDatFiles(); // 初始化数据文件 InitMotos(); // 初始化电机控制 InitExtendBoards(); // 初始化CAN扩展总线及挂载CAN总线上的板卡 InitOperator(); // 初始化操作箱 InitParas(); // 初始化参数 printf("\r\n================== Application ==================\r\n"); InitCoreFmc(); InitWorkCtrl(); // 初始化控制 TaskPreMainLoop(); // 一次性任务 do { TriggerTask(); // ShellTask(); // ExtendBoardTask(); ButtonsTask(); WorkCtrlTask(); OperatorTask(); #if (0) // 测试循环速度 static u32 timer = 0; static u32 temp; static int runcount = 0; runcount++; temp = GetMsSoftTimer(); if (temp - timer >= 1000) { timer = temp; printf("run circle = %d/s\r\n", runcount); runcount = 0; } #endif }while(1); } void TaskPreMainLoop(void) { int err; u16 ver; AddTriggerToList(500, SetLedToggle, NULL); // 500ms 闪灯任务 SetNewParasFlag(PARA_VALID); RefreshParas(PARA_VALID); RegDelayFun(DelayRef); CheckEncrypt(); // 检查加密情况..... do { TriggerTask(); ShellTask(); ExtendBoardTask(); OperatorTask(); WorkCtrlTask(); }while(0); ver = GetFpgaHardVersion(); // 读取硬件版本信息 if (((ver&0xff00)>>8) != FPGA_EMB_VER) { err = ERR_FPGA_HARD_ERR; ReportError(err); printf("fpga hard ver error\r\n"); } ver = GetFpgaSoftVersion(); // 读取软件版本信息 if (ver == 0) { err = ERR_FPGA_ERR; ReportError(err); printf("fpga soft ver error\r\n"); } if (WaitAllButtonUp() != 0) // 等待所有按键抬起 { err = ERR_BUTTON_NOUP; // 等待按钮抬起超时 ReportError(err); } CleanButtonTask(); // 清除按键任务 CheckSensorAndPos(); // 检测传感器和位置 printf("PreMainLoop over\r\n"); } #endif