123
Diff: DATA_COMMAND/data_command.cpp
- Revision:
- 6:aad89fd109c2
- Parent:
- 5:6a95726e45b0
- Child:
- 8:95a914f962bd
--- a/DATA_COMMAND/data_command.cpp Tue Oct 08 04:35:23 2019 +0000 +++ b/DATA_COMMAND/data_command.cpp Mon Dec 02 14:22:07 2019 +0000 @@ -1,14 +1,15 @@ #include "data_command.h" -Serial command(PC_10, PC_11); -DigitalOut sf_m_c(PC_12); +Serial command(PC_12, PD_2); +//DigitalOut sf_m_c(PC_12); int enabled = 0; // 进入电机模式标志位 int counter = 0; // 输出计数器 int c_control = 0; // 命令帧标志位 float SP_pf = 0, SP_df = 0; int c_lock = 2; // 位置锁定标志位 +int return_zero = 0; // 电机回0标志位 unsigned int flag_A = 0, flag_B = 0; unsigned int Snum = 0; @@ -89,7 +90,7 @@ SP_df = 0 - SP_df; - sf_m_c = 1; // 切换为发送模式 + //sf_m_c = 1; // 切换为发送模式 wait_us(200); switch(Suse[0]) @@ -97,26 +98,40 @@ case('e'): command.printf("\n\rPF exiting motor mode\r"); ExitMotorMode(&PF_can); - c_lock = 1; // 电机位置解锁 + return_zero = 0; // 停止回0 + c_lock = 2; // 电机位置锁无效 send_enable = 0; // main不发送CAN位置命令 break; case('m'): command.printf("\n\rPF entering PC motor mode\r"); EnterMotorMode(&PF_can); - c_lock = 1; // 电机位置锁定 + return_zero = 0; + c_lock = 1; // 电机位置锁定 send_enable = 1; // main发送CAN位置命令 break; case('M'): command.printf("\n\rPF entering BOARD motor mode\r"); EnterMotorMode(&PF_can); + return_zero = 0; c_lock = 0; // 电机位置解锁 - send_enable = 0; // M模式下,命令是否发送,命令是什么由calculate决定 + send_enable = 0; // M模式下,命令是否发送,命令是什么由calculate决定 break; case('z'): command.printf("\n\rPF zeroing\r"); Zero(&PF_can); - break; + return_zero = 0; + c_lock = 2; + send_enable = 0; + break; + case('r'): + command.printf("\n\rPF return zero\r"); + EnterMotorMode(&PF_can); + return_zero = 1; + c_lock = 2; + send_enable = 1; + break; } + /* switch(Suse[5]) { case('e'): @@ -142,9 +157,10 @@ Zero(&DF_can); break; } + */ wait_ms(2); - sf_m_c = 0; // 恢复接收模式 + //sf_m_c = 0; // 恢复接收模式 wait_us(200);