拆分按摩为坐垫按摩和靠背按摩

This commit is contained in:
sunbeam 2025-04-21 16:34:00 +08:00
parent d6f2305dd3
commit 8e974b6d7e
10 changed files with 314 additions and 98 deletions

View File

@ -56,5 +56,8 @@
}
],
"Codegeex.CompletionDelay": 0.5,
"Codegeex.RepoIndex": true
"Codegeex.RepoIndex": true,
"cSpell.words": [
"canmatrix"
]
}

View File

@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
@echo on
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
"D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
@echo off
goto end
@ -34,7 +34,7 @@ goto end
@echo on
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" "--debug_file=%~1" --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
"D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" "--debug_file=%~1" --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
@echo off
:end

View File

@ -23,9 +23,9 @@
if ($debugfile -eq "")
{
& "C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
& "D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
}
else
{
& "C:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --debug_file=$debugfile --backend -f "C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
& "D:\Program Files\IAR Systems\Embedded Workbench 9.2\common\bin\cspybat" -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.general.xcl" --debug_file=$debugfile --backend -f "F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\settings\cva_asw_m0146.Debug.driver.xcl"
}

View File

@ -6,7 +6,7 @@
"-p"
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\config\debugger\CVAChip\CVM0144.ddf"
"D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\config\debugger\CVAChip\CVM0144.ddf"
"--semihosting"

View File

@ -1,10 +1,10 @@
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armPROC.dll"
"D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armPROC.dll"
"C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armJLINK.dll"
"D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armJLINK.dll"
"C:\Users\sunbeam\Desktop\work\RP-01\RP-01\cva_asw_m0146\Debug_FLASH\Exe\app_m146.out"
"F:\FCBproject\DMK-RP-01\RP-01\cva_asw_m0146\Debug_FLASH\Exe\app_m146.out"
--plugin="C:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armbat.dll"
--plugin="D:\Program Files\IAR Systems\Embedded Workbench 9.2\arm\bin\armbat.dll"

View File

@ -77,7 +77,7 @@ typedef enum
* the globals
******************************************************************************/
SM_CTRL_Data_Type SM_CTRL_data;
static SM_state_Type SM_state,SM_last_state;
static SM_state_Type SM_KB_state,SM_KB_last_state,SM_ZD_state,SM_ZD_last_state;
static uint8_t ZD_DATA_L[3]={0},ZD_DATA_R[3]={0},KB_DATA_L[5]={0},KB_DATA_R[5]={0};
static uint8_t SM_TJ_Req[4]={0};
/*******************************************************************************
@ -140,31 +140,124 @@ static void SM_OFF_task(void)
SM_CTRL_data.msg.ZD_R_PLUS = (SM_TJ_Req[SM_TJ_ZD_R]==SM_TJ_ACT_Plus?1:0);
SM_CTRL_data.msg.ZD_R_MINUS = (SM_TJ_Req[SM_TJ_ZD_R]==SM_TJ_ACT_Minus?1:0);
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE_ZD = 0;
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = 0;
UpdateLinMsg(&SM_CTRL_data);
SM_last_state=SM_state;
SM_KB_last_state=SM_KB_state;
}
static void SM_RUN1_task(void)//50ms
static void SM_KB_RUN1_task(void)//50ms
{
static uint16_t run_counter;
static uint8_t runstate,zd_run_state,kb_run_state;
static uint8_t kb_run_state;
if(SM_last_state!=SM_state)
if(SM_KB_last_state!=SM_KB_state)
{
runstate = 0;
run_counter = 0;
SM_last_state=SM_state;
zd_run_state = 0;
SM_KB_last_state=SM_KB_state;
kb_run_state = 0;
}
run_counter++;
if (run_counter >= 100)
{
run_counter = 0;
zd_run_state++;
if (zd_run_state >= 3)
kb_run_state++;
if (kb_run_state >= 4)
{
zd_run_state = 0;
kb_run_state = 0;
}
}
for (uint8_t i = 0; i < 5; i++)
{
KB_DATA_L[i] = 0;
KB_DATA_R[i] = 0;
}
switch (kb_run_state)
{
case 0:
KB_DATA_L[2] = 1;
break;
case 1:
KB_DATA_R[2] = 1;
break;
case 2:
KB_DATA_R[3] = 1;
break;
case 3:
KB_DATA_L[3] = 1;
break;
default:
kb_run_state = 0;
break;
}
}
static void SM_KB_RUN2_task(void)
{
static uint16_t run_counter;
static uint8_t kb_run_state;
if(SM_KB_last_state!=SM_KB_state)
{
run_counter = 0;
SM_KB_last_state=SM_KB_state;
kb_run_state = 0;
}
run_counter++;
if (run_counter >= 100)
{
run_counter = 0;
kb_run_state++;
if (kb_run_state >= 4)
{
kb_run_state = 0;
}
}
for (uint8_t i = 0; i < 5; i++)
{
KB_DATA_L[i] = 0;
KB_DATA_R[i] = 0;
}
switch (kb_run_state)
{
case 0:
KB_DATA_L[0] = 1;
break;
case 1:
KB_DATA_R[0] = 1;
break;
case 2:
KB_DATA_R[1] = 1;
break;
case 3:
KB_DATA_L[1] = 1;
break;
default:
kb_run_state = 0;
break;
}
}
static void SM_KB_RUN3_task(void)
{
static uint16_t run_counter;
static uint8_t kb_run_state;
if(SM_KB_last_state!=SM_KB_state)
{
run_counter = 0;
SM_KB_last_state=SM_KB_state;
kb_run_state = 0;
}
run_counter++;
if (run_counter >= 100)
{
run_counter = 0;
kb_run_state++;
if (kb_run_state >= 5)
@ -172,19 +265,7 @@ static void SM_RUN1_task(void)//50ms
kb_run_state = 0;
}
}
for (uint8_t i = 0; i < 3; i++)
{
if (i == zd_run_state)
{
ZD_DATA_L[i] = 1;
ZD_DATA_R[i] = 1;
}
else
{
ZD_DATA_L[i] = 0;
ZD_DATA_R[i] = 0;
}
}
for (uint8_t i = 0; i < 5; i++)
{
if (i == kb_run_state)
@ -198,6 +279,160 @@ static void SM_RUN1_task(void)//50ms
KB_DATA_R[i] = 0;
}
}
switch (kb_run_state)
{
case 0:
KB_DATA_L[0] = 1;
KB_DATA_R[0] = 1;
break;
case 1:
KB_DATA_L[1] = 1;
KB_DATA_R[1] = 1;
break;
case 2:
KB_DATA_L[2] = 1;
KB_DATA_R[2] = 1;
break;
case 3:
KB_DATA_L[3] = 1;
KB_DATA_R[3] = 1;
break;
case 4:
KB_DATA_L[4] = 1;
KB_DATA_R[4] = 1;
break;
case 5:
KB_DATA_L[3] = 1;
KB_DATA_R[3] = 1;
break;
case 6:
KB_DATA_L[2] = 1;
KB_DATA_R[2] = 1;
break;
case 7:
KB_DATA_L[1] = 1;
KB_DATA_R[1] = 1;
break;
default:
break;
}
}
void SeatMassage_Init(void)
{
for (uint8_t i = 0; i < 4; i++)
{
SM_CTRL_data.rawdata[i] = 0;
}
UpdateLinMsg(&SM_CTRL_data);
SM_KB_state = SM_OFF;
SM_ZD_state = SM_OFF;
}
static void SeatMassageKB_task(void)
{
switch (SM_KB_state)
{
case SM_RUN1:
SM_KB_RUN1_task();
break;
case SM_RUN2:
SM_KB_RUN2_task();
break;
case SM_RUN3:
SM_KB_RUN3_task();
break;
default:
SM_KB_state = SM_OFF;
break;
}
if (SM_KB_state > SM_INIT && SM_KB_state < SM_STATE_NUM)
{
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = SM_KB_state-1;
}
else
{
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = 0;
}
}
static void SM_ZD_RUN1_task(void)
{
static uint16_t run_counter;
static uint8_t zd_run_state;
if(SM_ZD_last_state!=SM_ZD_state)
{
run_counter = 0;
SM_ZD_last_state=SM_ZD_state;
zd_run_state = 0;
}
run_counter++;
if (run_counter >= 100)
{
run_counter = 0;
zd_run_state++;
if (zd_run_state >= 4)
{
zd_run_state = 0;
}
}
for (uint8_t i = 0; i < 3; i++)
{
ZD_DATA_L[i] = 0;
ZD_DATA_R[i] = 0;
}
switch (zd_run_state)
{
case 0:
ZD_DATA_L[0] = 1;
ZD_DATA_R[0] = 1;
break;
case 1:
ZD_DATA_L[1] = 1;
ZD_DATA_R[1] = 1;
break;
case 2:
ZD_DATA_L[2] = 1;
ZD_DATA_R[2] = 1;
break;
case 3:
ZD_DATA_L[1] = 1;
ZD_DATA_R[1] = 1;
break;
default:
break;
}
}
static void SeatMassageZD_task(void)
{
switch (SM_ZD_state)
{
case SM_RUN1:
SM_ZD_RUN1_task();
break;
default:
SM_ZD_state = SM_OFF;
break;
}
if (SM_ZD_state > SM_INIT && SM_ZD_state < SM_STATE_NUM)
{
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE_ZD = SM_ZD_state-1;
}
else
{
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE_ZD = 0;
}
}
static void LinSendSeatMassage_task(void)
{
#if 1
SM_CTRL_data.msg.ZD_L0 = ZD_DATA_L[0];
SM_CTRL_data.msg.ZD_L1 = ZD_DATA_L[1];
@ -205,6 +440,9 @@ static void SM_RUN1_task(void)//50ms
SM_CTRL_data.msg.ZD_R0 = ZD_DATA_R[0];
SM_CTRL_data.msg.ZD_R1 = ZD_DATA_R[1];
SM_CTRL_data.msg.ZD_R2 = ZD_DATA_R[2];
SM_CTRL_data.msg.ZD_V2_12V = 1;
#else
SM_CTRL_data.msg.ZD_V2_12V = 0;
#endif
#if 1
SM_CTRL_data.msg.KB_L0 = KB_DATA_L[0];
@ -218,97 +456,62 @@ static void SM_RUN1_task(void)//50ms
SM_CTRL_data.msg.KB_R3 = KB_DATA_R[3];
SM_CTRL_data.msg.KB_R4 = KB_DATA_R[4];
SM_CTRL_data.msg.KB_V2_12V = 1;
#else
SM_CTRL_data.msg.KB_V2_12V = 0;
#endif
SM_CTRL_data.msg.ZD_V2_12V = 1;
SM_CTRL_data.msg.ZD_AP = 1;
SM_CTRL_data.msg.ZD_AP = (SM_KB_state>SM_OFF&&SM_ZD_state>SM_OFF)?1:0;
UpdateLinMsg(&SM_CTRL_data);
}
static void SM_RUN2_task(void)
{
static uint16_t run_counter;
static uint8_t runstate;
//SM_CTRL_data.msg.V2_12V = 1;
//SM_CTRL_data.msg.AP = 1;
UpdateLinMsg(&SM_CTRL_data);
}
static void SM_RUN3_task(void)
{
static uint16_t run_counter;
static uint8_t runstate;
//SM_CTRL_data.msg.V2_12V = 1;
//SM_CTRL_data.msg.AP = 1;
UpdateLinMsg(&SM_CTRL_data);
}
void SeatMassage_Init(void)
void SeatMassage_Maintask(void)//50ms task
{
for (uint8_t i = 0; i < 4; i++)
if (SM_KB_state == SM_OFF && SM_ZD_state == SM_OFF)
{
SM_CTRL_data.rawdata[i] = 0;
}
UpdateLinMsg(&SM_CTRL_data);
}
void SeatMassage_task(void)
{
switch (SM_state)
{
case SM_INIT:
SM_state = SM_OFF;
break;
case SM_OFF:
SM_OFF_task();
break;
case SM_RUN1:
SM_RUN1_task();
break;
case SM_RUN2:
SM_RUN2_task();
break;
case SM_RUN3:
SM_RUN3_task();
break;
default:
SM_state = SM_OFF;
break;
}
if (SM_state > SM_INIT && SM_state < SM_STATE_NUM)
{
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = SM_state-1;
}
else
{
scm_canmatrix_tx.SCM_STATE.ZY_MSSG_STATE = 0;
SeatMassageKB_task();
SeatMassageZD_task();
LinSendSeatMassage_task();
}
}
void SeatMassage_ReqRun(uint8_t state)
{
if (state < 3)
{
SM_state = SM_RUN1 + state;
SM_KB_state = SM_RUN1 + state;
}
}
void SeatMassage_ReqOFF(void)
{
SM_state = SM_OFF;
SM_KB_state = SM_OFF;
}
void SeatMassage_ReqNext(void)
void SeatMassageKB_ReqNext(void)
{
if (SM_state == SM_OFF)
SM_KB_state++;
if (SM_KB_state > SM_RUN3)
{
SM_state = SM_RUN1;
SM_KB_state = SM_OFF;
SM_KB_last_state = SM_KB_state;
}
}
void SeatMassageZD_ReqNext(void)
{
if (SM_ZD_state == SM_OFF)
{
SM_ZD_state = SM_RUN1;
}
else
{
SM_state = SM_OFF;
SM_ZD_state = SM_OFF;
SM_ZD_last_state = SM_OFF;
}
}

View File

@ -44,8 +44,9 @@ typedef enum
void SeatMassage_Init(void);
void SeatMassage_ReqOFF(void);
void SeatMassage_ReqRun(uint8_t state);
void SeatMassage_task(void);
void SeatMassage_ReqNext(void);
void SeatMassage_Maintask(void);
void SeatMassageKB_ReqNext(void);
void SeatMassageZD_ReqNext(void);
void SeatMassage_TJ_Req(SM_TJ_ITEM_Type item,SM_TJ_ACT_Type act);

View File

@ -131,7 +131,7 @@ void appTask(void)
SBC_WD_Trigger();
WdgDrv_Refresh(&mcu.wdgDrv);
PowerOnTask();
SeatMassage_task();
SeatMassage_Maintask();
}
if(gSystick1msCnt % 1000 == 0)

View File

@ -130,6 +130,8 @@ static uint8_t GetSigState(KEY_ID_type key_id)
return scm_canmatrix_rx.Panel_Key.KEY_RESET;
case KEY_SM:
return scm_canmatrix_rx.Panel_Key.KEY_ZY_MSSG;
case KEY_SM_ZD:
return scm_canmatrix_rx.Panel_Key.KEY_ZY_MSSG_ZD;
case KEY_TJ_KB_U_PLUS:
return scm_canmatrix_rx.Panel_Key.KEY_TJ_KB_U_PLUS;
case KEY_TJ_KB_U_MINUS:
@ -282,9 +284,15 @@ void KeyProTask(void)//5ms
if (getKeyPressFlag(KEY_SM) == KEY_PRESSED)
{
SeatMassage_ReqNext();
SeatMassageKB_ReqNext();
}
if (getKeyPressFlag(KEY_SM_ZD) == KEY_PRESSED)
{
SeatMassageZD_ReqNext();
}
//座椅气垫调节
if (getKeyPressFlag(KEY_TJ_KB_U_PLUS) == KEY_PRESSED)
{

View File

@ -27,6 +27,7 @@ typedef enum
KEY_MEMORY_3,
KEY_RESET,
KEY_SM,//seat massage
KEY_SM_ZD,//坐垫按摩
KEY_TJ_KB_U_PLUS,
KEY_TJ_KB_U_MINUS,
KEY_TJ_KB_D_PLUS,