Commit 6a8eeb1b authored by 黄国庆's avatar 黄国庆

feat:解决编译报错

parent 54075b63
...@@ -2,6 +2,12 @@ ...@@ -2,6 +2,12 @@
[Subproject] [Subproject]
:sourceDir=..\..\source\Appliciation :sourceDir=..\..\source\Appliciation
mwWMHComm.c
mwWMHComm.h
WMHComm.c
WMHComm.h
WMHCommData.c
WMHCommData.h
api_RS485.c api_RS485.c
api_RS485.h api_RS485.h
R485_Communication_Matrix.c R485_Communication_Matrix.c
......
...@@ -177,6 +177,8 @@ void RTE_GPIO_Init(void) ...@@ -177,6 +177,8 @@ void RTE_GPIO_Init(void)
LINE_OUT_NEG_02 = 1; LINE_OUT_NEG_02 = 1;
LINE_OUT_NEG_03 = 1; LINE_OUT_NEG_03 = 1;
LINE_OUT_NEG_04 = 1; LINE_OUT_NEG_04 = 1;
#if(0) #if(0)
gpio_temp.enGPIOPort = GPIO_PORT_GROUP_0; gpio_temp.enGPIOPort = GPIO_PORT_GROUP_0;
......
...@@ -124,6 +124,9 @@ ...@@ -124,6 +124,9 @@
#define zuozhuanget GPIO_IN_PORT10_PIN07 //左转指示灯输出检测 #define zuozhuanget GPIO_IN_PORT10_PIN07 //左转指示灯输出检测
#define youzhuanget GPIO_IN_APORT00_PIN15 //右转指示灯输出检测 #define youzhuanget GPIO_IN_APORT00_PIN15 //右转指示灯输出检测
#define WMH_COMM90 GPIO_OUT_PORT00_PIN02
#define WMH_COIN GPIO_IN_PORT10_PIN15
//zh: //zh:
/****************************************************************************** /******************************************************************************
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
#include "api_RS485.h" #include "api_RS485.h"
#include "RTE_WDT.h" #include "RTE_WDT.h"
#include "R485_Communication_Matrix.h" #include "R485_Communication_Matrix.h"
#include "wmhcommdata.h"
#include "wmhcomm.h"
/******************************************************************************* /*******************************************************************************
------------------------------------------------------------------------------*/ ------------------------------------------------------------------------------*/
...@@ -223,6 +225,7 @@ void Sys_Run_Mode_100ms_Tasks_Group(void) ...@@ -223,6 +225,7 @@ void Sys_Run_Mode_100ms_Tasks_Group(void)
firstpowerflag = 2; firstpowerflag = 2;
Display_TFT_Clear(); Display_TFT_Clear();
} }
WMHCommFramePackedTransmit(EM_WMH_COMM_SEND_MSG_ICM_0x01);
} }
/*=================================================================*/ /*=================================================================*/
......
#include "wmhcomm.h" #include "wmhcomm.h"
#include "wmhcommdata.h"
#include "mwwmhcomm.h" #include "mwwmhcomm.h"
#include "TYW_stdint.h" #include "TYW_stdint.h"
#include "string.h" #include "string.h"
#include "Task.h" #include "Task.h"
#include "CAN_Communication_Matrix.h" #include "CAN_Communication_Matrix.h"
extern COMM_DATA_UNION_WI_BOX_0x01 WMHCommDataWiBox_0x01;
const WMH_COMM_INIT_FRAME_T WMHCommRecvInitList[EM_WMH_COMM_RECV_MSG_TOTAL] = { const WMH_COMM_INIT_FRAME_T WMHCommRecvInitList[EM_WMH_COMM_RECV_MSG_TOTAL] = {
{0x80u, 1000u, COMM_DATA_UNION_WI_BOX_LENGTH_0X80, 5000u, 1u, WMHCommDataWiBox_0x80.Bytes, WMHCommFrameCallBack_WiBox_0x80, WMHCommFrameTimeoutFunc_WiBox80, WMHCommFrameCheckSumFunc}, {0x80u, 1000u, COMM_DATA_UNION_WI_BOX_LENGTH_0X80, 5000u, 1u, WMHCommDataWiBox_0x80.Bytes, WMHCommFrameCallBack_WiBox_0x80, WMHCommFrameTimeoutFunc_WiBox80, WMHCommFrameCheckSumFunc},
}; };
const WMH_COMM_INIT_FRAME_T WMHCommSendInitList[EM_WMH_COMM_SEND_MSG_TOTAL] = { const SifProtocolPacket_t WMHCommSendInitList[EM_WMH_COMM_SEND_MSG_TOTAL] = {
{0x90u, 1000u, COMM_DATA_UNION_WI_BOX_LENGTH_0X90, 10000u, 1u, WMHCommDataWiBox_0x90.Bytes, WMHCommFrameCallBack_Icm, WMHCommFrameTimeoutFunc_WiBox_90, WMHCommFrameCheckSumFunc}, {0x0Du, 0X01u, 3000u, COMM_DATA_UNION_WI_TLV_LENGTH_0X01, WMHCommDataWiBox_0x01.Bytes, 1u, WMHCommFrameCallBack_WiBox_0x01, WMHCommFrameTimeoutFunc_WiBox_01, WMHCommFrameCheckSumFunc},/*车速*/
{0x91u, 1000u, COMM_DATA_UNION_WI_BOX_LENGTH_0X91, 10000u, 1u, WMHCommDataWiBox_0x91.Bytes, WMHCommFrameCallBack_Icm, WMHCommFrameTimeoutFunc_WiBox_91, WMHCommFrameCheckSumFunc},
{0x92u, 1000u, COMM_DATA_UNION_WI_BOX_LENGTH_0X92, 10000u, 1u, WMHCommDataWiBox_0x92.Bytes, WMHCommFrameCallBack_Icm, WMHCommFrameTimeoutFunc_WiBox_92, WMHCommFrameCheckSumFunc},
}; };
uint32_t WMHCommRecvMessageTimeout[EM_WMH_COMM_RECV_MSG_TOTAL] = {0}; uint32_t WMHCommRecvMessageTimeout[EM_WMH_COMM_RECV_MSG_TOTAL] = {0};
...@@ -22,52 +24,56 @@ uint32_t WMHCommAnalysisPos = 0; ...@@ -22,52 +24,56 @@ uint32_t WMHCommAnalysisPos = 0;
void WMHCommInit(void) void WMHCommInit(void)
{ {
uint8_t i = 0; uint8_t i = 0;
for (i = 0; i < EM_WMH_COMM_RECV_MSG_TOTAL; i++) { // for (i = 0; i < EM_WMH_COMM_RECV_MSG_TOTAL; i++) {
(void)memset(WMHCommRecvInitList[i].SignalList, 0, WMHCommRecvInitList[i].DLC); // (void)memset(WMHCommRecvInitList[i].dataLength, 0, WMHCommRecvInitList[i].dataLength);
WMHCommRecvMessageTimeout[i] = WMHCommRecvInitList[i].TimeoutMax; // WMHCommRecvMessageTimeout[i] = WMHCommRecvInitList[i].TimeoutMax;
} // }
for (i = 0; i < EM_WMH_COMM_SEND_MSG_TOTAL; i++) { for (i = 0; i < EM_WMH_COMM_SEND_MSG_TOTAL; i++) {
(void)memset(WMHCommSendInitList[i].SignalList, 0, WMHCommSendInitList[i].DLC); (void)memset(WMHCommSendInitList[i].tlvArray, 0, WMHCommSendInitList[i].dataLength);
WMHCommSendMessageTimeout[i] = WMHCommSendInitList[i].TimeoutMax; WMHCommSendMessageTimeout[i] = WMHCommSendInitList[i].TimeoutMax;
} }
WMHCommAnalysisPos = 0; WMHCommAnalysisPos = 0;
} }
/*
协议号 设备号 数据总长度 TLVs 前面数据累加和
0x0D 0x01 TLV数据总长度 qq sumcrc
*/
void WMHCommFramePackedTransmit(EM_WMH_COMM_SEND_MSG_T MsgIdx) void WMHCommFramePackedTransmit(EM_WMH_COMM_SEND_MSG_T MsgIdx)
{ {
uint8_t data[64] = {0}; uint8_t data[64] = {0};
uint8_t length = 0; uint8_t length = 0;
if ((MsgIdx < EM_WMH_COMM_SEND_MSG_TOTAL) && (MsgIdx > 0)){ if ((MsgIdx < EM_WMH_COMM_SEND_MSG_TOTAL) && (MsgIdx > 0)){
if ((WMHCommSendInitList[MsgIdx].DLC + 4) <= 64) { if ((WMHCommSendInitList[MsgIdx].dataLength + 4) <= 64) {
if (WMHCommSendInitList[MsgIdx].FrameCallBackFunc != NULL_P) { // if (WMHCommSendInitList[MsgIdx].FrameCallBackFunc != NULL_P) {
WMHCommSendInitList[MsgIdx].FrameCallBackFunc(); // WMHCommSendInitList[MsgIdx].FrameCallBackFunc();
} // }
data[0] = WMHCommSendInitList[MsgIdx].ID;//id data[0] = WMHCommSendInitList[MsgIdx].protocolNumber;//协议号
data[1] = WMH_COMM_PROTOCOL_VERSION;//主协议版本 data[1] = WMHCommSendInitList[MsgIdx].deviceNumber;//设备
data[2] = WMHCommSendInitList[MsgIdx].DLC + 1u;//数据长度 data[2] = WMHCommSendInitList[MsgIdx].dataLength + 1u;//数据长度
(void)memcpy(&data[3], WMHCommSendInitList[MsgIdx].SignalList, WMHCommSendInitList[MsgIdx].DLC); (void)memcpy(&data[3], WMHCommSendInitList[MsgIdx].tlvArray, WMHCommSendInitList[MsgIdx].dataLength);
data[3 + WMHCommSendInitList[MsgIdx].DLC] = WMHCommSendInitList[MsgIdx].FrameGetCheckSum(WMHCommSendInitList[MsgIdx].ID, WMHCommSendInitList[MsgIdx].DLC, data[1], WMHCommSendInitList[MsgIdx].SignalList); data[3 + WMHCommSendInitList[MsgIdx].dataLength] = WMHCommSendInitList[MsgIdx].FrameGetCheckSum(WMHCommSendInitList[MsgIdx].dataLength, WMHCommSendInitList[MsgIdx].dataLength, data[1], WMHCommSendInitList[MsgIdx].tlvArray);
length = WMHCommSendInitList[MsgIdx].DLC + 4u; length = WMHCommSendInitList[MsgIdx].dataLength + 4u;
mwWMHCommTransmitBytes(data, length); mwWMHCommTransmitBytes(data, length);
WMHCommSendMessageTimeout[MsgIdx] = WMHCommSendInitList[MsgIdx].TimeoutMax; WMHCommSendMessageTimeout[MsgIdx] = WMHCommSendInitList[MsgIdx].TimeoutMax;
} }
} }
else if(MsgIdx == 0) // else if(MsgIdx == 0)
{ // {
if ((WMHCommSendInitList[MsgIdx].DLC + 4) <= 64) { // if ((WMHCommSendInitList[MsgIdx].DLC + 4) <= 64) {
if (WMHCommSendInitList[MsgIdx].FrameCallBackFunc != NULL_P) { // // if (WMHCommSendInitList[MsgIdx].FrameCallBackFunc != NULL_P) {
WMHCommSendInitList[MsgIdx].FrameCallBackFunc(); // // WMHCommSendInitList[MsgIdx].FrameCallBackFunc();
} // // }
data[0] = WMHCommSendInitList[MsgIdx].ID;//id // data[0] = WMHCommSendInitList[MsgIdx].ID;//id
data[1] = WMH_COMM_PROTOCOL_VERSION;//主协议版本号 // data[1] = WMH_COMM_PROTOCOL_VERSION;//主协议版本号
data[2] = WMHCommSendInitList[MsgIdx].DLC + 1u;//数据长度 // data[2] = WMHCommSendInitList[MsgIdx].DLC + 1u;//数据长度
(void)memcpy(&data[3], WMHCommSendInitList[MsgIdx].SignalList, WMHCommSendInitList[MsgIdx].DLC); // (void)memcpy(&data[3], WMHCommSendInitList[MsgIdx].SignalList, WMHCommSendInitList[MsgIdx].DLC);
data[3 + WMHCommSendInitList[MsgIdx].DLC] = WMHCommSendInitList[MsgIdx].FrameGetCheckSum(WMHCommSendInitList[MsgIdx].ID, WMHCommSendInitList[MsgIdx].DLC, data[1], WMHCommSendInitList[MsgIdx].SignalList); // data[3 + WMHCommSendInitList[MsgIdx].DLC] = WMHCommSendInitList[MsgIdx].FrameGetCheckSum(WMHCommSendInitList[MsgIdx].ID, WMHCommSendInitList[MsgIdx].DLC, data[1], WMHCommSendInitList[MsgIdx].SignalList);
length = WMHCommSendInitList[MsgIdx].DLC + 4u; // length = WMHCommSendInitList[MsgIdx].DLC + 4u;
mwWMHCommTransmitBytes_90(data, length); // mwWMHCommTransmitBytes_90(data, length);
WMHCommSendMessageTimeout[MsgIdx] = WMHCommSendInitList[MsgIdx].TimeoutMax; // WMHCommSendMessageTimeout[MsgIdx] = WMHCommSendInitList[MsgIdx].TimeoutMax;
} // }
} // }
} }
void WMHCommFrameUnpacked(uint8_t *data, uint32_t length) void WMHCommFrameUnpacked(uint8_t *data, uint32_t length)
...@@ -82,7 +88,7 @@ void WMHCommFrameUnpacked(uint8_t *data, uint32_t length) ...@@ -82,7 +88,7 @@ void WMHCommFrameUnpacked(uint8_t *data, uint32_t length)
WMHCommRecvInitList[i].FrameCallBackFunc(); WMHCommRecvInitList[i].FrameCallBackFunc();
} }
WMHCommRecvMessageTimeout[i] = WMHCommRecvInitList[i].TimeoutMax; WMHCommRecvMessageTimeout[i] = WMHCommRecvInitList[i].TimeoutMax;
Can_Msg_Tx_Overwrite(&CAN_CH4_CanMsgTxOp,0u,1u,1000u); //Can_Msg_Tx_Overwrite(&CAN_CH4_CanMsgTxOp,0u,1u,1000u);
} }
} }
......
#ifndef __WMH_COMM_H_ #ifndef __WMH_COMM_H_
#define __WMH_COMM_H_ #define __WMH_COMM_H_
#include "TYW_stdint.h" #include "TYW_stdint.h"
#include "mwwmhcomm.h"
#include "wmhcomm.h"
#include "wmhcommdata.h"
#define NULL_P (void *)0 #define NULL_P (void *)0
typedef struct { typedef struct {
...@@ -16,6 +18,7 @@ typedef struct { ...@@ -16,6 +18,7 @@ typedef struct {
uint8_t (*FrameGetCheckSum)(uint32_t ID, uint8_t DLC, uint8_t ProtocolVersion, uint8_t *data); //接收报文时调用该函数,返回1表示checksum正确,0表示错误,如果错误,则不会调用FrameAnalysisFunc函数 uint8_t (*FrameGetCheckSum)(uint32_t ID, uint8_t DLC, uint8_t ProtocolVersion, uint8_t *data); //接收报文时调用该函数,返回1表示checksum正确,0表示错误,如果错误,则不会调用FrameAnalysisFunc函数
} WMH_COMM_INIT_FRAME_T; } WMH_COMM_INIT_FRAME_T;
typedef enum { typedef enum {
EM_WMH_COMM_RECV_MSG_WI_BOX_0x80 = 0, EM_WMH_COMM_RECV_MSG_WI_BOX_0x80 = 0,
// EM_WMH_COMM_RECV_MSG_WI_BOX_0x91, // EM_WMH_COMM_RECV_MSG_WI_BOX_0x91,
...@@ -24,18 +27,64 @@ typedef enum { ...@@ -24,18 +27,64 @@ typedef enum {
} EM_WMH_COMM_RECV_MSG_T; } EM_WMH_COMM_RECV_MSG_T;
typedef enum { typedef enum {
// EM_WMH_COMM_SEND_MSG_ICM_0x80 = 0, EM_WMH_COMM_SEND_MSG_ICM_0x01 = 0,
EM_WMH_COMM_SEND_MSG_ICM_0x90 = 0,
EM_WMH_COMM_SEND_MSG_ICM_0x91,
EM_WMH_COMM_SEND_MSG_ICM_0x92,
EM_WMH_COMM_SEND_MSG_TOTAL, EM_WMH_COMM_SEND_MSG_TOTAL,
} EM_WMH_COMM_SEND_MSG_T; } EM_WMH_COMM_SEND_MSG_T;
#define SIF_MAX_TLV_COUNT (20U)
/*===========================================================================*/
/* Type Definitions */
/*===========================================================================*/
/**
* @brief TLV结构体
*/
typedef struct {
uint8_t tag; /**< Tag标识 */
uint8_t length; /**< 数据长度 */
const uint8_t* pValue; /**< 数据指针 */
} SifTlv_t;
/**
* @brief 协议包结构体
*/#define COMM_DATA_UNION_WI_TLV_LENGTH_0X01 10
typedef union {
struct
{
uint8_t Data01_Byte1 :8;
uint8_t Data01_Byte2 :8;/*车速高*/
uint8_t Data01_Byte3 :8;/*车速低*/
uint8_t Data01_Byte4 :8;/*运行电流*/
uint8_t Data01_Byte5 :8;//控制器标称电压
uint8_t Data01_Byte6 :8;
uint8_t Data01_Byte7 :8;
uint8_t Data01_Byte8 :8;
uint8_t Data01_Byte9 :8;
uint8_t Data01_Byte10 :8;
} bits;
uint8_t Bytes[COMM_DATA_UNION_WI_TLV_LENGTH_0X01];
} COMM_DATA_UNION_WI_BOX_0x01;
typedef struct {
uint8_t protocolNumber; /**< 协议号 */
uint8_t deviceNumber; /**< 设备号 */
uint16_t TimeoutMax; //最大超时时间,单位ms;
uint8_t dataLength; /**< TLV数据总长度(不含头、长度本身、校验和) */
COMM_DATA_UNION_WI_BOX_0x01 *tlvArray; /**< TLV数组 */
uint8_t tlvCount; /**< TLV数量 */
void (*FrameCallBackFunc)(void); //收到报文时会调用该回调函数;
void (*FrameTimeoutFunc)(void); //TimeoutMax超时时会调用FrameTimeoutFunc(0),TimeoutLv[0]超时时调用FrameTimeoutFunc(1),TimeoutLv[1]超时时调用FrameTimeoutFunc(2),TimeoutLv[2]超时时调用FrameTimeoutFunc(3);
uint8_t (*FrameGetCheckSum)(uint32_t ID, uint8_t DLC, uint8_t ProtocolVersion, uint8_t *data); //接收报文时调用该函数,返回1表示checksum正确,0表示错误,如果错误,则不会调用FrameAnalysisFunc函数
} SifProtocolPacket_t;
extern void WMHCommInit(void); extern void WMHCommInit(void);
extern void WMHCommService(uint32_t TimerDelta); extern void WMHCommService(uint32_t TimerDelta);
extern void WMHCommFramePackedTransmit(EM_WMH_COMM_SEND_MSG_T MsgIdx); extern void WMHCommFramePackedTransmit(EM_WMH_COMM_SEND_MSG_T MsgIdx);
extern uint8_t WMHCommFrameGetRecvTimeoutSt(uint8_t n); extern uint8_t WMHCommFrameGetRecvTimeoutSt(uint8_t n);
#endif #endif
...@@ -20,9 +20,11 @@ uint8_t WMHCommFrameCheckSumFunc(uint32_t ID, uint8_t DLC, uint8_t ProtocolVersi ...@@ -20,9 +20,11 @@ uint8_t WMHCommFrameCheckSumFunc(uint32_t ID, uint8_t DLC, uint8_t ProtocolVersi
*******************************************************************************************/ *******************************************************************************************/
extern const WMH_COMM_INIT_FRAME_T WMHCommRecvInitList[EM_WMH_COMM_RECV_MSG_TOTAL]; extern const WMH_COMM_INIT_FRAME_T WMHCommRecvInitList[EM_WMH_COMM_RECV_MSG_TOTAL];
COMM_DATA_UNION_WI_BOX_0x80 WMHCommDataWiBox_0x80; COMM_DATA_UNION_WI_BOX_0x80 WMHCommDataWiBox_0x80;
COMM_DATA_UNION_WI_BOX_0x90 WMHCommDataWiBox_0x90;
COMM_DATA_UNION_WI_BOX_0x91 WMHCommDataWiBox_0x91; COMM_DATA_UNION_WI_BOX_0x91 WMHCommDataWiBox_0x91;
COMM_DATA_UNION_WI_BOX_0x92 WMHCommDataWiBox_0x92; COMM_DATA_UNION_WI_BOX_0x92 WMHCommDataWiBox_0x92;
/*黄国庆添加台铃*/
COMM_DATA_UNION_WI_BOX_0x01 WMHCommDataWiBox_0x01;
void WMHCommFrameCallBack_WiBox_0x80(void) void WMHCommFrameCallBack_WiBox_0x80(void)
{ {
...@@ -38,12 +40,17 @@ void WMHCommFrameCallBack_WiBox_0x91(void) ...@@ -38,12 +40,17 @@ void WMHCommFrameCallBack_WiBox_0x91(void)
uint8_t tmpCond = 0; uint8_t tmpCond = 0;
} }
void WMHCommFrameCallBack_WiBox_0x01(void)
{
uint8_t tmpCond = 0;
}
void WMHCommFrameTimeoutFunc_WiBox(void) void WMHCommFrameTimeoutFunc_WiBox(void)
{ {
// 替代第一个 memset // // 替代第一个 memset
for (int i = 0; i < COMM_DATA_UNION_WI_BOX_LENGTH_0X90; i++) { // for (int i = 0; i < COMM_DATA_UNION_WI_BOX_LENGTH_0X90; i++) {
WMHCommDataWiBox_0x90.Bytes[i] = 0; // WMHCommDataWiBox_0x90.Bytes[i] = 0;
} // }
// 替代第二个 memset // 替代第二个 memset
for (int i = 0; i < COMM_DATA_UNION_WI_BOX_LENGTH_0X91; i++) { for (int i = 0; i < COMM_DATA_UNION_WI_BOX_LENGTH_0X91; i++) {
...@@ -56,11 +63,11 @@ void WMHCommFrameTimeoutFunc_WiBox(void) ...@@ -56,11 +63,11 @@ void WMHCommFrameTimeoutFunc_WiBox(void)
} }
} }
void WMHCommFrameTimeoutFunc_WiBox_90(void) void WMHCommFrameTimeoutFunc_WiBox_01(void)
{ {
// 替代第一个 memset // 替代第一个 memset
for (int i = 0; i < COMM_DATA_UNION_WI_BOX_LENGTH_0X90; i++) { for (int i = 0; i < COMM_DATA_UNION_WI_TLV_LENGTH_0X01; i++) {
WMHCommDataWiBox_0x90.Bytes[i] = 0; WMHCommDataWiBox_0x01.Bytes[i] = 0;
} }
} }
......
#ifndef __WMH_COMM_DATA_H_ #ifndef __WMH_COMM_DATA_H_
#define __WMH_COMM_DATA_H_ #define __WMH_COMM_DATA_H_
#include "TYW_stdint.h" #include "TYW_stdint.h"
#include "wmhcomm.h"
#include "wmhcommdata.h"
#include "wmhcommdata.h"
#define WMH_COMM_PROTOCOL_VERSION 0x2F; #define WMH_COMM_PROTOCOL_VERSION 0x2F;
#define COMM_DATA_UNION_WI_BOX_LENGTH_0X80 13 #define COMM_DATA_UNION_WI_BOX_LENGTH_0X80 13
...@@ -52,111 +54,8 @@ typedef union { ...@@ -52,111 +54,8 @@ typedef union {
} COMM_DATA_UNION_WI_BOX_0x80; } COMM_DATA_UNION_WI_BOX_0x80;
extern COMM_DATA_UNION_WI_BOX_0x80 WMHCommDataWiBox_0x80; extern COMM_DATA_UNION_WI_BOX_0x80 WMHCommDataWiBox_0x80;
#define COMM_DATA_UNION_WI_BOX_LENGTH_0X90 16
typedef union {
struct
{
// // ===================== Byte0 =====================
// uint8_t ProductModel :6; // 产品型号
// uint8_t ManufacturerCodingRules :2; // 厂家编码规则
// // ===================== Byte1 =====================
// uint8_t DeviceEncoding :8; // 设备编码
// // ===================== Byte2 ===================== // extern COMM_DATA_UNION_WI_BOX_0x01 WMHCommDataWiBox_0x01;
// uint8_t SerialNumberL :8; // 流水号
// // ===================== Byte3 =====================
// uint8_t FaultStatus :1; // 故障状态
// uint8_t ConstantSpeedStatus :1; // 定速巡航状态
// uint8_t GearPStatus :1; // P档状态
// uint8_t ReadyStatus :1; // READY状态
// uint8_t SerialNumberH :4; // 流水号高字节4位
// // ===================== Byte4 =====================
// uint8_t EstimateMileage_H :8; // 预估里程高字节
// // ===================== Byte5 =====================
// uint8_t EstimateMileage_L :8; // 预估里程低字节
// // ===================== Byte6 =====================
// uint8_t EnergyConsumption :8; // 能耗系数
// // ===================== Byte7 =====================
// uint8_t Fault8 :1; // 电机缺相故障
// uint8_t Fault7 :1; // 堵转保护故障
// uint8_t Fault6 :1; // 欠压保护故障
// uint8_t Fault5 :1; // 转把故障
// uint8_t Fault4 :1; // 控制器MOS管故障
// uint8_t Fault3 :1; // 刹车故障
// uint8_t Fault2 :1; // 电机霍尔故障
// uint8_t Fault1 :1; // 过压保护故障
// // ===================== Byte8 =====================
// uint8_t Fault16 :1; // 电池充电过流保护故障
// uint8_t Fault15 :1; // 电池SOC过低故障
// uint8_t Fault14 :1; // 电池总压欠压保护故障
// uint8_t Fault13 :1; // 电池总压过压保护故障
// uint8_t Fault12 :1; // 电池放电MOS故障
// uint8_t Fault11 :1; // 电池充电MOS故障
// uint8_t Fault10 :1; // 控制器过热故障
// uint8_t Fault9 :1; // 电机过热故障
// // ===================== Byte9 =====================
// uint8_t Reserved3 :2; // 预留位3
// uint8_t Fault22 :1; // 电池放电握手失败故障
// uint8_t Fault21 :1; // 电池充电过温保护故障
// uint8_t Fault20 :1; // 电池充电低温保护故障
// uint8_t Fault19 :1; // 电池放电过温保护故障
// uint8_t Fault18 :1; // 电池放电低温保护故障
// uint8_t Fault17 :1; // 电池放电过流保护故障
// // ===================== Byte10 =====================
// uint8_t Espeed_H :8; // 电机脉冲数高字节
// // ===================== Byte11 =====================
// uint8_t Espeed_L :8; // 电机脉冲数低字节
// // ===================== Byte12 =====================
// uint8_t Electricity :8; // 电量
// // ===================== Byte13 =====================
// uint8_t Reserved5 :3; // 预留位5
// uint8_t TCSopen :1; // TCS功能开启
// uint8_t TCSa :1; // TCS动作中
// uint8_t Fault23 :1; // 控制器过流故障
// uint8_t GEAR :1; // 1:S档 0:D档
// uint8_t FaultLED :1; // 故障指示灯
// // ===================== Byte14 =====================
// uint8_t BurglarStatus :1; // 防盗状态
// uint8_t Reserved4 :4; // 预留位4
// uint8_t CartStatus :1; // 推车状态
// uint8_t SideBraceStatus :1; // 边撑状态
// uint8_t EBSStatus :1; // EBS状态
// // ===================== Byte15 =====================
// uint8_t VSpeed :8; // 车速
uint8_t Data90_Byte1 :8;
uint8_t Data90_Byte2 :8;
uint8_t Data90_Byte3 :8;
uint8_t Data90_Byte4 :8;
uint8_t Data90_Byte5 :8;
uint8_t Data90_Byte6 :8;
uint8_t Data90_Byte7 :8;
uint8_t Data90_Byte8 :8;
uint8_t Data90_Byte9 :8;
uint8_t Data90_Byte10 :8;
uint8_t Data90_Byte11 :8;
uint8_t Data90_Byte12 :8;
uint8_t Data90_Byte13 :8;
uint8_t Data90_Byte14 :8;
uint8_t Data90_Byte15 :8;
uint8_t Data90_Byte16 :8;
} bits;
uint8_t Bytes[COMM_DATA_UNION_WI_BOX_LENGTH_0X90];
} COMM_DATA_UNION_WI_BOX_0x90;
extern COMM_DATA_UNION_WI_BOX_0x90 WMHCommDataWiBox_0x90;
#define COMM_DATA_UNION_WI_BOX_LENGTH_0X91 12 #define COMM_DATA_UNION_WI_BOX_LENGTH_0X91 12
typedef union { typedef union {
...@@ -283,7 +182,6 @@ typedef union { ...@@ -283,7 +182,6 @@ typedef union {
} COMM_DATA_UNION_ICM; } COMM_DATA_UNION_ICM;
extern COMM_DATA_UNION_ICM WMHCommDataIcm; extern COMM_DATA_UNION_ICM WMHCommDataIcm;
extern COMM_DATA_UNION_WI_BOX_0x90 WMHCommDataWiBox_0x90;
extern COMM_DATA_UNION_WI_BOX_0x91 WMHCommDataWiBox_0x91; extern COMM_DATA_UNION_WI_BOX_0x91 WMHCommDataWiBox_0x91;
extern COMM_DATA_UNION_WI_BOX_0x92 WMHCommDataWiBox_0x92; extern COMM_DATA_UNION_WI_BOX_0x92 WMHCommDataWiBox_0x92;
...@@ -301,6 +199,9 @@ extern void WMHCommFrameTimeoutFunc_WiBox80(void); ...@@ -301,6 +199,9 @@ extern void WMHCommFrameTimeoutFunc_WiBox80(void);
extern void WMHCommFrameCallBack_Icm(void); extern void WMHCommFrameCallBack_Icm(void);
extern void WMHCommFrameTimeoutFunc_Icm(void); extern void WMHCommFrameTimeoutFunc_Icm(void);
/*台铃-黄国庆*/
extern void WMHCommFrameTimeoutFunc_WiBox_01(void);
extern void WMHCommFrameCallBack_WiBox_0x01(void);
#endif #endif
#include "mwwmhcomm.h" #include "mwwmhcomm.h"
#include "wmhcomm.h"
#include "wmhcommdata.h"
#include "TYW_stdint.h" #include "TYW_stdint.h"
#include "string.h" #include "string.h"
#include "gpio.h" #include "gpio.h"
...@@ -275,7 +277,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts) ...@@ -275,7 +277,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts)
mwWMHCommSerialBuffer[n].OptCnts = mwWMHCommSerialBuffer[n].OptCnts % MAX_SERIAL_BUFF_SIZE; mwWMHCommSerialBuffer[n].OptCnts = mwWMHCommSerialBuffer[n].OptCnts % MAX_SERIAL_BUFF_SIZE;
//RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low); //RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low);
// GPIOB->PBSC = (1 << (11 + 16)); // GPIOB->PBSC = (1 << (11 + 16));
WMH_COMM = 0; //WMH_COMM = 0;
//PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum); //PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum);
} }
}break; }break;
...@@ -287,19 +289,19 @@ void mwWMHCommSendIsr(uint32_t tmpCnts) ...@@ -287,19 +289,19 @@ void mwWMHCommSendIsr(uint32_t tmpCnts)
if (mwWMHCommFrameTimerCnts[n].LowLevelTime < mwWMHCommSequentialParams[tmpFrame].Standard.LowLevelTime) { if (mwWMHCommFrameTimerCnts[n].LowLevelTime < mwWMHCommSequentialParams[tmpFrame].Standard.LowLevelTime) {
//RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low); //RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low);
// GPIOB->PBSC = (1 << (11 + 16)); // GPIOB->PBSC = (1 << (11 + 16));
WMH_COMM = 0; //WMH_COMM = 0;
//PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum); //PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum);
mwWMHCommFrameTimerCnts[n].LowLevelTime += tmpCnts; mwWMHCommFrameTimerCnts[n].LowLevelTime += tmpCnts;
if (mwWMHCommFrameTimerCnts[n].LowLevelTime >= mwWMHCommSequentialParams[tmpFrame].Standard.LowLevelTime) { if (mwWMHCommFrameTimerCnts[n].LowLevelTime >= mwWMHCommSequentialParams[tmpFrame].Standard.LowLevelTime) {
// GPIOB->PBSC = (1 << 11); // GPIOB->PBSC = (1 << 11);
WMH_COMM = 1; //WMH_COMM = 1;
//RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_High); //RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_High);
//PORT_SetBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum); //PORT_SetBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum);
} }
} else if (mwWMHCommFrameTimerCnts[n].HighLevelTime < mwWMHCommSequentialParams[tmpFrame].Standard.HighLevelTime) { } else if (mwWMHCommFrameTimerCnts[n].HighLevelTime < mwWMHCommSequentialParams[tmpFrame].Standard.HighLevelTime) {
//RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_High); //RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_High);
// GPIOB->PBSC = (1 << 11); // GPIOB->PBSC = (1 << 11);
WMH_COMM = 1; //WMH_COMM = 1;
//PORT_SetBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum); //PORT_SetBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum);
mwWMHCommFrameTimerCnts[n].HighLevelTime += tmpCnts; mwWMHCommFrameTimerCnts[n].HighLevelTime += tmpCnts;
if (mwWMHCommFrameTimerCnts[n].HighLevelTime >= mwWMHCommSequentialParams[tmpFrame].Standard.HighLevelTime) { if (mwWMHCommFrameTimerCnts[n].HighLevelTime >= mwWMHCommSequentialParams[tmpFrame].Standard.HighLevelTime) {
...@@ -308,7 +310,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts) ...@@ -308,7 +310,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts)
if (tmpFrame != EM_WMH_COMM_FRAME_STOP) { if (tmpFrame != EM_WMH_COMM_FRAME_STOP) {
//RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low); //RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low);
// GPIOB->PBSC = (1 << (11 + 16)); // GPIOB->PBSC = (1 << (11 + 16));
WMH_COMM = 0; //WMH_COMM = 0;
//PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum); //PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum);
if (mwWMHCommSerialBuffer[n].Bit >= 8) { if (mwWMHCommSerialBuffer[n].Bit >= 8) {
mwWMHCommSerialBuffer[n].Bit = 0; mwWMHCommSerialBuffer[n].Bit = 0;
...@@ -320,7 +322,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts) ...@@ -320,7 +322,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts)
mwWMHCommSerialBuffer[n].Valid = 0; mwWMHCommSerialBuffer[n].Valid = 0;
//RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low); //RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_Low);
// GPIOB->PBSC = (1 << (11 + 16)); // GPIOB->PBSC = (1 << (11 + 16));
WMH_COMM = 0; //WMH_COMM = 0;
//PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum); //PORT_ClrBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum);
} }
} }
...@@ -336,7 +338,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts) ...@@ -336,7 +338,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts)
} else { } else {
//RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_High); //RTE_GPIO_Config(RTE_GPIO_PORTB_PIN11, GpioOut_High);
// GPIOB->PBSC = (1 << 11); // GPIOB->PBSC = (1 << 11);
WMH_COMM = 1; //WMH_COMM = 1;
//PORT_SetBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum); //PORT_SetBit(GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinGroup, GpioMapData[mwWMHCommPin[n]].IoPara.McuIo.pinNum);
mwWMHCommFrame[n] = EM_WMH_COMM_FRAME_STANDBAY; mwWMHCommFrame[n] = EM_WMH_COMM_FRAME_STANDBAY;
} }
...@@ -346,7 +348,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts) ...@@ -346,7 +348,7 @@ void mwWMHCommSendIsr(uint32_t tmpCnts)
default: { default: {
// GPIOB->PBSC = (1 << 11); // GPIOB->PBSC = (1 << 11);
WMH_COMM = 1; //WMH_COMM = 1;
//PORT_SetBit(GpioMapData[n].IoPara.McuIo.pinGroup, GpioMapData[n].IoPara.McuIo.pinNum); //PORT_SetBit(GpioMapData[n].IoPara.McuIo.pinGroup, GpioMapData[n].IoPara.McuIo.pinNum);
mwWMHCommFrame[n] = EM_WMH_COMM_FRAME_STANDBAY; mwWMHCommFrame[n] = EM_WMH_COMM_FRAME_STANDBAY;
}break; }break;
......
#ifndef __MW_WMH_COMM_H_ #ifndef __MW_WMH_COMM_H_
#define __MW_WMH_COMM_H_ #define __MW_WMH_COMM_H_
#include "TYW_stdint.h" #include "TYW_stdint.h"
#include "wmhcomm.h"
#include "wmhcommdata.h"
#define NULL_P (void *)0 #define NULL_P (void *)0
typedef enum { typedef enum {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment