123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- #include "api.h"
- #include "board_config.h"
- #include "tbc.h"
- #include "tbs.h"
- #include "sys_task.h"
- #include "TimeTask_Event.h"
- #include "InputCapture.h"
- #include "syspar.h"
- #include "user.h"
- #include "TimeTask_Event.h"
- #include "FSM_1st.h"
- #include "FSM_2nd.h"
- #include "can.h"
- #include "cmdgennew.h"
- #include "canAppl.h"
- #include "flash_master.h"
- #include "torquesensor.h"
- #include "power.h"
- #include "STLmain.h"
- #include "display.h"
- #include "enviolo_can.h"
- void PeripheralInit();
- void PeripheralStart();
- void AppInit()
- {
- /* 初始化外设(Api层级配置)并配置调度逻辑 */
- PeripheralInit();
- // /* 1 电机控制环路初始化 */
- // /* 1.1 初始化PU值系统 */
- // /* 1.2 初始化参数系统 */
- // /* 1.3 算法模块初始化 */
- //
- // McPipelineInit();
- // McModulesConfig();
- // McPipelineModulesInit();
- // McPipelineStaticCoef();
- //
- // /* 2 控制组件初始化 */
- //
- // SysCtrlInit();
- // McCtrlInit();
- //
- // /* 状态机初始化 */
- //
- // SysFsmInit();
- // CtrlFsmInit();
- // McFsmInit();
- //
- // /* 故障处理初始化 */
- //
- // AlmInit();
- //
- // /* 串口调试初始化 */
- //
- // uart_voMonitorInit();
- /* Code Para Init */
- CodeParaInit();
- /* AssitPara Init */
- ass_voAssitEEInit();
- /* PowerInit */
- power_voPowerInit();
- /* DisplayInit */
- display_voDisplayInit();
- #ifdef RUN_ARCH_SIM
- cp_stFlg.SpiOffsetFirstSetFlg = 1;
- #else
- /* Para Copy */
- mn_voParaSet();
- //cp_stFlg.ParaFirstSetFlg = 0; //eeprom save test
- if(cp_stFlg.ParaFirstSetFlg == 0)
- {
- flash_voParaInit();
- flash_voErrorClear();
- /* Parameter Default Value Write*/
- i2c_voDefaultWriteBuffer();
- i2c_voInfoWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
- /* History Default Value Write */
- i2c_voHistoryDefaultWriteBuffer();
- i2c_voHistoryWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
- /* Read EE and Update code para */
- mn_voParaSet();
- }
- #endif
-
- Can_voUpdateMC_UpcInfo();
- /* System parameter initial */
- mn_voSoftwareInit();
- /* 启动外设 */
- PeripheralStart();
- }
- void AppLoop()
- {
- /* Uart Monitor Service */
- // ReadFrame_Poll2();
- // uart_voMainDec();
- /* Control mode FSM reset */
- if (!sysfsm_stFlg.blFSMRstOvrFlg)
- {
- RUN_FSM_voInit();
- Switch_speed_FSMInit();
- sysfsm_stFlg.blFSMRstOvrFlg = TRUE;
- }
- /* Control mode variable clear */
- if (!sysfsm_stFlg.blCtrlMdVarClcOvrFlg)
- {
- sysfsm_stFlg.blCtrlMdVarClcOvrFlg = TRUE;
- }
- CanRx_Process();
- ReadFrame_Poll2();
- uart_voMainDec();
- TimingTaskLoopServer();
- if(cp_stFlg.SpiOffsetFirstSetFinishFlg == TRUE && switch_flg.SysRun_Flag == FALSE && cp_stFlg.SpiOffsetFirstSetFlg==0 && FSM2nd_Run_state.state == Exit)
- {
- MC_UpcInfo.stMContorlInfo.uwSaveFlg = 1;
- cp_stFlg.SpiOffsetFirstSetFlg = 1;
- mn_voEEUperParaUpdate();
-
- DISABLE_IRQ;
-
- /* Parameter real value write*/
- i2c_voParaWriteBuffer();
- i2c_voInfoWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
- MC_UpcInfo.stMContorlInfo.uwSaveFlg = 0;
-
- ENABLE_IRQ;
- }
- if (cp_stFlg.ParaUpdateFlg == TRUE)
- {
- mn_voParaUpdate();
- cp_stFlg.ParaUpdateFlg = FALSE;
- }
- if (power_stPowStateOut.powerstate == POWER_OFF)
- {
- if (FSM2nd_Run_state.state == Exit)
- {
- if (cp_stFlg.ParaHistorySaveEEFinishFlg == FALSE)
- {
- cp_stHistoryPara.uwOpenTimes++;
- cp_stHistoryPara.ulODOTime = MC_RideLog.ODO_Time;
- cp_stHistoryPara.ulTripSumTime = MC_RideLog.TRIP_Time;
- mn_voEEHistoryParaUpdate();
-
- DISABLE_IRQ;
-
- i2c_voHistoryWriteBuffer();
- i2c_voHistoryWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
- cp_stFlg.ParaHistorySaveEEFinishFlg = TRUE;
-
- flash_voWrite();
- /* Error Log Write */
- flash_voErrorWrite();
- if (cp_stFlg.ParaSaveEEFlg == TRUE)
- {
- mn_voEEUperParaUpdate();
- /* Parameter real value write*/
- i2c_voParaWriteBuffer();
- i2c_voInfoWrite2EE(&i2c_stTXCoef, &i2c_stTXOut);
- cp_stFlg.ParaSaveEEFinishFlg = TRUE;
- cp_stFlg.ParaSaveEEFlg = FALSE;
- }
-
- ENABLE_IRQ;
- }
- }
- }
- GearBox_Loop();
- }
- void PeripheralInit()
- {
- /* Gpio配置 */
- // iGpio_SetMode(HW_GPIO_HALLA_PIN, ApiGpio_Output);
- // iGpio_SetMode(HW_GPIO_HALLB_PIN, ApiGpio_Output);
- // iGpio_SetMode(HW_GPIO_HALLC_PIN, ApiGpio_Output);
- /* Pwm配置 */
- iPwm_BindDeviceInterrupt(0, ApiPwm_CountZeroInt, tbc_voUpIsr);
- iPwm_BindDeviceInterrupt(0, ApiPwm_CountMaxInt, tbc_voDownIsr);
- iPwm_EnableDeviceInterrupt(0, ApiPwm_CountZeroInt);
- iPwm_EnableDeviceInterrupt(0, ApiPwm_CountMaxInt);
- /* Tbs 定时器配置 */
- iTimer_BindInterrupt(HW_TBS_TIMER, tbs_voIsr);
- iTimer_EnableInterrupt(HW_TBS_TIMER);
-
- /* Event1ms 定时器配置 */
- iTimer_BindInterrupt(HW_EVENT1MS_TIMER, Event_1ms);
- iTimer_EnableInterrupt(HW_EVENT1MS_TIMER);
-
- /* 1ms 定时器配置 */
- // clock = iTimer_GetClock(HW_SYSTICK_TIMER);
- // iTimer_SetPeriod(HW_SYSTICK_TIMER, clock / 1000 - 1);
- // iTimer_EnableAutoReload(HW_SYSTICK_TIMER);
- iTimer_BindInterrupt(HW_SYSTICK_TIMER, SysTask1Ms);
- iTimer_EnableInterrupt(HW_SYSTICK_TIMER);
-
- iCap_BindDeviceInterrupt(0,IC_CountMaxISR);
- iCap_BindChannelInterrupt(0,CAP_CH(2),IC_CadenceISR);
- iCap_BindChannelInterrupt(0,CAP_CH(3),IC_BikeSpdISR);
- iCap_EnableDeviceInterrupt(0);
- iCap_EnableChannelInterrupt(0,CAP_CH(2));
- iCap_EnableChannelInterrupt(0,CAP_CH(3));
- }
- void PeripheralStart()
- {
- // iPwm_EnableCount(0);
- // iTimer_Start(HW_TBS_TIMER);
- // iTimer_Start(HW_SYSTICK_TIMER);
- }
|