Do several UART transmissions at the same time
I am trying to transmit (65535 bytes) 3 buffers through UART I just want to transmit all of them. the main buffer is separated into 3 DATA buffers when I tried to transmit all of them I will be able transmit only DATA1.
**/* USER CODE BEGIN PD */
#define MAX_FRAME_SIZE 196605
#define FRAME 65535
/* USER CODE END PD */
/* USER CODE BEGIN PV */
static uint8_t aFull_Buffer[MAX_FRAME_SIZE];
static uint8_t DATA1[FRAME];
static uint8_t DATA2[FRAME];
static uint8_t DATA3[FRAME];
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_TIM1_Init(void);
static void MX_USB_OTG_FS_PCD_Init(void);
static void MX_USART3_UART_Init(void);
static void MX_TIM2_Init(void);
static void MX_USART2_UART_Init(void);
/* USER CODE BEGIN PFP */
static void TransferComplete(DMA_HandleTypeDef *hdma_tim1_ch1);
int main(void)
{
HAL_DMA_Start_IT(htim1.hdma[TIM_DMA_ID_CC1], GPIOC_IDR, (uint32_t) &aFull_Buffer, MAX_FRAME_SIZE);
// Enable timer to trigger DMA transfer - CC1DE bit
__HAL_TIM_ENABLE_DMA(&htim1, TIM_DMA_CC1);
// Enable timer input capture
HAL_TIM_IC_Start(&htim1, TIM_CHANNEL_1);
while (1) {}}
static void TransferComplete(DMA_HandleTypeDef *hdma_tim1_ch1) {for (i = 0; i < 65534; i++){
DATA1[j]=aFull_Buffer[i];
DATA2[j]=aFull_Buffer[i+FRAME];
DATA3[j]=aFull_Buffer[i+FRAME+FRAME+FRAME];
j++;
}
HAL_UART_Transmit_DMA(&huart3,DATA1,FRAME);
HAL_Delay (3000);
HAL_UART_Transmit_DMA(&huart3,DATA2,FRAME);
HAL_Delay (3000);
HAL_UART_Transmit_DMA(&huart3,DATA3,FRAME);
HAL_Delay (3000);
}**