Я следую этому уроку о том, как использовать SCI UART с помощью HALCoGen:
Учебное пособие по UART
static unsigned char command;
void main(void)
{
/* Enable IRQ */
_enable_IRQ();
/* Initialize SCI module */
sciInit();
/* Send user prompt */
sciSend(scilinREG, 21, (unsigned char *)"please press a key!\r\n");
/* Await user character */
sciReceive(scilinREG, 1, (unsigned char *)&command);
/* Infinite loop */
while (1);
}
void sciNotification(sciBase_t *sci, unsigned flags)
{
/* Echo received character */
sciSend(sci, 1, (unsigned char *)&command);
/* Await further character */
sciReceive(sci, 1, (unsigned char *)&command);
}
В учебном курсе запускается процедура обслуживания прерываний (sciNotification), потому что в основном методе вызывается sciSend и в конце вызова sciSend вызывается ISR. Я хотел бы знать, как генерировать или запускать TX INT из UART всякий раз, когда UART пуст, так что ISR вызывается без необходимости сначала отправлять что-либо с помощью sciSend.
В моем ISR у меня будет список сообщений, которые я добавляю в другие места в моем приложении, и я хочу, чтобы UART выводил эти сообщения всякий раз, когда он простаивает. Для этого мне нужно знать, как вызвать TX INT из UART.