Free RTOS + USART_TX DMA stm32f2xx

ivansm wrote on Tuesday, November 06, 2012:

hello!
I want to use Free RTOS with DMA. Do anybody tries to do this?
My DMA(without RTOS) and USART(with RTOS) are working fine. I have a quastion how i must use DMA with quene.

Now i sent data to tx_quene, and then enable bit in USART Register, which causes interrupt - then i get the data from quene and send their to usart

void USART1_IRQHandler(void)
{
  long higherPriorityTaskWoken = pdFALSE;
  unsigned char byte;
[b]  if((USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)||(USART1->SR & 0x08)){	//theis something in receive buffer or overflow error
   	byte = USART_ReceiveData(USART1);
	xQueueSendFromISR(rxQueue, &byte, &higherPriorityTaskWoken);
  }[/b]
  
  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET){ //TX buffer is clean
     if (xQueueReceiveFromISR(txQueue, &byte, &higherPriorityTaskWoken) == pdTRUE) //queue has data
			{
				USART_SendData(USART1, byte);
			}
		 else USART_ITConfig(USART1, USART_IT_TXE, DISABLE); //there is no data left in queue
  }
  portEND_SWITCHING_ISR(higherPriorityTaskWoken);
}

ivansm wrote on Monday, November 19, 2012:

It’s work! I simply did DMA Transmittion(without RTOS) and USART receiving with RTOS. And all is working now