Compare commits

...

No commits in common. 'master' and 'develop' have entirely different histories.

  1. 4
      .settings/language.settings.xml
  2. 2
      BASE/Inc/BSP/bsp_MB_host.h
  3. 17
      BASE/Inc/BSP/bsp_UDP.h
  4. 6
      BASE/Inc/MSP/msp_485_android.h
  5. 2
      BASE/Inc/MSP/msp_U7.h
  6. 4
      BASE/Src/BSP/bsp_UART.c
  7. 403
      BASE/Src/BSP/bsp_UDP.c
  8. 15
      BASE/Src/BSP/bsp_client_setting.c
  9. 120
      BASE/Src/MSP/msp_485_android.c
  10. 4
      BASE/Src/MSP/msp_TI5MOTOR.c
  11. 17
      BASE/Src/MSP/msp_U7.c
  12. 890
      BHBF_NewFiveWheel3.0 - 副本.ioc
  13. 18
      BHBF_NewFiveWheel3.0.ioc
  14. 2
      Core/Inc/main.h
  15. 2
      Core/Protobuf/PSource/bsp_GV.pb.h
  16. 11
      Core/Protobuf/PSource/bsp_PV.pb.h
  17. 19
      Core/Protobuf/PSource/msp_U7.pb.h
  18. 1
      Core/Protobuf/Proto/bsp_PV.proto
  19. 5
      Core/Protobuf/Proto/msp_U7.proto
  20. 36
      Core/Src/FSM.c
  21. 4
      Core/Src/fdcan.c
  22. 35
      Core/Src/main.c
  23. 7
      Core/Src/motors.c
  24. 2
      Core/Src/usart.c
  25. 3
      readme.txt

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="1865330267719313672" 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="531153007411395634" 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="1865330267719313672" 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="531153007411395634" 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>

2
BASE/Inc/BSP/bsp_MB_host.h

@ -13,7 +13,7 @@
#include "bsp_include.h" #include "bsp_include.h"
#include "bsp_UART.h" #include "bsp_UART.h"
#define OneLineWaitTime 80 //SendList 等待时间 #define OneLineWaitTime 100 //SendList 等待时间
#define SWAP_ENDIAN_16(x) (((x) >> 8) | ((x) << 8)) #define SWAP_ENDIAN_16(x) (((x) >> 8) | ((x) << 8))

17
BASE/Inc/BSP/bsp_UDP.h

@ -8,17 +8,10 @@
#ifndef INC_BSP_BSP_UDP_H_ #ifndef INC_BSP_BSP_UDP_H_
#define INC_BSP_BSP_UDP_H_ #define INC_BSP_BSP_UDP_H_
#include "lwip/udp.h"
extern void udp_client_init(void);
extern void udp_dlt_send_back(char *pData,uint16_t Size);
extern void udp_cmd_send_back(char *pData, uint16_t Size);
typedef void (*DLT_DecodeFuncPtr)(uint8_t*, uint16_t);
extern void udp_send_by_pcb(struct udp_pcb * upcb,char *pData, uint16_t Size);
// 再用该类型声明变量
extern DLT_DecodeFuncPtr UDP_DLT_ReceivedCallback;
extern int8_t is_udp_GV_update_loop_enalbed;
void udp_printf_CmdBack(char *pData);
void udp_client_init(void);
void GF_UDP_Send(uint8_t *pData,uint16_t Size,uint16_t UDP_port);
void GF_UDP_long_Send_Server(void);
void GF_UpdataPos_Send(uint8_t *pData,uint32_t Size);
#endif /* INC_BSP_BSP_UDP_H_ */ #endif /* INC_BSP_BSP_UDP_H_ */

6
BASE/Inc/MSP/msp_485_android.h

@ -13,10 +13,10 @@
extern int isOnLineCount;
extern int16_t read_android_holidng_register_count; extern int16_t read_android_holidng_register_count;
extern void android_485_intialize_with_slaveID(struct UARTHandler *Handler, void android_485_intialize_with_slaveID(struct UARTHandler *Handler,
int slave_id); int slave_id);
extern void android_485_intialize(struct UARTHandler *Handler); void android_485_intialize(struct UARTHandler *Handler);
#endif /* BASE_INC_MSP_MSP_485_ANDROID_H_ */ #endif /* BASE_INC_MSP_MSP_485_ANDROID_H_ */

2
BASE/Inc/MSP/msp_U7.h

@ -12,7 +12,7 @@
void Sbus_Data_Count_U7(uint8_t *buf, int32_t *But_Value); void Sbus_Data_Count_U7(uint8_t *buf, int32_t *But_Value);
extern SP_MSP_U7_Button *P_U7; extern SP_MSP_U7_Button *P_U7;
void Robot_ResetCheck_Loop(void); void Robot_ResetCheck_Loop(void);
extern uint8_t IsRemoteAtInitialPosition(void);
// //
extern void U7_Sbus_UART_Handler_intialize(struct UARTHandler* Handler); extern void U7_Sbus_UART_Handler_intialize(struct UARTHandler* Handler);
uint8_t IsRemoteAtInitialPosition(void); uint8_t IsRemoteAtInitialPosition(void);

4
BASE/Src/BSP/bsp_UART.c

@ -1,7 +1,7 @@
#include "bsp_UART.h" #include "bsp_UART.h"
#include "main.h" #include "main.h"
#include <stdlib.h> #include <stdlib.h>
#include "DLTuc.h" #include "DLT/DLTuc.h"
void GF_UART_Send_List_Send(struct UARTHandler *handler); void GF_UART_Send_List_Send(struct UARTHandler *handler);
void Dispatcher_List_Add(struct UARTHandler *uartHandler, void Dispatcher_List_Add(struct UARTHandler *uartHandler,
@ -301,7 +301,7 @@ void IntializeUARTHandler(struct UARTHandler *uartHandler,
uartHandler->dispacherController->pHead = NULL; uartHandler->dispacherController->pHead = NULL;
uartHandler->dispacherController->pTail = NULL; uartHandler->dispacherController->pTail = NULL;
uartHandler->dispacherController->Dispacher_Enable = 1; uartHandler->dispacherController->Dispacher_Enable = 0;
uartHandler->dispacherController->DispacherCallTime = Dispacher_Time ; // call the function every 50 ms uartHandler->dispacherController->DispacherCallTime = Dispacher_Time ; // call the function every 50 ms
uartHandler->dispacherController->Dispacher_Counter = 0; uartHandler->dispacherController->Dispacher_Counter = 0;
uartHandler->dispacherController->DispacherNumber = 0; uartHandler->dispacherController->DispacherNumber = 0;

403
BASE/Src/BSP/bsp_UDP.c

@ -10,47 +10,21 @@
#include "udp.h" #include "udp.h"
#include "string.h" #include "string.h"
#include "bsp_UDP.h" #include "bsp_UDP.h"
#include "bsp_DLT_Log.h"
#include <bsp_UpperComputer_Handler.h>
#include "bsp_GPIO.h"
void UDP_GV_Dispatch();
void UDP_IV_Dispatch();
void udp_cmd_send_GV(char *pData, uint16_t Size);
/* 定义端口号 */
#define UDP_DLT_LOCAL_PORT 8000 /* 本地端口 */
#define UDP_CMD_LOCAL_PORT 8002 /* 本地端口 */
#define UDP_CMD_LOCAL_Android_Listen_PORT 8006 /* 本地端口 接收安卓 */
#define UDP_DLT_Send_LOCAL_PORT 7000 /* 本地端口 */ /* 定义端口号 */
#define UDP_CMD_Send_LOCAL_PORT 7002 /* 本地端口 */ #define UDP_REMOTE_PORT 8881 /* 远端端口 */
#define UDP_GV_Send_LOCAL_PORT 7004 /* 本地端口 */ #define UDP_LOCAL_PORT 8880 /* 本地端口 */
#define UDP_Android_Send_LOCAL_PORT 7006 /* 本地端口 发给安卓*/ #define UDP_Send_LOCAL_PORT 9880 /* 本地端口 */
/*32从7006发往安卓9006*/
/*安卓从9006发往32的8006*/
#define UDP_REMOTE_DLT_PORT 9000 /* 远端端口 */
#define UDP_REMOTE_CMD_PORT 9002 /* 远端端口 */
#define UDP_REMOTE_GV_PORT 9004 /* 远端端口 */
#define UDP_REMOTE_Android_PORT 9006 /* 远端端口 */
int8_t is_udp_GV_update_loop_enalbed = 0; #define UDP_Printf_PORT 8881
#define UDP_Long_PORT 8882
#define UDP_UpdataPos_PORT 8883
unsigned char received_data[1000]; unsigned char received_data[1000];
/* udp控制块 */ /* udp控制块 */
static struct udp_pcb *upcb_Rx_DLT; static struct udp_pcb *upcb;
static struct udp_pcb *upcb_Rx_Cmd; static struct udp_pcb *upcb_send;
static struct udp_pcb *upcb_Rx_From_Android;
static struct udp_pcb *upcb_Tx_DLT;
static struct udp_pcb *upcb_Tx_Cmd;
static struct udp_pcb *upcb_Tx_GV;
static struct udp_pcb *upcb_Tx_Android;
ip_addr_t serverIP; ip_addr_t serverIP;
ip_addr_t Android_ServerIP;
DLT_DecodeFuncPtr UDP_DLT_ReceivedCallback;
/****************************************************************************** /******************************************************************************
* : * :
* : - * : -
@ -59,119 +33,49 @@ DLT_DecodeFuncPtr UDP_DLT_ReceivedCallback;
static void udp_receive_callback(void *arg, struct udp_pcb *upcb, static void udp_receive_callback(void *arg, struct udp_pcb *upcb,
struct pbuf *p, const ip_addr_t *addr, u16_t port) struct pbuf *p, const ip_addr_t *addr, u16_t port)
{ {
if (p == NULL) return;
memcpy(received_data, p->payload, p->len);
if (upcb->local_port == UDP_DLT_LOCAL_PORT) if (p != NULL)
{
UDP_DLT_ReceivedCallback(received_data, p->len);
//DLT_DataReceiveEndCallback(received_data, p->len);
}
else if (upcb->local_port == UDP_CMD_LOCAL_PORT)
{
if (*received_data == 0x55 && *(received_data + 1) == 0x55
&& p->len >= 3)
{
decode_command_and_feedback(received_data + 2, p->len - 2, 2,
NULL); //0代表UDP
}
else if (*received_data == 0x66 && *(received_data + 1) == 0x66
&& p->len >= 3)
{
GF_BSP_GPIO_SetIO(received_data[3], received_data[2]);
}
else
{
udp_cmd_send_back(received_data, p->len);
}
}
else if (upcb->local_port == UDP_CMD_LOCAL_Android_Listen_PORT)
{
//对PV数据进行修改
//if (*buffer == 0x55 && *(buffer + 1) == 0x55 && length >= 4)
if (received_data[0] != 0x55 || received_data[1] != 0x55 || p->len < 4)
{ {
return; memcpy(received_data, p->payload, p->len);
} //err_t t = udp_sendto(upcb_send, p, &serverIP, 8000);
pbuf_free(p);
uint16_t crc_check = ((received_data[p->len - 1] << 8) } else
| received_data[p->len - 2]);
uint16_t crc_check1 = MB_CRC16(received_data, p->len - 2);
/* CRC 校验正确 */
if (crc_check != MB_CRC16(received_data, p->len - 2)) return;
if (received_data[2] != 0x01 || received_data[3] != 0x01) return;
pb_istream_t i_pv_stream =
{ 0 };
i_pv_stream = pb_istream_from_buffer(&received_data[4], p->len - 4);
pb_decode(&i_pv_stream, PV_struct_define_fields, &_decoded_PV_temp);
if (_decoded_PV_temp.TimeStamp > decoded_PV.TimeStamp)
{ {
decoded_PV = _decoded_PV_temp;
}
}
pbuf_free(p); pbuf_free(p);
}
} }
//char UDPprintf[100]; //char UDPprintf[100];
void udp_dlt_send_back(char *pData, uint16_t Size) void udp_printf_CmdBack(char *pData)
{
struct pbuf *p;
/* 分配缓冲区空间 */
p = pbuf_alloc(PBUF_TRANSPORT, Size, PBUF_RAM);
if (p != NULL)
{
/* 填充缓冲区数据 */
pbuf_take(p, pData, Size);
/* 发送udp数据 */
//udp_send(upcb_DLT, p);
err_t t = udp_sendto(upcb_Tx_DLT, p, &serverIP,
UDP_REMOTE_DLT_PORT);
/* 释放缓冲区空间 */
pbuf_free(p);
}
}
void udp_cmd_send_back(char *pData, uint16_t Size)
{ {
struct pbuf *p; struct pbuf *p;
/* 分配缓冲区空间 */ /* 分配缓冲区空间 */
p = pbuf_alloc(PBUF_TRANSPORT, Size, PBUF_RAM); p = pbuf_alloc(PBUF_TRANSPORT, strlen(pData), PBUF_POOL);
if (p != NULL) if (p != NULL)
{ {
/* 填充缓冲区数据 */ /* 填充缓冲区数据 */
pbuf_take(p, pData, Size); pbuf_take(p, pData, strlen(pData));
/* 发送udp数据 */ /* 发送udp数据 */
err_t err = udp_send(upcb_Tx_Cmd, p);
if (err != ERR_OK) udp_send(upcb, p);
{ //err_t t = udp_sendto(upcb, p, &serverIP, UDP_Printf_PORT);
// 发送失败
printf("Failed to send UDP data: %d\n", err);
}
/* 释放缓冲区空间 */ /* 释放缓冲区空间 */
pbuf_free(p); pbuf_free(p);
} }
} }
void udp_cmd_send_GV(char *pData, uint16_t Size) void GF_UDP_Send(uint8_t *pData, uint16_t Size, uint16_t UDP_port)
{ {
struct pbuf *p; struct pbuf *p;
/* 分配缓冲区空间 */ /* 分配缓冲区空间 */
p = pbuf_alloc(PBUF_TRANSPORT, Size, PBUF_RAM); p = pbuf_alloc(PBUF_TRANSPORT, Size, PBUF_POOL);
if (p != NULL) if (p != NULL)
{ {
@ -179,39 +83,16 @@ void udp_cmd_send_GV(char *pData, uint16_t Size)
pbuf_take(p, pData, Size); pbuf_take(p, pData, Size);
/* 发送udp数据 */ /* 发送udp数据 */
err_t err = udp_send(upcb_Tx_GV, p); //udp_send(upcb, p);
if (err != ERR_OK) err_t t = udp_sendto(upcb, p, &serverIP, UDP_port);
{
// 发送失败
//printf("Failed to send UDP data: %d\n", err);
}
/* 释放缓冲区空间 */ /* 释放缓冲区空间 */
pbuf_free(p); pbuf_free(p);
} }
} }
void udp_send_by_pcb(struct udp_pcb *upcb, char *pData, uint16_t Size) void GF_UpdataPos_Send(uint8_t *pData, uint32_t Size)
{ {
struct pbuf *p; GF_UDP_Send(pData, Size, UDP_UpdataPos_PORT);
/* 分配缓冲区空间 */
p = pbuf_alloc(PBUF_TRANSPORT, Size, PBUF_RAM);
if (p != NULL)
{
/* 填充缓冲区数据 */
pbuf_take(p, pData, Size);
/* 发送udp数据 */
err_t err = udp_send(upcb, p);
if (err != ERR_OK)
{
// 发送失败
//printf("Failed to send UDP data: %d\n", err);
}
/* 释放缓冲区空间 */
pbuf_free(p);
}
} }
/****************************************************************************** /******************************************************************************
@ -221,212 +102,54 @@ void udp_send_by_pcb(struct udp_pcb *upcb, char *pData, uint16_t Size)
******************************************************************************/ ******************************************************************************/
void udp_client_init(void) void udp_client_init(void)
{ {
GF_BSP_Interrupt_Add_CallBack(
DF_BSP_InterCall_TIM8_2ms_PeriodElapsedCallback, UDP_GV_Dispatch);
//将UDP上传IV关闭
GF_BSP_Interrupt_Add_CallBack(
DF_BSP_InterCall_TIM8_2ms_PeriodElapsedCallback, UDP_IV_Dispatch);
//Timer intialize();
err_t err; err_t err;
IP4_ADDR(&serverIP, 192, 168, 144, 255); IP4_ADDR(&serverIP, 192, 168, 1, 102);
IP4_ADDR(&Android_ServerIP, 192, 168, 144, 20);
/* 创建udp控制块 */ /* 创建udp控制块 */
upcb_Rx_DLT = udp_new(); upcb = udp_new();
if (upcb_Rx_DLT != NULL) if (upcb != NULL)
{ {
/* 配置本地端口 */ /* 配置本地端口 */
//upcb_DLT->local_port = UDP_DLT_LOCAL_PORT; upcb->local_port = UDP_LOCAL_PORT;
/* 配置服务器IP和端口 */
//upcb_DLT->so_options |= SOF_BROADCAST;
//err = udp_connect(upcb_DLT, &serverIP, UDP_REMOTE_DLT_PORT);
err = udp_bind(upcb_Rx_DLT, IP_ADDR_ANY, UDP_DLT_LOCAL_PORT);
if (err == ERR_OK)
{
/* 注册接收回调函数 */
/* 注册接收回调函数 */
udp_recv(upcb_Rx_DLT, udp_receive_callback, NULL);
}
else
{
udp_remove(upcb_Rx_DLT);
}
}
upcb_Rx_From_Android = udp_new();
if (upcb_Rx_From_Android != NULL)
{
/* 配置本地端口 */
//upcb_DLT->local_port = UDP_DLT_LOCAL_PORT;
/* 配置服务器IP和端口 */ /* 配置服务器IP和端口 */
//upcb_DLT->so_options |= SOF_BROADCAST; err= udp_connect(upcb, &serverIP, UDP_REMOTE_PORT);
//err = udp_connect(upcb_DLT, &serverIP, UDP_REMOTE_DLT_PORT); // err = udp_bind(upcb, IP_ADDR_ANY, UDP_LOCAL_PORT);
err = udp_bind(upcb_Rx_From_Android, IP_ADDR_ANY, upcb->so_options |= SOF_BROADCAST;
UDP_CMD_LOCAL_Android_Listen_PORT);
if (err == ERR_OK) if (err == ERR_OK)
{ {
/* 注册接收回调函数 */ /* 注册接收回调函数 */
/* 注册接收回调函数 */ udp_recv(upcb, udp_receive_callback, NULL);
udp_recv(upcb_Rx_From_Android, udp_receive_callback, NULL);
}
else
{
udp_remove(upcb_Rx_From_Android);
}
}
upcb_Rx_Cmd = udp_new();
if (upcb_Rx_Cmd != NULL)
{
/* 配置本地端口 */
//upcb_Cmd->local_port = UDP_CMD_LOCAL_PORT;
/* 配置服务器IP和端口 */
//upcb_Cmd->so_options |= SOF_BROADCAST;
//err = udp_connect(upcb_Cmd, &serverIP, UDP_REMOTE_CMD_PORT);
err = udp_bind(upcb_Rx_Cmd, IP_ADDR_ANY, UDP_CMD_LOCAL_PORT);
if (err == ERR_OK)
{
/* 注册接收回调函数 */
udp_recv(upcb_Rx_Cmd, udp_receive_callback, NULL);
}
else
{
udp_remove(upcb_Rx_Cmd);
}
}
upcb_Tx_Cmd = udp_new();
if (upcb_Tx_Cmd != NULL) /* 发送udp数据 */
{ //printf("udp client connected\r\n");
/* 配置本地端口 */ } else
upcb_Tx_Cmd->local_port = UDP_CMD_Send_LOCAL_PORT; {
udp_remove(upcb);
/* 配置服务器IP和端口 */
//upcb_Cmd->so_options |= SOF_BROADCAST; //printf("can not connect udp pcb\r\n");
err = udp_connect(upcb_Tx_Cmd, &serverIP, UDP_REMOTE_CMD_PORT); }
}
if (err == ERR_OK) // upcb_send = udp_new();
{ //
/* 注册接收回调函数 */ // if (upcb_send != NULL)
//udp_recv(upcb_Tx_Cmd, udp_receive_callback, NULL); // {
} // /* 配置本地端口 */
else // upcb_send->local_port = UDP_Send_LOCAL_PORT;
{ //
udp_remove(upcb_Tx_Cmd); // /* 配置服务器IP和端口 */
} // upcb_send->so_options |= SOF_BROADCAST;
} // err = udp_bind(upcb_send, IP_ADDR_ANY, UDP_Send_LOCAL_PORT);
upcb_Tx_DLT = udp_new(); // if (err == ERR_OK)
// {
if (upcb_Tx_DLT != NULL) //
{ // } else
/* 配置本地端口 */ // {
upcb_Tx_Cmd->local_port = UDP_DLT_Send_LOCAL_PORT; // udp_remove(upcb_send);
/* 配置服务器IP和端口 */ //
//upcb_Cmd->so_options |= SOF_BROADCAST; // }
err = udp_connect(upcb_Tx_DLT, &serverIP, UDP_REMOTE_DLT_PORT); // }
if (err == ERR_OK)
{
/* 注册接收回调函数 */
//udp_recv(upcb_Tx_Cmd, udp_receive_callback, NULL);
}
else
{
udp_remove(upcb_Tx_DLT);
}
}
upcb_Tx_GV = udp_new();
if (upcb_Tx_GV != NULL)
{
/* 配置本地端口 */
upcb_Tx_Cmd->local_port = UDP_GV_Send_LOCAL_PORT;
/* 配置服务器IP和端口 */
//upcb_Cmd->so_options |= SOF_BROADCAST;
err = udp_connect(upcb_Tx_GV, &serverIP, UDP_REMOTE_GV_PORT);
if (err == ERR_OK)
{
/* 注册接收回调函数 */
//udp_recv(upcb_Tx_Cmd, udp_receive_callback, NULL);
}
else
{
udp_remove(upcb_Tx_GV);
}
}
upcb_Tx_Android = udp_new();
if (upcb_Tx_Android != NULL)
{
/* 配置本地端口 */
upcb_Tx_Android->local_port = UDP_Android_Send_LOCAL_PORT;
/* 配置服务器IP和端口 */
//upcb_Cmd->so_options |= SOF_BROADCAST;
err = udp_connect(upcb_Tx_Android, &Android_ServerIP,
UDP_REMOTE_Android_PORT);
if (err == ERR_OK)
{
/* 注册接收回调函数 */
//udp_recv(upcb_Tx_Cmd, udp_receive_callback, NULL);
}
else
{
udp_remove(upcb_Tx_Android);
}
}
}
int counter_index = 0;
int iv_counter_index = 0;
void UDP_GV_Dispatch()
{
counter_index++;
if (counter_index <= 50) return;
if (is_udp_GV_update_loop_enalbed == 0) return;
counter_index = 0;
pb_ostream_t GV_o_stream =
{ 0 };
char buf[1024];
GV_o_stream = pb_ostream_from_buffer(&buf[2], sizeof(buf));
pb_encode(&GV_o_stream, GV_struct_define_fields, &GV);
buf[1] = 0xfe;
buf[0] = 0xfe;
//memcpy(&wh_LTE_7S0_Handler->Tx_Buf[2], buf, GV_o_stream.bytes_written);
udp_cmd_send_GV(buf, GV_o_stream.bytes_written + 2);
}
//现在是每一百ms执行一次
void UDP_IV_Dispatch()
{
iv_counter_index++;
if (iv_counter_index <= 50) return;
iv_counter_index = 0;
char Tx_Buf[1024];
pb_ostream_t IV_o_stream = pb_ostream_from_buffer(&Tx_Buf[2],
sizeof(Tx_Buf) - 2);
pb_encode(&IV_o_stream, IV_struct_define_fields, &IV);
Tx_Buf[0] = 0x55;
Tx_Buf[1] = 0x55;
int32_t TxCount = IV_o_stream.bytes_written + 4;
uint16_t crc = MB_CRC16(Tx_Buf, IV_o_stream.bytes_written + 2);
Tx_Buf[IV_o_stream.bytes_written + 2] = (crc >> 8) & 0xff;
Tx_Buf[IV_o_stream.bytes_written + 3] = crc & 0xff;
udp_send_by_pcb(upcb_Tx_Android, Tx_Buf, IV_o_stream.bytes_written + 4);
} }

15
BASE/Src/BSP/bsp_client_setting.c

@ -36,7 +36,7 @@ void client_setting_intialize(struct UARTHandler *Handler)
void UpdateIV() //往安卓发的 void UpdateIV() //往安卓发的
{ {
return;
// 若485线存在,能够读写数据,则不进行解析,直接return; // 若485线存在,能够读写数据,则不进行解析,直接return;
if (Get_BIT(SystemErrorCode, ComError_Android_485) == CONNECTED) if (Get_BIT(SystemErrorCode, ComError_Android_485) == CONNECTED)
{ {
@ -66,7 +66,7 @@ void UpdateIV() //往安卓发的
void decode_received_data_from_client(uint8_t *buffer, uint16_t length) void decode_received_data_from_client(uint8_t *buffer, uint16_t length)
{ {
return;
// 若485线存在,能够读写数据,则不进行解析,直接return; // 若485线存在,能够读写数据,则不进行解析,直接return;
if (Get_BIT(SystemErrorCode, ComError_Android_485) == CONNECTED) if (Get_BIT(SystemErrorCode, ComError_Android_485) == CONNECTED)
{ {
@ -91,18 +91,11 @@ void decode_received_data_from_client(uint8_t *buffer, uint16_t length)
i_pv_stream = pb_istream_from_buffer(&buffer[4], length - 4); i_pv_stream = pb_istream_from_buffer(&buffer[4], length - 4);
pb_decode(&i_pv_stream, PV_struct_define_fields, pb_decode(&i_pv_stream, PV_struct_define_fields,
&_decoded_PV_temp); &_decoded_PV_temp);
// if (decoded_PV.TimeStamp <= _decoded_PV_temp.TimeStamp) if (decoded_PV.TimeStamp <= _decoded_PV_temp.TimeStamp)
// {
// decoded_PV = _decoded_PV_temp;
// }
if (GV.PV.TimeStamp <= _decoded_PV_temp.TimeStamp)
{ {
GV.PV = _decoded_PV_temp; decoded_PV = _decoded_PV_temp;
} }
//将CV写入EEPROM //将CV写入EEPROM
//CV_struct_define saved_cV = GF_BSP_EEPROM_Get_CV(); //CV_struct_define saved_cV = GF_BSP_EEPROM_Get_CV();
//GV.PV = decoded_PV; //GV.PV = decoded_PV;

120
BASE/Src/MSP/msp_485_android.c

@ -4,25 +4,27 @@
* Created on: 2025121 * Created on: 2025121
* Author: akeguo * Author: akeguo
*/ */
#include "robot_state.h"
#include "msp_485_android.h" #include "msp_485_android.h"
#include "msp_U7.h" #include "msp_U7.h"
#include "bsp_Error_Detect.h"
void decode_android_485(uint8_t *buffer, uint16_t length); void decode_android_485(uint8_t *buffer, uint16_t length);
void decode_android_PV(uint8_t *buffer, uint16_t length);
void android_485_loop(); //inqure data from the, in fact this is a modbus 03 function; void android_485_loop(); //inqure data from the, in fact this is a modbus 03 function;
struct UARTHandler *android_handler; struct UARTHandler *android_handler;
DispacherController *androidr_dispacherController; DispacherController *androidr_dispacherController;
int android_slave_id = 0x40; int android_slave_id = 0x40;
int time_to_adapt = 100;
int8_t android_slave_iv_start_holiding_register = 100; int8_t android_slave_iv_start_holiding_register = 100;
int16_t android_slave_iv_holiding_register_num = 0; //这个数据要随时改变 int16_t android_slave_iv_holiding_register_num = 0; //这个数据要随时改变
//最多读取多少个字节 //最多读取多少个字节
int16_t read_android_holidng_register_count = 20; int16_t read_android_holidng_register_count = 18 + 1
//+ PV_struct_define_size / 2; //16个subs通道 1个PV数据长度, + PV_struct_define_size / 2; //16个subs通道 1个PV数据长度,
uint16_t Decoded_Android_HoldingReg_Value[100]; //用来对Android的Sbus /PV /IV 的操作 uint16_t Decoded_Android_HoldingReg_Value[100]; //用来对Android的Sbus /PV /IV 的操作
uint16_t send_pv_android_holdingReg_Value[100]; // /PV /IV 的操作 uint16_t send_pv_android_holdingReg_Value[100]; // /PV /IV 的操作
void android_485_intialize(struct UARTHandler *Handler) void android_485_intialize(struct UARTHandler *Handler)
{ {
android_handler = Handler; android_handler = Handler;
@ -52,51 +54,8 @@ void android_485_loop()
MB_ReadHoldingReg(&android_handler->Tx_Buf, &android_handler->TxCount, MB_ReadHoldingReg(&android_handler->Tx_Buf, &android_handler->TxCount,
android_slave_id, 0, read_android_holidng_register_count); android_slave_id, 0, read_android_holidng_register_count);
android_handler->AddSendList(android_handler, android_handler->Tx_Buf, android_handler->AddSendList(android_handler, android_handler->Tx_Buf,
android_handler->TxCount, time_to_adapt, decode_android_485); android_handler->TxCount, OneLineWaitTime, decode_android_485);
}
int PMK32Index = 0;
int received_android_counter = 0;
int received_counter_max = 10/2;// 每次读取多少次遥控器然后读取PV/写IV
int32_t *p_mk32_pointer;
//读取 的寄存器
void decode_android_485(uint8_t *buffer, uint16_t length)
{
// uint8_t data1[length];
// memcpy(data1, buffer, length);
// if (length <= 5)
// {
// return;
// }
int decoded_result = MB_Decode_HoldingRegs(buffer, length,
read_android_holidng_register_count,
&Decoded_Android_HoldingReg_Value[0]);
if (decoded_result == 1)
{
p_mk32_pointer = (int32_t*) P_U7;
//Sbus 设定
for (int PMK32Index = 0; PMK32Index < 18; PMK32Index++)
{
//此处必须加类型转换
*p_mk32_pointer =
(int16_t) Decoded_Android_HoldingReg_Value[PMK32Index];
p_mk32_pointer++;
}
received_android_counter++;
//读取遥控器
MB_ReadHoldingReg(&android_handler->Tx_Buf, &android_handler->TxCount, android_slave_id, 0, read_android_holidng_register_count);
android_handler->AddSendList(android_handler, android_handler->Tx_Buf, android_handler->TxCount, time_to_adapt,
decode_android_485);
if (received_android_counter % received_counter_max != 0) return;
switch (received_android_counter / received_counter_max % 2)
{
case 0:
{
//设定安卓数据 //设定安卓数据
pb_ostream_t IV_o_stream = pb_ostream_from_buffer( pb_ostream_t IV_o_stream = pb_ostream_from_buffer(
&send_pv_android_holdingReg_Value[1], &send_pv_android_holdingReg_Value[1],
@ -112,55 +71,50 @@ void decode_android_485(uint8_t *buffer, uint16_t length)
android_slave_iv_holiding_register_num, android_slave_iv_holiding_register_num,
send_pv_android_holdingReg_Value); send_pv_android_holdingReg_Value);
android_handler->AddSendList(android_handler, android_handler->Tx_Buf, android_handler->AddSendList(android_handler, android_handler->Tx_Buf,
android_handler->TxCount, 150, NULL); android_handler->TxCount, OneLineWaitTime, NULL);
received_android_counter = 0;
break;
}
case 1:
{ //读取安卓数据 03 PV
MB_ReadHoldingReg(&android_handler->Tx_Buf, &android_handler->TxCount, android_slave_id, 19,
(Decoded_Android_HoldingReg_Value[18] + 1) / 2);
android_handler->AddSendList(android_handler, android_handler->Tx_Buf, android_handler->TxCount,
time_to_adapt, decode_android_PV);
break;
}
}
} else
{
LOGFF(DL_ERROR, "Android_485 decoding failed");
}
} }
/*****/ int PMK32Index = 0;
void decode_android_PV(uint8_t *buffer, uint16_t length) int32_t *p_mk32_pointer;
//读取 的寄存器
void decode_android_485(uint8_t *buffer, uint16_t length)
{ {
// uint8_t data1[1000]; uint8_t data1[100];
// memcpy(data1, buffer, length); memcpy(data1, buffer, length);
if (length <= 5) if (length <= 5)
{ {
return; return;
} }
int decoded_result = MB_Decode_HoldingRegs(buffer, length, (Decoded_Android_HoldingReg_Value[18] + 1) / 2, int decoded_result = MB_Decode_HoldingRegs(buffer, length,
&Decoded_Android_HoldingReg_Value[19]); read_android_holidng_register_count,
&Decoded_Android_HoldingReg_Value[0]);
if (decoded_result == 1) if (decoded_result == 1)
{ {
p_mk32_pointer = (int32_t*) P_U7;
//Sbus 设定
for (int PMK32Index = 0; PMK32Index < 18; PMK32Index++)
{
//此处必须加类型转换
*p_mk32_pointer = (int16_t)Decoded_Android_HoldingReg_Value[PMK32Index];
p_mk32_pointer++;
}
//PV解析 //PV解析
pb_istream_t i_pv_stream = pb_istream_t i_pv_stream =
{ 0 }; { 0 };
i_pv_stream = pb_istream_from_buffer(&Decoded_Android_HoldingReg_Value[19], i_pv_stream = pb_istream_from_buffer(
&Decoded_Android_HoldingReg_Value[19],
Decoded_Android_HoldingReg_Value[18]); Decoded_Android_HoldingReg_Value[18]);
int checkreturn = pb_decode(&i_pv_stream, PV_struct_define_fields, &_decoded_PV_temp); pb_decode(&i_pv_stream, PV_struct_define_fields, &_decoded_PV_temp);
if (checkreturn == 1) if (decoded_PV.TimeStamp <= _decoded_PV_temp.TimeStamp)
{ {
if (GV.PV.TimeStamp <= _decoded_PV_temp.TimeStamp) decoded_PV = _decoded_PV_temp;
{
GV.PV = _decoded_PV_temp;
}
} }
HardWareErrorController->Set_PCOMHardWare(HardWareErrorController, "Android_485", 1); HardWareErrorController->Set_PCOMHardWare(HardWareErrorController,
"Android_485", 1);
} }
else else

4
BASE/Src/MSP/msp_TI5MOTOR.c

@ -28,13 +28,11 @@ CSP tempCSP;
int32_t Function_code = 0; int32_t Function_code = 0;
uint8_t ID_A_T; uint8_t ID_A_T;
uint8_t data1[20];
void DecodeTi5MotorCAN(uint32_t canID, uint8_t *buffer, uint32_t length) void DecodeTi5MotorCAN(uint32_t canID, uint8_t *buffer, uint32_t length)
{ {
ID_A_T = canID; ID_A_T = canID;
memcpy(data1, buffer, length);
if (ID_A_T >= DF_MSP_Ti5Motor_StartID if (ID_A_T >= DF_MSP_Ti5Motor_StartID
&& ID_A_T < DF_MSP_Ti5Motor_StartID + 3) && ID_A_T < DF_MSP_Ti5Motor_StartID + 3)
{ {

17
BASE/Src/MSP/msp_U7.c

@ -16,7 +16,6 @@ SP_MSP_U7_Button *P_U7;
struct UARTHandler *U7_Sbus_Controller; struct UARTHandler *U7_Sbus_Controller;
void decode_U7Data(uint8_t *buffer, uint16_t length) void decode_U7Data(uint8_t *buffer, uint16_t length)
{ {
return;
if (Get_BIT(SystemErrorCode, ComError_Android_485) == CONNECTED) if (Get_BIT(SystemErrorCode, ComError_Android_485) == CONNECTED)
{ {
return; return;
@ -99,8 +98,8 @@ void Sbus_Data_Count_U7(uint8_t *buf, int32_t *But_Value)
for (int i = 0; i < 20; i++) //16 for (int i = 0; i < 20; i++) //16
{ {
//But_Value[i+1]= (int32_t)(((CH[i]-272)*0.625+1050-1500)*2.22222); //But_Value[i+1]= (int32_t)(((CH[i]-272)*0.625+1050-1500)*2.22222);
But_Value[i + 1] = (int32_t) ((CH[i] - 992) * 1.388889); // -8这个版本是应对原U7零位整体偏移成11的情况 // But_Value[i + 1] = (int32_t) ((CH[i] - 992) * 1.388889); // -8这个版本是应对原U7零位整体偏移成11的情况
// But_Value[i + 1] = (int32_t) ((CH[i] - 992 - 8) * 1.388889); But_Value[i + 1] = (int32_t) ((CH[i] - 992 - 8) * 1.388889);
} }
//遥控器地面站在线状态 //遥控器地面站在线状态
@ -109,12 +108,12 @@ void Sbus_Data_Count_U7(uint8_t *buf, int32_t *But_Value)
else else
But_Value[17] = 0; But_Value[17] = 0;
// But_Value[0]++; But_Value[0]++;
// //?? what use? //?? what use?
// if (But_Value[0] >= 500) if (But_Value[0] >= 500)
// { {
// But_Value[0] = 0; But_Value[0] = 0;
// } }
} }
void U7_Sbus_UART_Handler_intialize(struct UARTHandler *Handler) void U7_Sbus_UART_Handler_intialize(struct UARTHandler *Handler)

890
BHBF_NewFiveWheel3.0 - 副本.ioc

@ -0,0 +1,890 @@
#MicroXplorer Configuration settings - do not modify
ADC2.Channel-0\#ChannelRegularConversion=ADC_CHANNEL_5
ADC2.ContinuousConvMode=ENABLE
ADC2.DiscontinuousConvMode=DISABLE
ADC2.IPParameters=Rank-0\#ChannelRegularConversion,Channel-0\#ChannelRegularConversion,SamplingTime-0\#ChannelRegularConversion,OffsetNumber-0\#ChannelRegularConversion,OffsetSignedSaturation-0\#ChannelRegularConversion,NbrOfConversionFlag,DiscontinuousConvMode,ContinuousConvMode
ADC2.NbrOfConversionFlag=1
ADC2.OffsetNumber-0\#ChannelRegularConversion=ADC_OFFSET_NONE
ADC2.OffsetSignedSaturation-0\#ChannelRegularConversion=DISABLE
ADC2.Rank-0\#ChannelRegularConversion=1
ADC2.SamplingTime-0\#ChannelRegularConversion=ADC_SAMPLETIME_1CYCLE_5
CORTEX_M7.AccessPermission-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_REGION_FULL_ACCESS
CORTEX_M7.AccessPermission-Cortex_Memory_Protection_Unit_Region1_Settings=MPU_REGION_FULL_ACCESS
CORTEX_M7.AccessPermission-Cortex_Memory_Protection_Unit_Region2_Settings=MPU_REGION_FULL_ACCESS
CORTEX_M7.BaseAddress-Cortex_Memory_Protection_Unit_Region0_Settings=0x30040000
CORTEX_M7.BaseAddress-Cortex_Memory_Protection_Unit_Region1_Settings=0x30040000
CORTEX_M7.BaseAddress-Cortex_Memory_Protection_Unit_Region2_Settings=0x30030000
CORTEX_M7.CPU_DCache=Enabled
CORTEX_M7.CPU_ICache=Enabled
CORTEX_M7.Enable-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_REGION_ENABLE
CORTEX_M7.Enable-Cortex_Memory_Protection_Unit_Region1_Settings=MPU_REGION_ENABLE
CORTEX_M7.Enable-Cortex_Memory_Protection_Unit_Region2_Settings=MPU_REGION_ENABLE
CORTEX_M7.IPParameters=MPU_Control,CPU_ICache,CPU_DCache,Enable-Cortex_Memory_Protection_Unit_Region2_Settings,Enable-Cortex_Memory_Protection_Unit_Region0_Settings,BaseAddress-Cortex_Memory_Protection_Unit_Region0_Settings,Size-Cortex_Memory_Protection_Unit_Region0_Settings,IsBufferable-Cortex_Memory_Protection_Unit_Region0_Settings,AccessPermission-Cortex_Memory_Protection_Unit_Region0_Settings,Enable-Cortex_Memory_Protection_Unit_Region1_Settings,BaseAddress-Cortex_Memory_Protection_Unit_Region1_Settings,Size-Cortex_Memory_Protection_Unit_Region1_Settings,AccessPermission-Cortex_Memory_Protection_Unit_Region1_Settings,IsCacheable-Cortex_Memory_Protection_Unit_Region1_Settings,IsShareable-Cortex_Memory_Protection_Unit_Region1_Settings,TypeExtField-Cortex_Memory_Protection_Unit_Region1_Settings,IsShareable-Cortex_Memory_Protection_Unit_Region0_Settings,SubRegionDisable-Cortex_Memory_Protection_Unit_Region0_Settings,IsBufferable-Cortex_Memory_Protection_Unit_Region1_Settings,TypeExtField-Cortex_Memory_Protection_Unit_Region0_Settings,BaseAddress-Cortex_Memory_Protection_Unit_Region2_Settings,Size-Cortex_Memory_Protection_Unit_Region2_Settings,TypeExtField-Cortex_Memory_Protection_Unit_Region2_Settings,AccessPermission-Cortex_Memory_Protection_Unit_Region2_Settings
CORTEX_M7.IsBufferable-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_ACCESS_NOT_BUFFERABLE
CORTEX_M7.IsBufferable-Cortex_Memory_Protection_Unit_Region1_Settings=MPU_ACCESS_BUFFERABLE
CORTEX_M7.IsCacheable-Cortex_Memory_Protection_Unit_Region1_Settings=MPU_ACCESS_NOT_CACHEABLE
CORTEX_M7.IsShareable-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_ACCESS_NOT_SHAREABLE
CORTEX_M7.IsShareable-Cortex_Memory_Protection_Unit_Region1_Settings=MPU_ACCESS_SHAREABLE
CORTEX_M7.MPU_Control=MPU_PRIVILEGED_DEFAULT
CORTEX_M7.Size-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_REGION_SIZE_32KB
CORTEX_M7.Size-Cortex_Memory_Protection_Unit_Region1_Settings=MPU_REGION_SIZE_1KB
CORTEX_M7.Size-Cortex_Memory_Protection_Unit_Region2_Settings=MPU_REGION_SIZE_32KB
CORTEX_M7.SubRegionDisable-Cortex_Memory_Protection_Unit_Region0_Settings=0x0
CORTEX_M7.TypeExtField-Cortex_Memory_Protection_Unit_Region0_Settings=MPU_TEX_LEVEL1
CORTEX_M7.TypeExtField-Cortex_Memory_Protection_Unit_Region1_Settings=MPU_TEX_LEVEL0
CORTEX_M7.TypeExtField-Cortex_Memory_Protection_Unit_Region2_Settings=MPU_TEX_LEVEL1
Dma.Request0=UART4_TX
Dma.Request1=USART1_TX
Dma.Request2=UART5_TX
Dma.Request3=USART2_TX
Dma.Request4=USART3_TX
Dma.Request5=USART6_TX
Dma.Request6=UART7_TX
Dma.RequestsNb=7
Dma.UART4_TX.0.Direction=DMA_MEMORY_TO_PERIPH
Dma.UART4_TX.0.EventEnable=DISABLE
Dma.UART4_TX.0.FIFOMode=DMA_FIFOMODE_ENABLE
Dma.UART4_TX.0.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL
Dma.UART4_TX.0.Instance=DMA1_Stream0
Dma.UART4_TX.0.MemBurst=DMA_MBURST_SINGLE
Dma.UART4_TX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.UART4_TX.0.MemInc=DMA_MINC_ENABLE
Dma.UART4_TX.0.Mode=DMA_NORMAL
Dma.UART4_TX.0.PeriphBurst=DMA_PBURST_SINGLE
Dma.UART4_TX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.UART4_TX.0.PeriphInc=DMA_PINC_DISABLE
Dma.UART4_TX.0.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.UART4_TX.0.Priority=DMA_PRIORITY_LOW
Dma.UART4_TX.0.RequestNumber=1
Dma.UART4_TX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,FIFOThreshold,MemBurst,PeriphBurst,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.UART4_TX.0.SignalID=NONE
Dma.UART4_TX.0.SyncEnable=DISABLE
Dma.UART4_TX.0.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.UART4_TX.0.SyncRequestNumber=1
Dma.UART4_TX.0.SyncSignalID=NONE
Dma.UART5_TX.2.Direction=DMA_MEMORY_TO_PERIPH
Dma.UART5_TX.2.EventEnable=DISABLE
Dma.UART5_TX.2.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.UART5_TX.2.Instance=DMA1_Stream3
Dma.UART5_TX.2.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.UART5_TX.2.MemInc=DMA_MINC_ENABLE
Dma.UART5_TX.2.Mode=DMA_NORMAL
Dma.UART5_TX.2.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.UART5_TX.2.PeriphInc=DMA_PINC_DISABLE
Dma.UART5_TX.2.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.UART5_TX.2.Priority=DMA_PRIORITY_LOW
Dma.UART5_TX.2.RequestNumber=1
Dma.UART5_TX.2.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.UART5_TX.2.SignalID=NONE
Dma.UART5_TX.2.SyncEnable=DISABLE
Dma.UART5_TX.2.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.UART5_TX.2.SyncRequestNumber=1
Dma.UART5_TX.2.SyncSignalID=NONE
Dma.UART7_TX.6.Direction=DMA_MEMORY_TO_PERIPH
Dma.UART7_TX.6.EventEnable=DISABLE
Dma.UART7_TX.6.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.UART7_TX.6.Instance=DMA1_Stream1
Dma.UART7_TX.6.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.UART7_TX.6.MemInc=DMA_MINC_ENABLE
Dma.UART7_TX.6.Mode=DMA_NORMAL
Dma.UART7_TX.6.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.UART7_TX.6.PeriphInc=DMA_PINC_DISABLE
Dma.UART7_TX.6.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.UART7_TX.6.Priority=DMA_PRIORITY_LOW
Dma.UART7_TX.6.RequestNumber=1
Dma.UART7_TX.6.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.UART7_TX.6.SignalID=NONE
Dma.UART7_TX.6.SyncEnable=DISABLE
Dma.UART7_TX.6.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.UART7_TX.6.SyncRequestNumber=1
Dma.UART7_TX.6.SyncSignalID=NONE
Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH
Dma.USART1_TX.1.EventEnable=DISABLE
Dma.USART1_TX.1.FIFOMode=DMA_FIFOMODE_ENABLE
Dma.USART1_TX.1.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL
Dma.USART1_TX.1.Instance=DMA1_Stream2
Dma.USART1_TX.1.MemBurst=DMA_MBURST_SINGLE
Dma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE
Dma.USART1_TX.1.Mode=DMA_NORMAL
Dma.USART1_TX.1.PeriphBurst=DMA_PBURST_SINGLE
Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE
Dma.USART1_TX.1.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW
Dma.USART1_TX.1.RequestNumber=1
Dma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,FIFOThreshold,MemBurst,PeriphBurst,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.USART1_TX.1.SignalID=NONE
Dma.USART1_TX.1.SyncEnable=DISABLE
Dma.USART1_TX.1.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.USART1_TX.1.SyncRequestNumber=1
Dma.USART1_TX.1.SyncSignalID=NONE
Dma.USART2_TX.3.Direction=DMA_MEMORY_TO_PERIPH
Dma.USART2_TX.3.EventEnable=DISABLE
Dma.USART2_TX.3.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.USART2_TX.3.Instance=DMA1_Stream5
Dma.USART2_TX.3.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART2_TX.3.MemInc=DMA_MINC_ENABLE
Dma.USART2_TX.3.Mode=DMA_NORMAL
Dma.USART2_TX.3.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART2_TX.3.PeriphInc=DMA_PINC_DISABLE
Dma.USART2_TX.3.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.USART2_TX.3.Priority=DMA_PRIORITY_LOW
Dma.USART2_TX.3.RequestNumber=1
Dma.USART2_TX.3.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.USART2_TX.3.SignalID=NONE
Dma.USART2_TX.3.SyncEnable=DISABLE
Dma.USART2_TX.3.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.USART2_TX.3.SyncRequestNumber=1
Dma.USART2_TX.3.SyncSignalID=NONE
Dma.USART3_TX.4.Direction=DMA_MEMORY_TO_PERIPH
Dma.USART3_TX.4.EventEnable=DISABLE
Dma.USART3_TX.4.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.USART3_TX.4.Instance=DMA1_Stream6
Dma.USART3_TX.4.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART3_TX.4.MemInc=DMA_MINC_ENABLE
Dma.USART3_TX.4.Mode=DMA_NORMAL
Dma.USART3_TX.4.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART3_TX.4.PeriphInc=DMA_PINC_DISABLE
Dma.USART3_TX.4.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.USART3_TX.4.Priority=DMA_PRIORITY_LOW
Dma.USART3_TX.4.RequestNumber=1
Dma.USART3_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.USART3_TX.4.SignalID=NONE
Dma.USART3_TX.4.SyncEnable=DISABLE
Dma.USART3_TX.4.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.USART3_TX.4.SyncRequestNumber=1
Dma.USART3_TX.4.SyncSignalID=NONE
Dma.USART6_TX.5.Direction=DMA_MEMORY_TO_PERIPH
Dma.USART6_TX.5.EventEnable=DISABLE
Dma.USART6_TX.5.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.USART6_TX.5.Instance=DMA1_Stream7
Dma.USART6_TX.5.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.USART6_TX.5.MemInc=DMA_MINC_ENABLE
Dma.USART6_TX.5.Mode=DMA_NORMAL
Dma.USART6_TX.5.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.USART6_TX.5.PeriphInc=DMA_PINC_DISABLE
Dma.USART6_TX.5.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.USART6_TX.5.Priority=DMA_PRIORITY_LOW
Dma.USART6_TX.5.RequestNumber=1
Dma.USART6_TX.5.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority,FIFOMode,SignalID,Polarity,RequestNumber,SyncSignalID,SyncPolarity,SyncEnable,EventEnable,SyncRequestNumber
Dma.USART6_TX.5.SignalID=NONE
Dma.USART6_TX.5.SyncEnable=DISABLE
Dma.USART6_TX.5.SyncPolarity=HAL_DMAMUX_SYNC_NO_EVENT
Dma.USART6_TX.5.SyncRequestNumber=1
Dma.USART6_TX.5.SyncSignalID=NONE
ETH.IPParameters=MediaInterface,TxDescAddress,RxDescAddress,RxBuffAddress,RxBuffLen
ETH.MediaInterface=HAL_ETH_RMII_MODE
ETH.RxBuffAddress=0x30040400
ETH.RxBuffLen=1528
ETH.RxDescAddress=0x30040000
ETH.TxDescAddress=0x30040200
FDCAN1.CalculateBaudRateNominal=500000
FDCAN1.CalculateTimeBitNominal=2000
FDCAN1.CalculateTimeQuantumNominal=250.0
FDCAN1.IPParameters=NominalPrescaler,NominalTimeSeg1,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal
FDCAN1.NominalPrescaler=10
FDCAN1.NominalTimeSeg1=5
FDCAN1.RxFifo0ElmtsNbr=32
FDCAN1.TxFifoQueueElmtsNbr=32
FDCAN2.CalculateBaudRateNominal=250000
FDCAN2.CalculateTimeBitNominal=4000
FDCAN2.CalculateTimeQuantumNominal=500.0
FDCAN2.IPParameters=NominalPrescaler,NominalTimeSeg1,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal
FDCAN2.NominalPrescaler=20
FDCAN2.NominalTimeSeg1=5
FDCAN2.RxFifo0ElmtsNbr=32
FDCAN2.TxFifoQueueElmtsNbr=32
File.Version=6
GPIO.groupedBy=Group By Peripherals
I2C4.IPParameters=Timing
I2C4.Timing=0x10C0ECFF
KeepUserPlacement=false
LPUART1.BaudRate=57600
LPUART1.IPParameters=BaudRate,OverrunDisableParam
LPUART1.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE
LWIP.BSP.number=1
LWIP.GATEWAY_ADDRESS=192.168.001.001
LWIP.IPParameters=LWIP_NETIF_STATUS_CALLBACK,LWIP_DHCP,IP_ADDRESS,NETMASK_ADDRESS,GATEWAY_ADDRESS,MEM_SIZE,LWIP_RAM_HEAP_POINTER
LWIP.IP_ADDRESS=192.168.001.100
LWIP.LWIP_DHCP=0
LWIP.LWIP_NETIF_STATUS_CALLBACK=1
LWIP.LWIP_RAM_HEAP_POINTER=0x30044000
LWIP.MEM_SIZE=1600
LWIP.NETMASK_ADDRESS=255.255.255.000
LWIP.Version=v2.1.2_Cube
LWIP0.BSP.STBoard=false
LWIP0.BSP.api=BSP_COMPONENT_DRIVER
LWIP0.BSP.component=LAN8742
LWIP0.BSP.condition=
LWIP0.BSP.instance=LAN8742
LWIP0.BSP.ip=
LWIP0.BSP.mode=
LWIP0.BSP.name=Driver_PHY
LWIP0.BSP.semaphore=S_LAN8742
LWIP0.BSP.solution=LAN8742
Mcu.CPN=STM32H743VGT6
Mcu.Family=STM32H7
Mcu.IP0=ADC2
Mcu.IP1=CORTEX_M7
Mcu.IP10=NVIC
Mcu.IP11=QUADSPI
Mcu.IP12=RCC
Mcu.IP13=SYS
Mcu.IP14=TIM1
Mcu.IP15=TIM8
Mcu.IP16=UART4
Mcu.IP17=UART5
Mcu.IP18=UART7
Mcu.IP19=USART1
Mcu.IP2=DEBUG
Mcu.IP20=USART2
Mcu.IP21=USART3
Mcu.IP22=USART6
Mcu.IP3=DMA
Mcu.IP4=ETH
Mcu.IP5=FDCAN1
Mcu.IP6=FDCAN2
Mcu.IP7=I2C4
Mcu.IP8=LPUART1
Mcu.IP9=LWIP
Mcu.IPNb=23
Mcu.Name=STM32H743VGTx
Mcu.Package=LQFP100
Mcu.Pin0=PE2
Mcu.Pin1=PE3
Mcu.Pin10=PC2_C
Mcu.Pin11=PC3_C
Mcu.Pin12=PA0
Mcu.Pin13=PA1
Mcu.Pin14=PA2
Mcu.Pin15=PA3
Mcu.Pin16=PA4
Mcu.Pin17=PA5
Mcu.Pin18=PA6
Mcu.Pin19=PA7
Mcu.Pin2=PE4
Mcu.Pin20=PC4
Mcu.Pin21=PC5
Mcu.Pin22=PB1
Mcu.Pin23=PB2
Mcu.Pin24=PE7
Mcu.Pin25=PE8
Mcu.Pin26=PE9
Mcu.Pin27=PE10
Mcu.Pin28=PE11
Mcu.Pin29=PE12
Mcu.Pin3=PE5
Mcu.Pin30=PE13
Mcu.Pin31=PB11
Mcu.Pin32=PB12
Mcu.Pin33=PB13
Mcu.Pin34=PB14
Mcu.Pin35=PB15
Mcu.Pin36=PD8
Mcu.Pin37=PD9
Mcu.Pin38=PD10
Mcu.Pin39=PD11
Mcu.Pin4=PE6
Mcu.Pin40=PD12
Mcu.Pin41=PD13
Mcu.Pin42=PD14
Mcu.Pin43=PC6
Mcu.Pin44=PC7
Mcu.Pin45=PC8
Mcu.Pin46=PC9
Mcu.Pin47=PA8
Mcu.Pin48=PA9
Mcu.Pin49=PA10
Mcu.Pin5=PC13
Mcu.Pin50=PA11
Mcu.Pin51=PA12
Mcu.Pin52=PA13 (JTMS/SWDIO)
Mcu.Pin53=PA14 (JTCK/SWCLK)
Mcu.Pin54=PA15 (JTDI)
Mcu.Pin55=PC10
Mcu.Pin56=PC11
Mcu.Pin57=PC12
Mcu.Pin58=PD0
Mcu.Pin59=PD1
Mcu.Pin6=PH0-OSC_IN (PH0)
Mcu.Pin60=PD2
Mcu.Pin61=PD3
Mcu.Pin62=PD4
Mcu.Pin63=PD5
Mcu.Pin64=PD6
Mcu.Pin65=PB3 (JTDO/TRACESWO)
Mcu.Pin66=PB4 (NJTRST)
Mcu.Pin67=PB5
Mcu.Pin68=PB6
Mcu.Pin69=PB7
Mcu.Pin7=PH1-OSC_OUT (PH1)
Mcu.Pin70=PB8
Mcu.Pin71=PB9
Mcu.Pin72=PE0
Mcu.Pin73=PE1
Mcu.Pin74=VP_LWIP_VS_Enabled
Mcu.Pin75=VP_SYS_VS_Systick
Mcu.Pin76=VP_TIM1_VS_ClockSourceINT
Mcu.Pin77=VP_TIM8_VS_ClockSourceINT
Mcu.Pin8=PC0
Mcu.Pin9=PC1
Mcu.PinsNb=78
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32H743VGTx
MxCube.Version=6.6.1
MxDb.Version=DB.6.0.60
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DMA1_Stream0_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA1_Stream1_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA1_Stream2_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA1_Stream3_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA1_Stream5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA1_Stream6_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DMA1_Stream7_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.ETH_IRQn=true\:6\:0\:true\:false\:true\:true\:true\:true
NVIC.ETH_WKUP_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.FDCAN1_IT0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.FDCAN2_IT0_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.I2C4_ER_IRQn=true\:15\:0\:true\:false\:true\:true\:true\:true
NVIC.I2C4_EV_IRQn=true\:15\:0\:true\:false\:true\:true\:true\:true
NVIC.LPUART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:false
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.TIM1_UP_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.TIM8_UP_TIM13_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UART4_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UART5_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UART7_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART3_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.USART6_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PA0.GPIOParameters=PinState,GPIO_Label,PinAttribute
PA0.GPIO_Label=OUT_2
PA0.Locked=true
PA0.PinAttribute=Free
PA0.PinState=GPIO_PIN_SET
PA0.Signal=GPIO_Output
PA1.GPIOParameters=GPIO_Speed,PinAttribute
PA1.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PA1.Mode=RMII
PA1.PinAttribute=Free
PA1.Signal=ETH_REF_CLK
PA10.Mode=Asynchronous
PA10.Signal=LPUART1_RX
PA11.GPIOParameters=GPIO_Speed,GPIO_PuPd,PinAttribute
PA11.GPIO_PuPd=GPIO_PULLUP
PA11.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PA11.Locked=true
PA11.Mode=Asynchronous
PA11.PinAttribute=Free
PA11.Signal=UART4_RX
PA12.GPIOParameters=PinAttribute
PA12.Locked=true
PA12.Mode=Asynchronous
PA12.PinAttribute=Free
PA12.Signal=UART4_TX
PA13\ (JTMS/SWDIO).GPIOParameters=PinAttribute
PA13\ (JTMS/SWDIO).Locked=true
PA13\ (JTMS/SWDIO).Mode=Serial_Wire
PA13\ (JTMS/SWDIO).PinAttribute=Free
PA13\ (JTMS/SWDIO).Signal=DEBUG_JTMS-SWDIO
PA14\ (JTCK/SWCLK).GPIOParameters=PinAttribute
PA14\ (JTCK/SWCLK).Mode=Serial_Wire
PA14\ (JTCK/SWCLK).PinAttribute=Free
PA14\ (JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK
PA15\ (JTDI).GPIOParameters=PinAttribute
PA15\ (JTDI).Locked=true
PA15\ (JTDI).Mode=Asynchronous
PA15\ (JTDI).PinAttribute=Free
PA15\ (JTDI).Signal=UART7_TX
PA2.GPIOParameters=GPIO_Speed,PinAttribute
PA2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PA2.Mode=RMII
PA2.PinAttribute=Free
PA2.Signal=ETH_MDIO
PA3.GPIOParameters=PinState,GPIO_Label,PinAttribute
PA3.GPIO_Label=OUT_3
PA3.Locked=true
PA3.PinAttribute=Free
PA3.PinState=GPIO_PIN_SET
PA3.Signal=GPIO_Output
PA4.GPIOParameters=PinState,GPIO_Label,PinAttribute
PA4.GPIO_Label=OUT_4
PA4.Locked=true
PA4.PinAttribute=Free
PA4.PinState=GPIO_PIN_SET
PA4.Signal=GPIO_Output
PA5.GPIOParameters=PinState,GPIO_Label,PinAttribute
PA5.GPIO_Label=OUT_5
PA5.Locked=true
PA5.PinAttribute=Free
PA5.PinState=GPIO_PIN_SET
PA5.Signal=GPIO_Output
PA6.GPIOParameters=GPIO_Label,PinAttribute
PA6.GPIO_Label=ETH_RST
PA6.Locked=true
PA6.PinAttribute=Free
PA6.Signal=GPIO_Output
PA7.GPIOParameters=GPIO_Speed,PinAttribute
PA7.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PA7.Mode=RMII
PA7.PinAttribute=Free
PA7.Signal=ETH_CRS_DV
PA8.GPIOParameters=GPIO_Speed,GPIO_PuPd,PinAttribute
PA8.GPIO_PuPd=GPIO_PULLUP
PA8.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PA8.Locked=true
PA8.Mode=Asynchronous
PA8.PinAttribute=Free
PA8.Signal=UART7_RX
PA9.Mode=Asynchronous
PA9.Signal=LPUART1_TX
PB1.Locked=true
PB1.Signal=ADCx_INP5
PB11.GPIOParameters=GPIO_Speed,PinAttribute
PB11.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PB11.Mode=RMII
PB11.PinAttribute=Free
PB11.Signal=ETH_TX_EN
PB12.GPIOParameters=GPIO_Speed,PinAttribute
PB12.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PB12.Mode=RMII
PB12.PinAttribute=Free
PB12.Signal=ETH_TXD0
PB13.GPIOParameters=GPIO_Speed,PinAttribute
PB13.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PB13.Mode=RMII
PB13.PinAttribute=Free
PB13.Signal=ETH_TXD1
PB14.GPIOParameters=PinAttribute
PB14.Locked=true
PB14.Mode=Asynchronous
PB14.PinAttribute=Free
PB14.Signal=USART1_TX
PB15.GPIOParameters=GPIO_Speed,GPIO_PuPd,PinAttribute
PB15.GPIO_PuPd=GPIO_PULLUP
PB15.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PB15.Mode=Asynchronous
PB15.PinAttribute=Free
PB15.Signal=USART1_RX
PB2.GPIOParameters=GPIO_Speed,PinAttribute
PB2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PB2.Mode=Single Bank 2
PB2.PinAttribute=Free
PB2.Signal=QUADSPI_CLK
PB3\ (JTDO/TRACESWO).GPIOParameters=GPIO_Label
PB3\ (JTDO/TRACESWO).GPIO_Label=S0_NET
PB3\ (JTDO/TRACESWO).Locked=true
PB3\ (JTDO/TRACESWO).Signal=GPIO_Input
PB4\ (NJTRST).GPIOParameters=GPIO_Label
PB4\ (NJTRST).GPIO_Label=S0_LINKA
PB4\ (NJTRST).Locked=true
PB4\ (NJTRST).Signal=GPIO_Input
PB5.Locked=true
PB5.Mode=FDCAN_Activate
PB5.Signal=FDCAN2_RX
PB6.Locked=true
PB6.Mode=FDCAN_Activate
PB6.Signal=FDCAN2_TX
PB7.GPIOParameters=GPIO_Label
PB7.GPIO_Label=E22_M1
PB7.Locked=true
PB7.Signal=GPIO_Output
PB8.Locked=true
PB8.Mode=FDCAN_Activate
PB8.Signal=FDCAN1_RX
PB9.Locked=true
PB9.Mode=FDCAN_Activate
PB9.Signal=FDCAN1_TX
PC0.GPIOParameters=GPIO_Label
PC0.GPIO_Label=S0_RESET
PC0.Locked=true
PC0.Signal=GPIO_Output
PC1.GPIOParameters=GPIO_Speed
PC1.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC1.Mode=RMII
PC1.Signal=ETH_MDC
PC10.GPIOParameters=GPIO_Label,PinAttribute
PC10.GPIO_Label=E22_RST
PC10.Locked=true
PC10.PinAttribute=Free
PC10.Signal=GPIO_Output
PC11.GPIOParameters=GPIO_Speed
PC11.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC11.Mode=Single Bank 2
PC11.Signal=QUADSPI_BK2_NCS
PC12.Locked=true
PC12.Mode=Asynchronous
PC12.Signal=UART5_TX
PC13.GPIOParameters=GPIO_Label
PC13.GPIO_Label=IN_5
PC13.Locked=true
PC13.Signal=GPIO_Input
PC2_C.GPIOParameters=PinState,GPIO_Label,PinAttribute
PC2_C.GPIO_Label=OUT_0
PC2_C.Locked=true
PC2_C.PinAttribute=Free
PC2_C.PinState=GPIO_PIN_SET
PC2_C.Signal=GPIO_Output
PC3_C.GPIOParameters=PinState,GPIO_Label,PinAttribute
PC3_C.GPIO_Label=OUT_1
PC3_C.Locked=true
PC3_C.PinAttribute=Free
PC3_C.PinState=GPIO_PIN_SET
PC3_C.Signal=GPIO_Output
PC4.GPIOParameters=GPIO_Speed,PinAttribute
PC4.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC4.Mode=RMII
PC4.PinAttribute=Free
PC4.Signal=ETH_RXD0
PC5.GPIOParameters=GPIO_Speed,PinAttribute
PC5.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC5.Mode=RMII
PC5.PinAttribute=Free
PC5.Signal=ETH_RXD1
PC6.GPIOParameters=PinAttribute
PC6.Mode=Asynchronous
PC6.PinAttribute=Free
PC6.Signal=USART6_TX
PC7.GPIOParameters=GPIO_Speed,GPIO_PuPd,PinAttribute
PC7.GPIO_PuPd=GPIO_PULLUP
PC7.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PC7.Mode=Asynchronous
PC7.PinAttribute=Free
PC7.Signal=USART6_RX
PC8.GPIOParameters=GPIO_Label,PinAttribute
PC8.GPIO_Label=RS485_3_DIR
PC8.Locked=true
PC8.PinAttribute=Free
PC8.Signal=GPIO_Output
PC9.GPIOParameters=GPIO_Label,PinAttribute
PC9.GPIO_Label=RS485_4_DIR
PC9.Locked=true
PC9.PinAttribute=Free
PC9.Signal=GPIO_Output
PD0.GPIOParameters=GPIO_Label
PD0.GPIO_Label=E28_M0
PD0.Locked=true
PD0.Signal=GPIO_Output
PD1.GPIOParameters=GPIO_Label
PD1.GPIO_Label=E28_M1
PD1.Locked=true
PD1.Signal=GPIO_Output
PD10.GPIOParameters=GPIO_Label,PinAttribute
PD10.GPIO_Label=RS485_1_DIR
PD10.Locked=true
PD10.PinAttribute=Free
PD10.Signal=GPIO_Output
PD11.GPIOParameters=GPIO_Label,PinAttribute
PD11.GPIO_Label=RS485_2_DIR
PD11.Locked=true
PD11.PinAttribute=Free
PD11.Signal=GPIO_Output
PD12.GPIOParameters=PinAttribute
PD12.Mode=I2C
PD12.PinAttribute=Free
PD12.Signal=I2C4_SCL
PD13.GPIOParameters=PinAttribute
PD13.Mode=I2C
PD13.PinAttribute=Free
PD13.Signal=I2C4_SDA
PD14.GPIOParameters=PinAttribute
PD14.Locked=true
PD14.PinAttribute=Free
PD14.Signal=GPXTI14
PD2.GPIOParameters=GPIO_Speed,GPIO_PuPd
PD2.GPIO_PuPd=GPIO_PULLUP
PD2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PD2.Locked=true
PD2.Mode=Asynchronous
PD2.Signal=UART5_RX
PD3.GPIOParameters=GPIO_Label
PD3.GPIO_Label=E28_M2
PD3.Locked=true
PD3.Signal=GPIO_Output
PD4.GPIOParameters=GPIO_Label
PD4.GPIO_Label=E28_AUX
PD4.Locked=true
PD4.Signal=GPXTI4
PD5.Locked=true
PD5.Mode=Asynchronous
PD5.Signal=USART2_TX
PD6.GPIOParameters=GPIO_Speed,GPIO_PuPd
PD6.GPIO_PuPd=GPIO_PULLUP
PD6.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PD6.Locked=true
PD6.Mode=Asynchronous
PD6.Signal=USART2_RX
PD8.GPIOParameters=PinAttribute
PD8.Locked=true
PD8.Mode=Asynchronous
PD8.PinAttribute=Free
PD8.Signal=USART3_TX
PD9.GPIOParameters=GPIO_Speed,GPIO_PuPd,PinAttribute
PD9.GPIO_PuPd=GPIO_PULLUP
PD9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PD9.Mode=Asynchronous
PD9.PinAttribute=Free
PD9.Signal=USART3_RX
PE0.GPIOParameters=GPIO_Label
PE0.GPIO_Label=E22_M0
PE0.Locked=true
PE0.Signal=GPIO_Output
PE1.GPIOParameters=GPIO_Label
PE1.GPIO_Label=E22_AUX
PE1.Locked=true
PE1.Signal=GPXTI1
PE10.GPIOParameters=GPIO_Speed,PinAttribute
PE10.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PE10.Mode=Single Bank 2
PE10.PinAttribute=Free
PE10.Signal=QUADSPI_BK2_IO3
PE11.GPIOParameters=GPIO_Label,PinAttribute
PE11.GPIO_Label=EEPROM_WP
PE11.Locked=true
PE11.PinAttribute=Free
PE11.Signal=GPIO_Output
PE12.GPIOParameters=GPIO_Label,PinAttribute
PE12.GPIO_Label=EEPROM_SCL
PE12.Locked=true
PE12.PinAttribute=Free
PE12.Signal=GPIO_Output
PE13.GPIOParameters=GPIO_Label,PinAttribute
PE13.GPIO_Label=EEPROM_SDA
PE13.Locked=true
PE13.PinAttribute=Free
PE13.Signal=GPIO_Input
PE2.GPIOParameters=GPIO_Label
PE2.GPIO_Label=IN_0
PE2.Locked=true
PE2.Signal=GPIO_Input
PE3.GPIOParameters=GPIO_Label
PE3.GPIO_Label=IN_1
PE3.Locked=true
PE3.Signal=GPIO_Input
PE4.GPIOParameters=GPIO_Label
PE4.GPIO_Label=IN_2
PE4.Locked=true
PE4.Signal=GPIO_Input
PE5.GPIOParameters=GPIO_Label
PE5.GPIO_Label=IN_3
PE5.Locked=true
PE5.Signal=GPIO_Input
PE6.GPIOParameters=GPIO_Label
PE6.GPIO_Label=IN_4
PE6.Locked=true
PE6.Signal=GPIO_Input
PE7.GPIOParameters=GPIO_Speed,PinAttribute
PE7.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PE7.Mode=Single Bank 2
PE7.PinAttribute=Free
PE7.Signal=QUADSPI_BK2_IO0
PE8.GPIOParameters=GPIO_Speed,PinAttribute
PE8.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PE8.Mode=Single Bank 2
PE8.PinAttribute=Free
PE8.Signal=QUADSPI_BK2_IO1
PE9.GPIOParameters=GPIO_Speed,PinAttribute
PE9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
PE9.Mode=Single Bank 2
PE9.PinAttribute=Free
PE9.Signal=QUADSPI_BK2_IO2
PH0-OSC_IN\ (PH0).Mode=HSE-External-Oscillator
PH0-OSC_IN\ (PH0).Signal=RCC_OSC_IN
PH1-OSC_OUT\ (PH1).Mode=HSE-External-Oscillator
PH1-OSC_OUT\ (PH1).Signal=RCC_OSC_OUT
PinOutPanel.RotationAngle=0
ProjectManager.AskForMigrate=true
ProjectManager.BackupPrevious=false
ProjectManager.CompilerOptimize=6
ProjectManager.ComputerToolchain=false
ProjectManager.CoupleFile=true
ProjectManager.CustomerFirmwarePackage=
ProjectManager.DefaultFWLocation=true
ProjectManager.DeletePrevious=true
ProjectManager.DeviceId=STM32H743VGTx
ProjectManager.FirmwarePackage=STM32Cube FW_H7 V1.11.2
ProjectManager.FreePins=false
ProjectManager.HalAssertFull=false
ProjectManager.HeapSize=0x400
ProjectManager.KeepUserCode=true
ProjectManager.LastFirmware=true
ProjectManager.LibraryCopy=1
ProjectManager.MainLocation=Core/Src
ProjectManager.NoMain=false
ProjectManager.PreviousToolchain=STM32CubeIDE
ProjectManager.ProjectBuild=false
ProjectManager.ProjectFileName=BHBF_NewFiveWheel3.0.ioc
ProjectManager.ProjectName=BHBF_NewFiveWheel3.0
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x1000
ProjectManager.TargetToolchain=STM32CubeIDE
ProjectManager.ToolChainLocation=
ProjectManager.UnderRoot=true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_FDCAN1_Init-FDCAN1-false-HAL-true,5-MX_FDCAN2_Init-FDCAN2-false-HAL-true,6-MX_I2C4_Init-I2C4-false-HAL-true,7-MX_TIM1_Init-TIM1-false-HAL-true,8-MX_UART4_Init-UART4-false-HAL-true,9-MX_UART5_Init-UART5-false-HAL-true,10-MX_UART7_Init-UART7-false-HAL-true,11-MX_USART1_UART_Init-USART1-false-HAL-true,12-MX_USART3_UART_Init-USART3-false-HAL-true,13-MX_USART2_UART_Init-USART2-false-HAL-true,14-MX_USART6_UART_Init-USART6-false-HAL-true,15-MX_TIM8_Init-TIM8-false-HAL-true,16-MX_LWIP_Init-LWIP-false-HAL-false,17-MX_QUADSPI_Init-QUADSPI-false-HAL-true,18-MX_LPUART1_UART_Init-LPUART1-false-HAL-true,19-MX_ADC2_Init-ADC2-false-HAL-true,0-MX_CORTEX_M7_Init-CORTEX_M7-false-HAL-true
QUADSPI.ChipSelectHighTime=QSPI_CS_HIGH_TIME_2_CYCLE
QUADSPI.ClockMode=QSPI_CLOCK_MODE_3
QUADSPI.ClockPrescaler=4-1
QUADSPI.FifoThreshold=32
QUADSPI.FlashSize=23+1
QUADSPI.IPParameters=ClockPrescaler,FifoThreshold,SampleShifting,FlashSize,ChipSelectHighTime,ClockMode
QUADSPI.SampleShifting=QSPI_SAMPLE_SHIFTING_HALFCYCLE
RCC.ADCFreq_Value=72000000
RCC.AHB12Freq_Value=200000000
RCC.AHB4Freq_Value=200000000
RCC.APB1Freq_Value=100000000
RCC.APB2Freq_Value=100000000
RCC.APB3Freq_Value=100000000
RCC.APB4Freq_Value=100000000
RCC.AXIClockFreq_Value=200000000
RCC.CECFreq_Value=32000
RCC.CKPERFreq_Value=64000000
RCC.CortexFreq_Value=400000000
RCC.CpuClockFreq_Value=400000000
RCC.D1CPREFreq_Value=400000000
RCC.D1PPRE=RCC_APB3_DIV2
RCC.D2PPRE1=RCC_APB1_DIV2
RCC.D2PPRE2=RCC_APB2_DIV2
RCC.D3PPRE=RCC_APB4_DIV2
RCC.DFSDMACLkFreq_Value=40000000
RCC.DFSDMFreq_Value=100000000
RCC.DIVM1=2
RCC.DIVM2=25
RCC.DIVN1=64
RCC.DIVN2=288
RCC.DIVP1Freq_Value=400000000
RCC.DIVP2=4
RCC.DIVP2Freq_Value=72000000
RCC.DIVP3Freq_Value=50390625
RCC.DIVQ1=20
RCC.DIVQ1Freq_Value=40000000
RCC.DIVQ2=1
RCC.DIVQ2Freq_Value=288000000
RCC.DIVQ3Freq_Value=50390625
RCC.DIVR1=4
RCC.DIVR1Freq_Value=200000000
RCC.DIVR2Freq_Value=144000000
RCC.DIVR3Freq_Value=50390625
RCC.EnbaleCSS=true
RCC.FDCANFreq_Value=40000000
RCC.FMCFreq_Value=200000000
RCC.FamilyName=M
RCC.HCLK3ClockFreq_Value=200000000
RCC.HCLKFreq_Value=200000000
RCC.HPRE=RCC_HCLK_DIV2
RCC.HRTIMFreq_Value=200000000
RCC.I2C123Freq_Value=100000000
RCC.I2C4Freq_Value=100000000
RCC.IPParameters=ADCFreq_Value,AHB12Freq_Value,AHB4Freq_Value,APB1Freq_Value,APB2Freq_Value,APB3Freq_Value,APB4Freq_Value,AXIClockFreq_Value,CECFreq_Value,CKPERFreq_Value,CortexFreq_Value,CpuClockFreq_Value,D1CPREFreq_Value,D1PPRE,D2PPRE1,D2PPRE2,D3PPRE,DFSDMACLkFreq_Value,DFSDMFreq_Value,DIVM1,DIVM2,DIVN1,DIVN2,DIVP1Freq_Value,DIVP2,DIVP2Freq_Value,DIVP3Freq_Value,DIVQ1,DIVQ1Freq_Value,DIVQ2,DIVQ2Freq_Value,DIVQ3Freq_Value,DIVR1,DIVR1Freq_Value,DIVR2Freq_Value,DIVR3Freq_Value,EnbaleCSS,FDCANFreq_Value,FMCFreq_Value,FamilyName,HCLK3ClockFreq_Value,HCLKFreq_Value,HPRE,HRTIMFreq_Value,I2C123Freq_Value,I2C4Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPTIM345Freq_Value,LPUART1Freq_Value,LTDCFreq_Value,MCO1PinFreq_Value,MCO2PinFreq_Value,PLL1_VCI_Range-AdvancedSettings,PLL2FRACN,PLL2_VCI_Range-AdvancedSettings,PLL3_VCI_Range-AdvancedSettings,PLLFRACN,PLLSourceVirtual,QSPIFreq_Value,RNGFreq_Value,RTCFreq_Value,SAI1Freq_Value,SAI23Freq_Value,SAI4AFreq_Value,SAI4BFreq_Value,SDMMCFreq_Value,SPDIFRXFreq_Value,SPI123Freq_Value,SPI45Freq_Value,SPI6Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,Tim1OutputFreq_Value,Tim2OutputFreq_Value,TraceFreq_Value,USART16Freq_Value,USART234578Freq_Value,USBFreq_Value,VCO1OutputFreq_Value,VCO2OutputFreq_Value,VCO3OutputFreq_Value,VCOInput1Freq_Value,VCOInput2Freq_Value,VCOInput3Freq_Value
RCC.LPTIM1Freq_Value=100000000
RCC.LPTIM2Freq_Value=100000000
RCC.LPTIM345Freq_Value=100000000
RCC.LPUART1Freq_Value=100000000
RCC.LTDCFreq_Value=50390625
RCC.MCO1PinFreq_Value=64000000
RCC.MCO2PinFreq_Value=400000000
RCC.PLL1_VCI_Range-AdvancedSettings=RCC_PLL1VCIRANGE_3
RCC.PLL2FRACN=0
RCC.PLL2_VCI_Range-AdvancedSettings=RCC_PLL2VCIRANGE_0
RCC.PLL3_VCI_Range-AdvancedSettings=RCC_PLL3VCIRANGE_3
RCC.PLLFRACN=0
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
RCC.QSPIFreq_Value=200000000
RCC.RNGFreq_Value=48000000
RCC.RTCFreq_Value=32000
RCC.SAI1Freq_Value=40000000
RCC.SAI23Freq_Value=40000000
RCC.SAI4AFreq_Value=40000000
RCC.SAI4BFreq_Value=40000000
RCC.SDMMCFreq_Value=40000000
RCC.SPDIFRXFreq_Value=40000000
RCC.SPI123Freq_Value=40000000
RCC.SPI45Freq_Value=100000000
RCC.SPI6Freq_Value=100000000
RCC.SWPMI1Freq_Value=100000000
RCC.SYSCLKFreq_VALUE=400000000
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
RCC.Tim1OutputFreq_Value=200000000
RCC.Tim2OutputFreq_Value=200000000
RCC.TraceFreq_Value=200000000
RCC.USART16Freq_Value=100000000
RCC.USART234578Freq_Value=100000000
RCC.USBFreq_Value=40000000
RCC.VCO1OutputFreq_Value=800000000
RCC.VCO2OutputFreq_Value=288000000
RCC.VCO3OutputFreq_Value=100781250
RCC.VCOInput1Freq_Value=12500000
RCC.VCOInput2Freq_Value=1000000
RCC.VCOInput3Freq_Value=781250
SH.ADCx_INP5.0=ADC2_INP5,IN5-Single-Ended
SH.ADCx_INP5.ConfNb=1
SH.GPXTI1.0=GPIO_EXTI1
SH.GPXTI1.ConfNb=1
SH.GPXTI14.0=GPIO_EXTI14
SH.GPXTI14.ConfNb=1
SH.GPXTI4.0=GPIO_EXTI4
SH.GPXTI4.ConfNb=1
TIM1.AutoReloadPreload=TIM_AUTORELOAD_PRELOAD_ENABLE
TIM1.IPParameters=Prescaler,Period,AutoReloadPreload
TIM1.Period=10000-1
TIM1.Prescaler=2000-1
TIM8.IPParameters=Prescaler,Period
TIM8.Period=200-1
TIM8.Prescaler=2000-1
UART4.BaudRate=57600
UART4.IPParameters=OverrunDisableParam,BaudRate
UART4.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_ENABLE
UART5.BaudRate=100000
UART5.DMADisableonRxErrorParam=UART_ADVFEATURE_DMA_DISABLEONRXERROR
UART5.IPParameters=BaudRate,WordLength,Parity,OverrunDisableParam,DMADisableonRxErrorParam
UART5.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE
UART5.Parity=PARITY_EVEN
UART5.WordLength=WORDLENGTH_9B
UART7.BaudRate=38400
UART7.DMADisableonRxErrorParam=UART_ADVFEATURE_DMA_DISABLEONRXERROR
UART7.IPParameters=OverrunDisableParam,BaudRate,DMADisableonRxErrorParam
UART7.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE
USART1.BaudRate=115200
USART1.DMADisableonRxErrorParam=ADVFEATURE_DMA_DISABLEONRXERROR
USART1.IPParameters=VirtualMode-Asynchronous,OverrunDisableParam,DMADisableonRxErrorParam,BaudRate
USART1.OverrunDisableParam=ADVFEATURE_OVERRUN_DISABLE
USART1.VirtualMode-Asynchronous=VM_ASYNC
USART2.BaudRate=57600
USART2.DMADisableonRxErrorParam=ADVFEATURE_DMA_DISABLEONRXERROR
USART2.IPParameters=VirtualMode-Asynchronous,OverrunDisableParam,DMADisableonRxErrorParam,BaudRate
USART2.OverrunDisableParam=ADVFEATURE_OVERRUN_DISABLE
USART2.VirtualMode-Asynchronous=VM_ASYNC
USART3.BaudRate=9600
USART3.DMADisableonRxErrorParam=ADVFEATURE_DMA_DISABLEONRXERROR
USART3.FIFOMode=FIFOMODE_ENABLE
USART3.IPParameters=VirtualMode-Asynchronous,DMADisableonRxErrorParam,OverrunDisableParam,FIFOMode,BaudRate
USART3.OverrunDisableParam=ADVFEATURE_OVERRUN_DISABLE
USART3.VirtualMode-Asynchronous=VM_ASYNC
USART6.BaudRate=115200
USART6.DMADisableonRxErrorParam=ADVFEATURE_DMA_ENABLEONRXERROR
USART6.FIFOMode=FIFOMODE_ENABLE
USART6.IPParameters=VirtualMode,OverrunDisableParam,FIFOMode,DMADisableonRxErrorParam,BaudRate,SwapParam
USART6.OverrunDisableParam=ADVFEATURE_OVERRUN_DISABLE
USART6.SwapParam=ADVFEATURE_SWAP_DISABLE
USART6.VirtualMode=VM_ASYNC
VP_LWIP_VS_Enabled.Mode=Enabled
VP_LWIP_VS_Enabled.Signal=LWIP_VS_Enabled
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
VP_TIM1_VS_ClockSourceINT.Mode=Internal
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
VP_TIM8_VS_ClockSourceINT.Mode=Internal
VP_TIM8_VS_ClockSourceINT.Signal=TIM8_VS_ClockSourceINT
board=custom
isbadioc=false

18
BHBF_NewFiveWheel3.0.ioc

@ -179,19 +179,19 @@ ETH.RxBuffAddress=0x30040400
ETH.RxBuffLen=1528 ETH.RxBuffLen=1528
ETH.RxDescAddress=0x30040000 ETH.RxDescAddress=0x30040000
ETH.TxDescAddress=0x30040200 ETH.TxDescAddress=0x30040200
FDCAN1.CalculateBaudRateNominal=500000 FDCAN1.CalculateBaudRateNominal=250000
FDCAN1.CalculateTimeBitNominal=2000 FDCAN1.CalculateTimeBitNominal=4000
FDCAN1.CalculateTimeQuantumNominal=250.0 FDCAN1.CalculateTimeQuantumNominal=500.0
FDCAN1.IPParameters=NominalPrescaler,NominalTimeSeg1,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal FDCAN1.IPParameters=NominalPrescaler,NominalTimeSeg1,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal
FDCAN1.NominalPrescaler=10 FDCAN1.NominalPrescaler=20
FDCAN1.NominalTimeSeg1=5 FDCAN1.NominalTimeSeg1=5
FDCAN1.RxFifo0ElmtsNbr=32 FDCAN1.RxFifo0ElmtsNbr=32
FDCAN1.TxFifoQueueElmtsNbr=32 FDCAN1.TxFifoQueueElmtsNbr=32
FDCAN2.CalculateBaudRateNominal=500000 FDCAN2.CalculateBaudRateNominal=250000
FDCAN2.CalculateTimeBitNominal=2000 FDCAN2.CalculateTimeBitNominal=4000
FDCAN2.CalculateTimeQuantumNominal=250.0 FDCAN2.CalculateTimeQuantumNominal=500.0
FDCAN2.IPParameters=NominalPrescaler,NominalTimeSeg1,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal FDCAN2.IPParameters=NominalPrescaler,NominalTimeSeg1,RxFifo0ElmtsNbr,TxFifoQueueElmtsNbr,CalculateTimeQuantumNominal,CalculateTimeBitNominal,CalculateBaudRateNominal
FDCAN2.NominalPrescaler=10 FDCAN2.NominalPrescaler=20
FDCAN2.NominalTimeSeg1=5 FDCAN2.NominalTimeSeg1=5
FDCAN2.RxFifo0ElmtsNbr=32 FDCAN2.RxFifo0ElmtsNbr=32
FDCAN2.TxFifoQueueElmtsNbr=32 FDCAN2.TxFifoQueueElmtsNbr=32
@ -858,7 +858,7 @@ UART5.IPParameters=BaudRate,WordLength,Parity,OverrunDisableParam,DMADisableonRx
UART5.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE UART5.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE
UART5.Parity=PARITY_EVEN UART5.Parity=PARITY_EVEN
UART5.WordLength=WORDLENGTH_9B UART5.WordLength=WORDLENGTH_9B
UART7.BaudRate=115200 UART7.BaudRate=38400
UART7.DMADisableonRxErrorParam=UART_ADVFEATURE_DMA_DISABLEONRXERROR UART7.DMADisableonRxErrorParam=UART_ADVFEATURE_DMA_DISABLEONRXERROR
UART7.IPParameters=OverrunDisableParam,BaudRate,DMADisableonRxErrorParam UART7.IPParameters=OverrunDisableParam,BaudRate,DMADisableonRxErrorParam
UART7.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE UART7.OverrunDisableParam=UART_ADVFEATURE_OVERRUN_DISABLE

2
Core/Inc/main.h

@ -123,7 +123,7 @@ void Error_Handler(void);
#define hlpuart1Exit 1 #define hlpuart1Exit 1
#define NewCANSendVersion 0 #define NewCANSendVersion 1
/* USER CODE END Private defines */ /* USER CODE END Private defines */

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

@ -107,7 +107,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 951 #define GV_struct_define_size 928
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */

11
Core/Protobuf/PSource/bsp_PV.pb.h

@ -18,7 +18,6 @@ typedef struct _PV_struct_define {
int32_t Robot_Force; int32_t Robot_Force;
int64_t TimeStamp; /* 上位机发送下来的时间戳 */ int64_t TimeStamp; /* 上位机发送下来的时间戳 */
int32_t RobotRestartAccepted; /* 上位机接收到单片机发送的Restart信号 */ int32_t RobotRestartAccepted; /* 上位机接收到单片机发送的Restart信号 */
int32_t Robot_AutoWork;
} PV_struct_define; } PV_struct_define;
@ -27,8 +26,8 @@ extern "C" {
#endif #endif
/* Initializer values for message structs */ /* Initializer values for message structs */
#define PV_struct_define_init_default {0, 0, 0, 0, 0, 0, 0, 0} #define PV_struct_define_init_default {0, 0, 0, 0, 0, 0, 0}
#define PV_struct_define_init_zero {0, 0, 0, 0, 0, 0, 0, 0} #define PV_struct_define_init_zero {0, 0, 0, 0, 0, 0, 0}
/* Field tags (for use in manual encoding/decoding) */ /* Field tags (for use in manual encoding/decoding) */
#define PV_struct_define_Robot_ChgLength_tag 1 #define PV_struct_define_Robot_ChgLength_tag 1
@ -38,7 +37,6 @@ extern "C" {
#define PV_struct_define_Robot_Force_tag 5 #define PV_struct_define_Robot_Force_tag 5
#define PV_struct_define_TimeStamp_tag 6 #define PV_struct_define_TimeStamp_tag 6
#define PV_struct_define_RobotRestartAccepted_tag 7 #define PV_struct_define_RobotRestartAccepted_tag 7
#define PV_struct_define_Robot_AutoWork_tag 8
/* Struct field encoding specification for nanopb */ /* Struct field encoding specification for nanopb */
#define PV_struct_define_FIELDLIST(X, a) \ #define PV_struct_define_FIELDLIST(X, a) \
@ -48,8 +46,7 @@ X(a, STATIC, SINGULAR, DOUBLE, Robot_ManualSpeedBase, 3) \
X(a, STATIC, SINGULAR, INT32, Robot_LaneChange_Direction, 4) \ X(a, STATIC, SINGULAR, INT32, Robot_LaneChange_Direction, 4) \
X(a, STATIC, SINGULAR, INT32, Robot_Force, 5) \ X(a, STATIC, SINGULAR, INT32, Robot_Force, 5) \
X(a, STATIC, SINGULAR, INT64, TimeStamp, 6) \ X(a, STATIC, SINGULAR, INT64, TimeStamp, 6) \
X(a, STATIC, SINGULAR, INT32, RobotRestartAccepted, 7) \ X(a, STATIC, SINGULAR, INT32, RobotRestartAccepted, 7)
X(a, STATIC, SINGULAR, INT32, Robot_AutoWork, 8)
#define PV_struct_define_CALLBACK NULL #define PV_struct_define_CALLBACK NULL
#define PV_struct_define_DEFAULT NULL #define PV_struct_define_DEFAULT NULL
@ -60,7 +57,7 @@ extern const pb_msgdesc_t PV_struct_define_msg;
/* Maximum encoded size of messages (where known) */ /* Maximum encoded size of messages (where known) */
#define BSP_PV_PB_H_MAX_SIZE PV_struct_define_size #define BSP_PV_PB_H_MAX_SIZE PV_struct_define_size
#define PV_struct_define_size 84 #define PV_struct_define_size 73
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */

19
Core/Protobuf/PSource/msp_U7.pb.h

@ -26,9 +26,8 @@ typedef struct _SP_MSP_U7_Button {
int32_t M2; int32_t M2;
int32_t M6; int32_t M6;
int32_t S3; int32_t S3;
int32_t M4;
int32_t S4;
int32_t IsOnline; int32_t IsOnline;
int32_t S4;
} SP_MSP_U7_Button; } SP_MSP_U7_Button;
@ -37,8 +36,8 @@ extern "C" {
#endif #endif
/* Initializer values for message structs */ /* Initializer values for message structs */
#define SP_MSP_U7_Button_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} #define SP_MSP_U7_Button_init_default {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
#define SP_MSP_U7_Button_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} #define SP_MSP_U7_Button_init_zero {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
/* Field tags (for use in manual encoding/decoding) */ /* Field tags (for use in manual encoding/decoding) */
#define SP_MSP_U7_Button_RxIndex_tag 1 #define SP_MSP_U7_Button_RxIndex_tag 1
@ -56,9 +55,8 @@ extern "C" {
#define SP_MSP_U7_Button_M2_tag 13 #define SP_MSP_U7_Button_M2_tag 13
#define SP_MSP_U7_Button_M6_tag 14 #define SP_MSP_U7_Button_M6_tag 14
#define SP_MSP_U7_Button_S3_tag 15 #define SP_MSP_U7_Button_S3_tag 15
#define SP_MSP_U7_Button_M4_tag 16 #define SP_MSP_U7_Button_IsOnline_tag 16
#define SP_MSP_U7_Button_S4_tag 17 #define SP_MSP_U7_Button_S4_tag 18
#define SP_MSP_U7_Button_IsOnline_tag 18
/* Struct field encoding specification for nanopb */ /* Struct field encoding specification for nanopb */
#define SP_MSP_U7_Button_FIELDLIST(X, a) \ #define SP_MSP_U7_Button_FIELDLIST(X, a) \
@ -77,9 +75,8 @@ X(a, STATIC, SINGULAR, INT32, RU_Single, 12) \
X(a, STATIC, SINGULAR, INT32, M2, 13) \ X(a, STATIC, SINGULAR, INT32, M2, 13) \
X(a, STATIC, SINGULAR, INT32, M6, 14) \ X(a, STATIC, SINGULAR, INT32, M6, 14) \
X(a, STATIC, SINGULAR, INT32, S3, 15) \ X(a, STATIC, SINGULAR, INT32, S3, 15) \
X(a, STATIC, SINGULAR, INT32, M4, 16) \ X(a, STATIC, SINGULAR, INT32, IsOnline, 16) \
X(a, STATIC, SINGULAR, INT32, S4, 17) \ X(a, STATIC, SINGULAR, INT32, S4, 18)
X(a, STATIC, SINGULAR, INT32, IsOnline, 18)
#define SP_MSP_U7_Button_CALLBACK NULL #define SP_MSP_U7_Button_CALLBACK NULL
#define SP_MSP_U7_Button_DEFAULT NULL #define SP_MSP_U7_Button_DEFAULT NULL
@ -90,7 +87,7 @@ extern const pb_msgdesc_t SP_MSP_U7_Button_msg;
/* Maximum encoded size of messages (where known) */ /* Maximum encoded size of messages (where known) */
#define MSP_U7_PB_H_MAX_SIZE SP_MSP_U7_Button_size #define MSP_U7_PB_H_MAX_SIZE SP_MSP_U7_Button_size
#define SP_MSP_U7_Button_size 201 #define SP_MSP_U7_Button_size 189
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */

1
Core/Protobuf/Proto/bsp_PV.proto

@ -8,5 +8,4 @@ message PV_struct_define{
int32 Robot_Force = 5; int32 Robot_Force = 5;
int64 TimeStamp=6;// int64 TimeStamp=6;//
int32 RobotRestartAccepted=7;//Restart信号 int32 RobotRestartAccepted=7;//Restart信号
int32 Robot_AutoWork = 8;
}; };

5
Core/Protobuf/Proto/msp_U7.proto

@ -16,7 +16,6 @@ message SP_MSP_U7_Button {
int32 M2 = 13; int32 M2 = 13;
int32 M6 = 14; int32 M6 = 14;
int32 S3 = 15; int32 S3 = 15;
int32 M4 = 16; int32 IsOnline= 16;
int32 S4 = 17; int32 S4 = 18;
int32 IsOnline= 18;
} }

36
Core/Src/FSM.c

@ -53,9 +53,7 @@ transition_t MoveTransitions[] =
{ Move_ChgUp, ChgUp }, { Move_ChgUp, ChgUp },
{ Move_ChgDown, ChgDown }, { Move_ChgDown, ChgDown },
{ Move_ChgFinish, ChgFinish }, { Move_ChgFinish, ChgFinish },
{ Move_Reset, Reset }, { Move_Reset, Reset }, };
};
transition_t SwingTransitions[] = transition_t SwingTransitions[] =
{ {
@ -205,6 +203,7 @@ int JJ_Flag;
// CurrentMoveState = Move_HALT; //停车 // CurrentMoveState = Move_HALT; //停车
// } // }
//} //}
int ManualMode_Move(); int ManualMode_Move();
int ManualMode_Move() int ManualMode_Move()
{ {
@ -215,12 +214,6 @@ int ManualMode_Move()
{ {
GV.AuTo_Flag = 1; GV.AuTo_Flag = 1;
} }
if (GV.PV.Robot_AutoWork == 1
&& GV.RightFrontMotor.Velcity >= GV.Robot_AutoSpeed - 100
&& GV.LeftFrontMotor.Velcity <= -GV.Robot_AutoSpeed + 100)
{
GF_BSP_GPIO_SetIO(Out_Spray, 0);
}
return 1; // 表示已处理自动模式 return 1; // 表示已处理自动模式
} else if (P_U7->RU_Three == -1000) } else if (P_U7->RU_Three == -1000)
{ {
@ -229,24 +222,7 @@ int ManualMode_Move()
{ {
GV.AuTo_Flag = 3; GV.AuTo_Flag = 3;
} }
if (GV.PV.Robot_AutoWork == 1
&& GV.RightFrontMotor.Velcity <= -GV.Robot_AutoSpeed + 100
&& GV.LeftFrontMotor.Velcity >= GV.Robot_AutoSpeed - 100)
{
GF_BSP_GPIO_SetIO(Out_Spray, 0);
}
return 1; // 表示已处理自动模式 return 1; // 表示已处理自动模式
} else if (P_U7->RU_Three == 0)
{
if (GV.AuTo_Flag != 0)
{
GV.AuTo_Flag = 0;
if (GV.PV.Robot_AutoWork == 1)
{
GF_BSP_GPIO_SetIO(Out_Spray, 1); // 关闭喷枪
}
return 1;
}
} }
return 0; return 0;
} }
@ -493,6 +469,7 @@ void Robot_Move()
// } // }
//} //}
// //
void Front_End() void Front_End()
{ {
// 版本二:LU_Single 控制打磨电机和吸尘器(非自锁版本) // 版本二:LU_Single 控制打磨电机和吸尘器(非自锁版本)
@ -669,10 +646,6 @@ void Emergency()
void GF_Dispatch() //2ms调用一次 给车体速度等赋值 void GF_Dispatch() //2ms调用一次 给车体速度等赋值
{ {
// 如果处于复位模式,直接停车,不再执行运动逻辑 // 如果处于复位模式,直接停车,不再执行运动逻辑
if (system_mode == SYSTEM_RESET) if (system_mode == SYSTEM_RESET)
{ {
@ -718,8 +691,7 @@ void IV_control()
IV.TimeStamp = SystemTimeMiliCount * 2; //2ms一个计数,这里标记的是单片机运行时间 IV.TimeStamp = SystemTimeMiliCount * 2; //2ms一个计数,这里标记的是单片机运行时间
//if (decoded_PV.RobotRestartAccepted == 1) if (decoded_PV.RobotRestartAccepted == 1)
if (GV.PV.RobotRestartAccepted == 1)
{ {
IV.RobotRestart = 0; IV.RobotRestart = 0;
} }

4
Core/Src/fdcan.c

@ -44,7 +44,7 @@ void MX_FDCAN1_Init(void)
hfdcan1.Init.AutoRetransmission = DISABLE; hfdcan1.Init.AutoRetransmission = DISABLE;
hfdcan1.Init.TransmitPause = DISABLE; hfdcan1.Init.TransmitPause = DISABLE;
hfdcan1.Init.ProtocolException = DISABLE; hfdcan1.Init.ProtocolException = DISABLE;
hfdcan1.Init.NominalPrescaler = 10; hfdcan1.Init.NominalPrescaler = 20;
hfdcan1.Init.NominalSyncJumpWidth = 1; hfdcan1.Init.NominalSyncJumpWidth = 1;
hfdcan1.Init.NominalTimeSeg1 = 5; hfdcan1.Init.NominalTimeSeg1 = 5;
hfdcan1.Init.NominalTimeSeg2 = 2; hfdcan1.Init.NominalTimeSeg2 = 2;
@ -92,7 +92,7 @@ void MX_FDCAN2_Init(void)
hfdcan2.Init.AutoRetransmission = DISABLE; hfdcan2.Init.AutoRetransmission = DISABLE;
hfdcan2.Init.TransmitPause = DISABLE; hfdcan2.Init.TransmitPause = DISABLE;
hfdcan2.Init.ProtocolException = DISABLE; hfdcan2.Init.ProtocolException = DISABLE;
hfdcan2.Init.NominalPrescaler = 10; hfdcan2.Init.NominalPrescaler = 20;
hfdcan2.Init.NominalSyncJumpWidth = 1; hfdcan2.Init.NominalSyncJumpWidth = 1;
hfdcan2.Init.NominalTimeSeg1 = 5; hfdcan2.Init.NominalTimeSeg1 = 5;
hfdcan2.Init.NominalTimeSeg2 = 2; hfdcan2.Init.NominalTimeSeg2 = 2;

35
Core/Src/main.c

@ -59,7 +59,7 @@ int can2_DispacherPeriod = 20;
#define RS485_1_WaitTime 8 #define RS485_1_WaitTime 8
#define RS485_2_WaitTime 8 #define RS485_2_WaitTime 8
#define RS485_3_WaitTime 8 #define RS485_3_WaitTime 8
#define RS485_4_WaitTime 10 #define RS485_4_WaitTime 8
#define LTE_7S0_Serial_WaitTime 8 #define LTE_7S0_Serial_WaitTime 8
#define InterCall_DEBUG_WaitTime 8 #define InterCall_DEBUG_WaitTime 8
#define E28_SBUS_WaitTime 6 #define E28_SBUS_WaitTime 6
@ -156,12 +156,12 @@ int main(void)
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
SystemTimer_Intialize(); //加数数定时器 SystemTimer_Intialize(); //加数数定时器
GF_BSP_GPIO_SetIO(0, 0); //0�??????????????? 1�??????????????? GF_BSP_GPIO_SetIO(0, 0); //0�????????????? 1�?????????????
GF_BSP_GPIO_SetIO(1, 1); GF_BSP_GPIO_SetIO(1, 1);
HAL_Delay(5000); ////////////////////////////延时5s HAL_Delay(5000); ////////////////////////////延时5s
DLT_LOG_ENABLE_LEVEL = 0; //7 send all information 0 send nothing DLT_LOG_ENABLE_LEVEL = 0; //7 send all information 0 send nothing
Error_Detect_Intialzie(2000); //every 1 seconds Error_Detect_Intialzie(1000); //every 1 seconds
GF_Robot_Init(); GF_Robot_Init();
GV.Move_Speed = 3000; //186.9 * m/min GV.Move_Speed = 3000; //186.9 * m/min
// udp_client_init(); // udp_client_init();
@ -187,8 +187,10 @@ int main(void)
*/ */
void SystemClock_Config(void) void SystemClock_Config(void)
{ {
RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_OscInitTypeDef RCC_OscInitStruct =
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; { 0 };
RCC_ClkInitTypeDef RCC_ClkInitStruct =
{ 0 };
/** Supply configuration update enable /** Supply configuration update enable
*/ */
@ -198,7 +200,9 @@ void SystemClock_Config(void)
*/ */
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY))
{
}
/** Macro to configure the PLL clock source /** Macro to configure the PLL clock source
*/ */
@ -226,9 +230,9 @@ void SystemClock_Config(void)
/** Initializes the CPU, AHB and APB buses clocks /** Initializes the CPU, AHB and APB buses clocks
*/ */
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 | RCC_CLOCKTYPE_D3PCLK1
|RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; | RCC_CLOCKTYPE_D1PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
@ -258,10 +262,10 @@ void CV_GV_Init()
CV.SwingMoveSpeedBase = 1000; CV.SwingMoveSpeedBase = 1000;
CV.TiltMoveSpeedBase = 1000; CV.TiltMoveSpeedBase = 1000;
Motor[1] = &GV.LeftFrontMotor; //Motor[1]指向GV的电机参�??????????????? Motor[1] = &GV.LeftFrontMotor; //Motor[1]指向GV的电机参�?????????????
Motor[2] = &GV.RightFrontMotor; Motor[2] = &GV.RightFrontMotor;
// Motor[2] = &GV.LeftFrontMotor; //Motor[1]指向GV的电机参�??????????????? // Motor[2] = &GV.LeftFrontMotor; //Motor[1]指向GV的电机参�?????????????
// Motor[1] = &GV.RightFrontMotor; // Motor[1] = &GV.RightFrontMotor;
RobotSpeed = &GV.Move_Speed; //RobotSpeed指向GV的移动车体�?�度 这是整体车�?? 不是单个轮的 RobotSpeed = &GV.Move_Speed; //RobotSpeed指向GV的移动车体�?�度 这是整体车�?? 不是单个轮的
@ -322,7 +326,7 @@ void GF_Robot_Init()
force_sensor_intialize(&RS_485_2_UART_Handler); force_sensor_intialize(&RS_485_2_UART_Handler);
Ultrasonic_sensor_intialize(&RS_485_3_UART_Handler); Ultrasonic_sensor_intialize(&RS_485_3_UART_Handler);
CMCU_sensor_intialize(&RS_485_2_UART_Handler); CMCU_sensor_intialize(&RS_485_2_UART_Handler);
//Dynamometer_sensor_intialize(&RS_485_4_UART_Handler); Dynamometer_sensor_intialize(&RS_485_4_UART_Handler);
client_setting_intialize(&LPUART1_UART_Handler); //安卓 client_setting_intialize(&LPUART1_UART_Handler); //安卓
@ -336,11 +340,11 @@ void GF_Robot_Init()
TankWashing_Motor_Controller_intialize(&FD_CAN_1_Handler); TankWashing_Motor_Controller_intialize(&FD_CAN_1_Handler);
Fsm_Init(); //把遥控器指令绑定定时�??????????????? Fsm_Init(); //把遥控器指令绑定定时�?????????????
uint8_t _state = 1; uint8_t _state = 1;
_state = _state & GF_BSP_TIMER_Init(); //定时器最后启�???????????????????? _state = _state & GF_BSP_TIMER_Init(); //定时器最后启�??????????????????
} }
/* USER CODE END 4 */ /* USER CODE END 4 */
@ -349,7 +353,8 @@ void GF_Robot_Init()
void MPU_Config(void) void MPU_Config(void)
{ {
MPU_Region_InitTypeDef MPU_InitStruct = {0}; MPU_Region_InitTypeDef MPU_InitStruct =
{ 0 };
/* Disables the MPU */ /* Disables the MPU */
HAL_MPU_Disable(); HAL_MPU_Disable();

7
Core/Src/motors.c

@ -42,9 +42,9 @@ void MotorCommandsLoop()
{ {
for (int i = 1; i < 3; i++) for (int i = 1; i < 3; i++)
{ {
// Motor_ClearFault(i, FiveWheel_Motor_Controller, 4); Motor_ClearFault(i, FiveWheel_Motor_Controller, 4);
// Motor_GetFaultState(i, FiveWheel_Motor_Controller, 4); Motor_GetFaultState(i, FiveWheel_Motor_Controller, 4);
// GetCSPByCommand(i, FiveWheel_Motor_Controller, 4); GetCSPByCommand(i, FiveWheel_Motor_Controller, 4);
} }
for (int i = 1; i < 3; i++) for (int i = 1; i < 3; i++)
@ -54,7 +54,6 @@ void MotorCommandsLoop()
FiveWheel_Motor_Controller, 4); FiveWheel_Motor_Controller, 4);
ReadPosition(i, FiveWheel_Motor_Controller, 4); ReadPosition(i, FiveWheel_Motor_Controller, 4);
Motor_GetFaultState(i, FiveWheel_Motor_Controller, 4); Motor_GetFaultState(i, FiveWheel_Motor_Controller, 4);
GetCSPByCommand(i, FiveWheel_Motor_Controller, 4);
} }
} }

2
Core/Src/usart.c

@ -188,7 +188,7 @@ void MX_UART7_Init(void)
/* USER CODE END UART7_Init 1 */ /* USER CODE END UART7_Init 1 */
huart7.Instance = UART7; huart7.Instance = UART7;
huart7.Init.BaudRate = 115200; huart7.Init.BaudRate = 38400;
huart7.Init.WordLength = UART_WORDLENGTH_8B; huart7.Init.WordLength = UART_WORDLENGTH_8B;
huart7.Init.StopBits = UART_STOPBITS_1; huart7.Init.StopBits = UART_STOPBITS_1;
huart7.Init.Parity = UART_PARITY_NONE; huart7.Init.Parity = UART_PARITY_NONE;

3
readme.txt

@ -1,2 +1 @@
BHBF_NewFiveWheel3.0(02042026) BHBF_NewFiveWheel3.0(2510)
优化为拉毛的有线程序

Loading…
Cancel
Save