У меня есть два символа Буферы, по которым я собираю данные.Transmitte Два буфера Consequtively
TxBuffer[1400];
TxBuffer2[1400]
У меня ситуация такова, что, один буфер передачи в то время над UART и на другом буфере я буду вырубкой данных, после того, как один буфер передается другой буфер должен передавать. Есть ли способ сделать это, без использования memset.? Мой поток кода выглядит следующим образом.
- Данные будут собраны от датчиков в buff1
- в это время buff2 будет передавать
- после передачи buff2, то buff1 должна передавать
- , когда buff1 передает данные будут собираться на buff2.
Как указано выше, я хотел бы добавить то, что я пробовал, как показано ниже. Я взял 2 указателя символов, указывающих на конкретное смещение адреса в одном буфере, как показано ниже.
unsigned char *block1_ptr = &TxBuffer[Sensor1_Data];
unsigned char *block2_ptr = &TxBuffer[Sensor1_Data +700];
и один 1 мс Я собираю данные от датчика в этот буфер. как показано ниже.
Sensor1_dataptr = Sensor1_GetData();
*block1_ptr = Sensor1_dataptr->datax0;
block1_ptr++;
*block1_ptr = Sensor1_dataptr->datax1;
block1_ptr++;
*block1_ptr = Sensor1_dataptr->datay0;
block1_ptr++;
*block1_ptr = Sensor1_dataptr->datay1;
block1_ptr++;
*block1_ptr = Sensor1_dataptr->dataz0;
block1_ptr++;
*block1_ptr = Sensor1_dataptr->dataz1;
block1_ptr++;
как это, я также собираю данные от другого датчика. После сбора данных я отправляю в uart по dma. Моя проблема заключается в том, что я должен собирать данные в одном буфере, в то время как другие передают и наоборот, но как изменить буфер, так как tx происходит в arond каждые 50 мс и собирает данные каждые 1 мс. My dma config. как указано ниже,
dmaconfig->source = &TxBuffer[Sensor1_Data];
dmaconfig->destination = &UCA0TXBUF;
dmaconfig->size = 1400;
DMAInit(dmaconfig);
DMA_TRIGGER();
Я пробовал иметь один флаг, который сбросится, когда dma будет выполнено с помощью Tx. Кроме того, я храню одно условие следующего
if(flag == set)
{
Transmit_buff = &TxBuffer[1400];
}else{
&TxBuffer[1400];
}
Я устанавливаю флаг в то время как я собираю данные sensors.But это не работает.
Или один два одномерных буфер и поменять местами индексы. –