Как сгенерировать исходное TX-прерывание (TX INT) из Hercules SCI UART с помощью HALCoGen - PullRequest
0 голосов
/ 07 января 2019

Я следую этому уроку о том, как использовать 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.

...