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);
}