CODE
void*ReceiveBuff485dma;
ReceiveBuff485dma = (uint8_t*) calloc(DMA_BUFFER_SIZE_RECEIVE_RS485,sizeof(uint8_t));
memset(ReceiveBuff485dma,0x10,DMA_BUFFER_SIZE_RECEIVE_RS485);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
DMA_InitTypeDef dma;
DMA_StructInit(&dma);
dma.DMA_PeripheralBaseAddr = (uint32_t)&(USART3->DR);
dma.DMA_Memory0BaseAddr = (uint32_t)ReceiveBuff485dma;
dma.DMA_DIR = DMA_DIR_PeripheralToMemory;
dma.DMA_BufferSize = DMA_BUFFER_SIZE_RECEIVE_RS485;
dma.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
dma.DMA_MemoryInc = DMA_MemoryInc_Enable;
dma.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
dma.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
dma.DMA_Channel = DMA_Channel_4;
dma.DMA_Mode = DMA_Mode_Circular;
DMA_Init(DMA1_Stream1, &dma);
USART_Cmd(USART3, ENABLE);
USART_DMACmd(USART3, USART_DMAReq_Rx, ENABLE);
DMA_Cmd(DMA1_Stream1, ENABLE);
///**********cycl*
while(DMA_GetFlagStatus(DMA1_Stream1, DMA_FLAG_TCIF1) == RESET);
DMA_ClearFlag(DMA1_Stream1, DMA_FLAG_HTIF1 | DMA_FLAG_TCIF1);
contdatareceive = DMA_GetCurrDataCounter(DMA1_Stream1);
DMA_Cmd(DMA1_Stream1, DISABLE);
//USART_SendData(USART3,contdatareceive);//для проверки отправляет правильное число байт
if((DMA_BUFFER_SIZE_RECEIVE_RS485 - contdatareceive)>1){
for(ii = 0; ii<255; ii++){USART_SendData(USART3,*((uint8_t*)ReceiveBuff485dma+ii)); while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);}
//здесь должны быть отправлены полученные данные а уходят то что записывает в начале инициализации memset. Dma ничего не записывает в ReceiveBuff485dma.
}
DMA_SetCurrDataCounter(DMA1_Stream1,DMA_BUFFER_SIZE_RECEIVE_RS485);
DMA_Cmd(DMA1_Stream1, ENABLE);
//*****cycl
ReceiveBuff485dma = (uint8_t*) calloc(DMA_BUFFER_SIZE_RECEIVE_RS485,sizeof(uint8_t));
memset(ReceiveBuff485dma,0x10,DMA_BUFFER_SIZE_RECEIVE_RS485);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
DMA_InitTypeDef dma;
DMA_StructInit(&dma);
dma.DMA_PeripheralBaseAddr = (uint32_t)&(USART3->DR);
dma.DMA_Memory0BaseAddr = (uint32_t)ReceiveBuff485dma;
dma.DMA_DIR = DMA_DIR_PeripheralToMemory;
dma.DMA_BufferSize = DMA_BUFFER_SIZE_RECEIVE_RS485;
dma.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
dma.DMA_MemoryInc = DMA_MemoryInc_Enable;
dma.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;
dma.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;
dma.DMA_Channel = DMA_Channel_4;
dma.DMA_Mode = DMA_Mode_Circular;
DMA_Init(DMA1_Stream1, &dma);
USART_Cmd(USART3, ENABLE);
USART_DMACmd(USART3, USART_DMAReq_Rx, ENABLE);
DMA_Cmd(DMA1_Stream1, ENABLE);
///**********cycl*
while(DMA_GetFlagStatus(DMA1_Stream1, DMA_FLAG_TCIF1) == RESET);
DMA_ClearFlag(DMA1_Stream1, DMA_FLAG_HTIF1 | DMA_FLAG_TCIF1);
contdatareceive = DMA_GetCurrDataCounter(DMA1_Stream1);
DMA_Cmd(DMA1_Stream1, DISABLE);
//USART_SendData(USART3,contdatareceive);//для проверки отправляет правильное число байт
if((DMA_BUFFER_SIZE_RECEIVE_RS485 - contdatareceive)>1){
for(ii = 0; ii<255; ii++){USART_SendData(USART3,*((uint8_t*)ReceiveBuff485dma+ii)); while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);}
//здесь должны быть отправлены полученные данные а уходят то что записывает в начале инициализации memset. Dma ничего не записывает в ReceiveBuff485dma.
}
DMA_SetCurrDataCounter(DMA1_Stream1,DMA_BUFFER_SIZE_RECEIVE_RS485);
DMA_Cmd(DMA1_Stream1, ENABLE);
//*****cycl