Browse Source

修改usart协议,增加各种状态

3.2
LIN\54376 2 months ago
parent
commit
9314843ef2
  1. 4
      .settings/language.settings.xml
  2. 61
      BASE/Src/BSP/bsp_client_setting.c
  3. 1
      Core/Inc/FSM.h
  4. 13
      Core/Protobuf/PSource/bsp_GV.pb.h
  5. 4
      Core/Protobuf/Proto/bsp_GV.proto
  6. 12
      Core/Src/FSM.c

4
.settings/language.settings.xml

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1716098405222817540" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1328381156250390778" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1716098405222817540" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="1328381156250390778" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

61
BASE/Src/BSP/bsp_client_setting.c

@ -10,13 +10,16 @@
#include "gpio.h" #include "gpio.h"
#include "bsp_UART.h" #include "bsp_UART.h"
void UpdateIV_State();
void UpdateIV(); void UpdateIV_PaintThickness();
void decode_received_data_from_client(uint8_t *buffer, uint16_t length); void decode_received_data_from_client(uint8_t *buffer, uint16_t length);
struct UARTHandler *client_setting_Handler; //相当于当前行及下一行这两个结构体与绑定的共享地址 struct UARTHandler *client_setting_Handler; //相当于当前行及下一行这两个结构体与绑定的共享地址
DispacherController *client_setting_dispacher; DispacherController *client_setting_dispacher;
int LastCount; int LastCount;
uint16_t Send_State_Count = 0;
uint16_t Send_PaintThickness_Flag = 0;
void client_setting_intialize(struct UARTHandler *Handler) void client_setting_intialize(struct UARTHandler *Handler)
{ {
@ -25,7 +28,9 @@ void client_setting_intialize(struct UARTHandler *Handler)
client_setting_Handler->Wait_time = 30; // 最低不要低于4; client_setting_Handler->Wait_time = 30; // 最低不要低于4;
client_setting_dispacher=Handler->dispacherController; client_setting_dispacher=Handler->dispacherController;
client_setting_dispacher->Add_Dispatcher_List(client_setting_dispacher,UpdateIV); client_setting_dispacher->Add_Dispatcher_List(client_setting_dispacher,UpdateIV_State);
client_setting_dispacher->Add_Dispatcher_List(client_setting_dispacher,UpdateIV_PaintThickness);
client_setting_dispacher->DispacherCallTime=1000; client_setting_dispacher->DispacherCallTime=1000;
client_setting_dispacher->Dispacher_Enable = 1; client_setting_dispacher->Dispacher_Enable = 1;
LOG("client_setting_intialize"); LOG("client_setting_intialize");
@ -34,23 +39,61 @@ void client_setting_intialize(struct UARTHandler *Handler)
} }
void UpdateIV()//往安卓发的
void UpdateIV_State()//往安卓发的
{ {
Send_State_Count ++;
client_setting_Handler->Tx_Buf[0] = 0x01;
client_setting_Handler->Tx_Buf[1] = 0x03;
client_setting_Handler->Tx_Buf[2] = 0x0C;
client_setting_Handler->Tx_Buf[3] = (Send_State_Count>>8) &0xff;
client_setting_Handler->Tx_Buf[4] = Send_State_Count & 0xff;
client_setting_Handler->Tx_Buf[5] = ((ushort)GV.Robot_State>>8) &0xff;
client_setting_Handler->Tx_Buf[6] = (ushort)GV.Robot_State & 0xff;
client_setting_Handler->Tx_Buf[7] = ((ushort)abs(GV.LeftFrontMotor.Current)>>8) &0xff;
client_setting_Handler->Tx_Buf[8] = (ushort)abs(GV.LeftFrontMotor.Current) & 0xff;
client_setting_Handler->Tx_Buf[9] = ((ushort)abs(GV.RightFrontMotor.Current)>>8) &0xff;
client_setting_Handler->Tx_Buf[10] = (ushort)abs(GV.RightFrontMotor.Current) & 0xff;
client_setting_Handler->Tx_Buf[11] = ((ushort)GV.Robot_Speed_mpm>>8) &0xff;
client_setting_Handler->Tx_Buf[12] = (ushort)GV.Robot_Speed_mpm & 0xff;
client_setting_Handler->Tx_Buf[13] = ((ushort)GV.Robot_Angle.RF_Angle_Roll>>8) &0xff;
client_setting_Handler->Tx_Buf[14] = (ushort)GV.Robot_Angle.RF_Angle_Roll & 0xff;
if(GV.Robot_PaintThickness_Count > LastCount) client_setting_Handler->TxCount = 17;
uint16_t crc=MB_CRC16(&(client_setting_Handler->Tx_Buf[0]), 15);
client_setting_Handler->Tx_Buf[16] = (crc>>8) &0xff;
client_setting_Handler->Tx_Buf[15] = crc & 0xff;
client_setting_Handler->UART_Tx(client_setting_Handler);
if(Send_State_Count >= ((uint16_t)pow(2, 32)) - 1)
{ {
Send_State_Count = 0;
}
} }
else
void UpdateIV_PaintThickness()//往安卓发的
{
if(GV.Robot_PaintThickness_Count <= LastCount + 1)
{ {
return; return;
} }
client_setting_Handler->Tx_Buf[0] = 0x01; client_setting_Handler->Tx_Buf[0] = 0x01;
client_setting_Handler->Tx_Buf[1] = 0x03; client_setting_Handler->Tx_Buf[1] = 0x03;
client_setting_Handler->Tx_Buf[2] = 0x02; client_setting_Handler->Tx_Buf[2] = 0x02;
client_setting_Handler->TxCount = 7; client_setting_Handler->TxCount = 7;
client_setting_Handler->Tx_Buf[3] = (GV.Robot_PaintThickness>>8) &0xff; client_setting_Handler->Tx_Buf[3] = (GV.Robot_PaintThickness>>8) &0xff;
client_setting_Handler->Tx_Buf[4] = GV.Robot_PaintThickness & 0xff; client_setting_Handler->Tx_Buf[4] = GV.Robot_PaintThickness & 0xff;
@ -59,12 +102,12 @@ void UpdateIV()//往安卓发的
client_setting_Handler->Tx_Buf[6] = (crc>>8) &0xff; client_setting_Handler->Tx_Buf[6] = (crc>>8) &0xff;
client_setting_Handler->Tx_Buf[5] = crc & 0xff; client_setting_Handler->Tx_Buf[5] = crc & 0xff;
client_setting_Handler->UART_Tx(client_setting_Handler); client_setting_Handler->UART_Tx(client_setting_Handler);
LastCount = GV.Robot_PaintThickness_Count; LastCount = GV.Robot_PaintThickness_Count;
} }
void decode_received_data_from_client(uint8_t *buffer, uint16_t length) void decode_received_data_from_client(uint8_t *buffer, uint16_t length)
{ {
uint8_t data[2000]; uint8_t data[2000];

1
Core/Inc/FSM.h

@ -51,6 +51,7 @@ typedef enum _MoveSTATE_t
Move_ChgFinish, Move_ChgFinish,
Move_Emergency, Move_Emergency,
Move_Error,
} MoveSTATE_t; } MoveSTATE_t;
//设置 换道距离和设置后退距离 //设置 换道距离和设置后退距离

13
Core/Protobuf/PSource/bsp_GV.pb.h

@ -47,6 +47,7 @@ typedef struct _GV_struct_define {
int32_t Robot_Speed_mpm; int32_t Robot_Speed_mpm;
bool has_Robot_Ultrasonic; bool has_Robot_Ultrasonic;
MSP_UltrasonicParameters Robot_Ultrasonic; MSP_UltrasonicParameters Robot_Ultrasonic;
int32_t Robot_State;
int32_t Emergency; int32_t Emergency;
} GV_struct_define; } GV_struct_define;
@ -56,8 +57,8 @@ extern "C" {
#endif #endif
/* Initializer values for message structs */ /* Initializer values for message structs */
#define GV_struct_define_init_default {false, PV_struct_define_init_default, false, MotorParameters_init_default, false, MotorParameters_init_default, false, SP_MSP_U7_Button_init_default, 0, false, ErrorData_init_default, false, MSP_TL720DParameters_init_default, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_default, 0} #define GV_struct_define_init_default {false, PV_struct_define_init_default, false, MotorParameters_init_default, false, MotorParameters_init_default, false, SP_MSP_U7_Button_init_default, 0, false, ErrorData_init_default, false, MSP_TL720DParameters_init_default, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_default, 0, 0}
#define GV_struct_define_init_zero {false, PV_struct_define_init_zero, false, MotorParameters_init_zero, false, MotorParameters_init_zero, false, SP_MSP_U7_Button_init_zero, 0, false, ErrorData_init_zero, false, MSP_TL720DParameters_init_zero, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_zero, 0} #define GV_struct_define_init_zero {false, PV_struct_define_init_zero, false, MotorParameters_init_zero, false, MotorParameters_init_zero, false, SP_MSP_U7_Button_init_zero, 0, false, ErrorData_init_zero, false, MSP_TL720DParameters_init_zero, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false, MSP_UltrasonicParameters_init_zero, 0, 0}
/* Field tags (for use in manual encoding/decoding) */ /* Field tags (for use in manual encoding/decoding) */
#define GV_struct_define_PV_tag 1 #define GV_struct_define_PV_tag 1
@ -80,7 +81,8 @@ extern "C" {
#define GV_struct_define_Robot_PaintThickness_Count_tag 18 #define GV_struct_define_Robot_PaintThickness_Count_tag 18
#define GV_struct_define_Robot_Speed_mpm_tag 19 #define GV_struct_define_Robot_Speed_mpm_tag 19
#define GV_struct_define_Robot_Ultrasonic_tag 20 #define GV_struct_define_Robot_Ultrasonic_tag 20
#define GV_struct_define_Emergency_tag 21 #define GV_struct_define_Robot_State_tag 21
#define GV_struct_define_Emergency_tag 22
/* Struct field encoding specification for nanopb */ /* Struct field encoding specification for nanopb */
#define GV_struct_define_FIELDLIST(X, a) \ #define GV_struct_define_FIELDLIST(X, a) \
@ -104,7 +106,8 @@ X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness, 17) \
X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness_Count, 18) \ X(a, STATIC, SINGULAR, INT32, Robot_PaintThickness_Count, 18) \
X(a, STATIC, SINGULAR, INT32, Robot_Speed_mpm, 19) \ X(a, STATIC, SINGULAR, INT32, Robot_Speed_mpm, 19) \
X(a, STATIC, OPTIONAL, MESSAGE, Robot_Ultrasonic, 20) \ X(a, STATIC, OPTIONAL, MESSAGE, Robot_Ultrasonic, 20) \
X(a, STATIC, SINGULAR, INT32, Emergency, 21) X(a, STATIC, SINGULAR, INT32, Robot_State, 21) \
X(a, STATIC, SINGULAR, INT32, Emergency, 22)
#define GV_struct_define_CALLBACK NULL #define GV_struct_define_CALLBACK NULL
#define GV_struct_define_DEFAULT NULL #define GV_struct_define_DEFAULT NULL
#define GV_struct_define_PV_MSGTYPE PV_struct_define #define GV_struct_define_PV_MSGTYPE PV_struct_define
@ -122,7 +125,7 @@ extern const pb_msgdesc_t GV_struct_define_msg;
/* Maximum encoded size of messages (where known) */ /* Maximum encoded size of messages (where known) */
#define BSP_GV_PB_H_MAX_SIZE GV_struct_define_size #define BSP_GV_PB_H_MAX_SIZE GV_struct_define_size
#define GV_struct_define_size 1099 #define GV_struct_define_size 1111
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */

4
Core/Protobuf/Proto/bsp_GV.proto

@ -37,7 +37,9 @@ message GV_struct_define
int32 Robot_Speed_mpm = 19; int32 Robot_Speed_mpm = 19;
MSP_UltrasonicParameters Robot_Ultrasonic = 20; MSP_UltrasonicParameters Robot_Ultrasonic = 20;
int32 Emergency = 21; int32 Robot_State = 21;
int32 Emergency = 22;
}; };
//protoc --nanopb_out=. *.proto //protoc --nanopb_out=. *.proto

12
Core/Src/FSM.c

@ -532,9 +532,6 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值
GF_BSP_GPIO_SetIO(Out_Spray,1); GF_BSP_GPIO_SetIO(Out_Spray,1);
} }
//计算速度档位m/min //计算速度档位m/min
GV.Robot_Speed_mpm = Speed_Judge(&Current_T_F4_Value); GV.Robot_Speed_mpm = Speed_Judge(&Current_T_F4_Value);
//代入速度m/min * 186.9 最大下发4725 即最大速度25m/min //代入速度m/min * 186.9 最大下发4725 即最大速度25m/min
@ -547,12 +544,17 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值
GV.Right_Compensation = Current_T_F4_Value.robot_Compensation_Right / 51.0; GV.Right_Compensation = Current_T_F4_Value.robot_Compensation_Right / 51.0;
action_perfrom(MoveTransitions, sizeof(MoveTransitions) / sizeof(transition_t), CurrentMoveState);//结构体数组/大小/当前状态 action_perfrom(MoveTransitions, sizeof(MoveTransitions) / sizeof(transition_t), CurrentMoveState);//结构体数组/大小/当前状态
// action_perfrom(SwingTransitions,sizeof(SwingTransitions) / sizeof(transition_t), CurrentSwingState);
// action_perfrom(TiltTransitions, sizeof(TiltTransitions) / sizeof(transition_t), CurrentTiltState);
GV.Robot_State = CurrentMoveState;
if(GV.LeftFrontMotor.ERROR_Flag != 0 || GV.RightFrontMotor.ERROR_Flag != 0)
{
GV.Robot_State = Move_Error;
} }
}
void action_perfrom(transition_t transitions[], int length, int state) void action_perfrom(transition_t transitions[], int length, int state)
{ {

Loading…
Cancel
Save