Пытаюсь посылать данные через UART, использую fifo.
Непонятно как правильно это делать.
Код
extern "C" void UART_IRQ_Handler()
{
LedBlink();
}
volatile uint16_t index;
const uint8_t TestStr[]="0123456789\n";
void main()
{
InitUART();
LPC_UART->IER=1<<LPC_UART_IER_THRE;
NVIC_EnableIRQ(UART_IRQn);
for (index=0; TestStr[index]; index++)
LPC_UART->THR=TestStr[index];
while (1);
}
{
LedBlink();
}
volatile uint16_t index;
const uint8_t TestStr[]="0123456789\n";
void main()
{
InitUART();
LPC_UART->IER=1<<LPC_UART_IER_THRE;
NVIC_EnableIRQ(UART_IRQn);
for (index=0; TestStr[index]; index++)
LPC_UART->THR=TestStr[index];
while (1);
}
Поставил breakpoint в UART_IRQ_Handler, программа попала в него, когда данные уже пришли в терминал.
Получается, что нужно в основной программе послать хотя бы один байт в THR, чтобы возникло прерывание по опустошению буфера передачи?
Попытка записывать данные в THR и проверять состояние флага LSR.THRE приводит к тому, что посылается только 1 байт - буфер не пуст, если в нём есть хотя бы 1 байт. Получается нет нормальной индикации, того что есть ещё место в буфере?
Нет ли у кого-нибудь примера передачи с использованием FIFO и прерываний?
Спасибо.