NULL
This commit is contained in:
123
user/Protocol/CommProcess.c
Executable file
123
user/Protocol/CommProcess.c
Executable file
@@ -0,0 +1,123 @@
|
||||
#include "../main/SystemInclude.h"
|
||||
|
||||
const u32 baudRateVaule[6] ={4800, 9600, 19200, 38400, 57600, 115200};
|
||||
|
||||
COM_DATA_TypeDef comState;
|
||||
|
||||
void StartDMAForRxdMainUartData(void)
|
||||
{
|
||||
#ifndef ENABLE_TURN_OFF_RS485
|
||||
#pragma message("[undefined] ENABLE_TURN_OFF_RS485")
|
||||
#elif(ENABLE_TURN_OFF_RS485)
|
||||
RS485_Enable_RX();
|
||||
#endif
|
||||
comState.state.ReceivedData = 0 ; //<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
|
||||
comState.state.SendingData = 0 ; //<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>б<EFBFBD>־
|
||||
DMA_UART_AnyLength_Rx_Init(baudRateVaule[baudRate]);//<2F><>ʼ<EFBFBD><CABC>UART DMA<4D><41><EFBFBD>ղ<EFBFBD><D5B2><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
comState.state.ReceivedData = 0 ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||
}
|
||||
|
||||
|
||||
void DMAForUART_Tx_Callback(void)
|
||||
{
|
||||
comState.state.SendingData = 0 ; //UART DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
LHL_DMA_Stop(&DMA_Handle_UartTx); //<2F>ر<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
RestartDMAForRxdMainUartData(); //<2F>л<EFBFBD><D0BB>ؽ<EFBFBD><D8BD><EFBFBD>
|
||||
}
|
||||
|
||||
void StartDMAForTxdMainUartData(void)
|
||||
{
|
||||
LHL_DMA_Stop(&DMA_Handle_UartRx);//<2F>ر<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
#ifndef ENABLE_TURN_OFF_RS485
|
||||
#pragma message("[undefined] ENABLE_TURN_OFF_RS485")
|
||||
#elif(ENABLE_TURN_OFF_RS485)
|
||||
RS485_Enable_TX();
|
||||
#endif
|
||||
|
||||
comState.state.SendingData = 1 ;
|
||||
comState.TxLenth = MBBuf.TxdLen;
|
||||
// memcpy(comState.TxdData, MBBuf.TxPointer, comState.TxLenth );
|
||||
|
||||
// for (u8 i=0;i<comState.TxLenth;i++) printf("%c",comState.TxdData[i]);
|
||||
DMA_UART_Tx_Init();//<2F><>ʼ<EFBFBD><CABC>DMA <20><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
|
||||
DMA_register_irq_callback(DMA_CHANNEL_UART_Tx,NULL,DMAForUART_Tx_Callback);//ע<>ᴫ<EFBFBD><E1B4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
}
|
||||
|
||||
|
||||
void RestartDMAForRxdMainUartData(void)
|
||||
{
|
||||
#ifndef ENABLE_TURN_OFF_RS485
|
||||
#pragma message("[undefined] ENABLE_TURN_OFF_RS485")
|
||||
#elif(ENABLE_TURN_OFF_RS485)
|
||||
RS485_Enable_RX();
|
||||
#endif
|
||||
|
||||
comState.state.ReceivedData = 0 ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ
|
||||
|
||||
DMA_DMAMUX_CFG(DMA_CHANNEL_UART_Rx,REQUEST_SOURCE_UART_RX);//<2F><>DMAMUX<55><58><EFBFBD>ӻص<D3BB><D8B5><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD>ͨ<EFBFBD><CDA8>
|
||||
DMA_Handle_UartRx.Init.Dest_Address = (uint32_t)comState.RxdData;//<2F><><EFBFBD><EFBFBD>DMAĿ<41><C4BF><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
||||
LHL_DMA_GenerateTCD(&DMA_Handle_UartRx, &DMA_Handle_UartRx.Init, (DMA_DES_N_TypeDef *)(DMA_DES_N_BASE + 32u * DMA_Handle_UartRx.Channel)); /* д<><D0B4>DMA<4D>Ĵ<EFBFBD><C4B4><EFBFBD> */
|
||||
|
||||
LHL_DMA_Start(&DMA_Handle_UartRx); /*<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>*/
|
||||
}
|
||||
|
||||
//void RestartDMAForTxdMainUartData(void)
|
||||
//{
|
||||
// LHL_DMA_Stop(&DMA_Handle_UartRx);//<2F>ر<EFBFBD>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// comState.state.SendingData = 1 ;
|
||||
// comState.TxLenth = MBBuf.TxdLen;
|
||||
// memcpy(comState.TxdData, MBBuf.TxPointer, comState.TxLenth );
|
||||
//
|
||||
// DMA_Handle_UartTx.Init.Src_Address = (uint32_t)&comState.TxdData; // Դ<><D4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// DMA_Handle_UartTx.Init.Repetition = comState.TxLenth ;
|
||||
// LHL_DMA_GenerateTCD(&DMA_Handle_UartTx, &DMA_Handle_UartTx.Init, (DMA_DES_N_TypeDef *)(DMA_DES_N_BASE + 32u * DMA_Handle_UartTx.Channel)); /* д<><D0B4>DMA<4D>Ĵ<EFBFBD><C4B4><EFBFBD> */
|
||||
// LHL_DMA_Start(&DMA_Handle_UartTx);
|
||||
// DMA_register_irq_callback(DMA_CHANNEL_UART_Tx,NULL,DMAForUART_Tx_Callback);//ע<>ᴫ<EFBFBD><E1B4AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
//}
|
||||
|
||||
void ReceivedDataProcessing(void)
|
||||
{
|
||||
comState.state.ReceivedData = 0 ; //<2F><><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
|
||||
Get_UART_Rx_ActualLength();//<2F><><EFBFBD>½<EFBFBD><C2BD>ճ<EFBFBD><D5B3><EFBFBD>
|
||||
MBBuf.RxdLen = comState.RxLenth; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
MBBuf.RxPointer = comState.RxdData; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
MBBuf.TxPointer = comState.TxdData; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
if(ModBusProtocolDetection()) //<2F><><EFBFBD>ModbusЭ<73><D0AD>
|
||||
{
|
||||
ModBusDataProcessing(); //Э<>鴦<EFBFBD><E9B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Э<>鴦<EFBFBD><E9B4A6><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MBBuf.RxPointer<65><72>move<76><65>MBBuf.TxPointer<65><72>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>comState.TxdData<74>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>
|
||||
|
||||
StartDMAForTxdMainUartData();//<2F>ظ<EFBFBD>֡
|
||||
}
|
||||
else RestartDMAForRxdMainUartData();//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD>(<28>ܹ<EFBFBD>ʹͨ<CAB9><CDA8>ʧ<EFBFBD><CAA7>ʱ<EFBFBD><CAB1><EFBFBD>¸<EFBFBD>λ)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*********************************************************************************************************************************************/
|
||||
/* <20><>RS485<38>Ŀ<EFBFBD><C4BF><EFBFBD> */
|
||||
/*********************************************************************************************************************************************/
|
||||
#ifndef ENABLE_TURN_OFF_RS485
|
||||
#pragma message("[undefined] ENABLE_TURN_OFF_RS485")
|
||||
#elif(ENABLE_TURN_OFF_RS485)
|
||||
void RS485_Enable_TX(void)
|
||||
{
|
||||
RS485DE_OUTPUT();
|
||||
ENABLE_TXD();
|
||||
}
|
||||
|
||||
void RS485_Enable_RX(void)
|
||||
{
|
||||
RS485DE_OUTPUT();
|
||||
ENABLE_RXD();
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user