simple_tx_isr.c

来自「altera串口源代码程序」· C语言 代码 · 共 49 行

C
49
字号
#include "excalibur.h"
#include "buffer.h"  // defines RXBUFSIZE and TXBUFSIZE

//Global variables
unsigned char RxBuf[RXBUFSIZE];	// the receiver buffer.
int RxHead = 0;			// the circular buffer index
int RxTail = 0;
unsigned char TxBuf[TXBUFSIZE];	// the transmit buffer.
int TxHead = 0;			// the circular buffer index
int TxTail = 0;

unsigned char _getchar(); 
void simple_transmitter1(int context);
int _putchar(int in_char);

int main(void)
{
	int context = 0;
	int i = 0;
	
	nr_installuserisr(na_uart1_irq, simple_transmitter1, context);  // install UART ISR (transmitter)
		
	_putchar('N');
	_putchar('i');
	_putchar('o');
	_putchar('s');
	_putchar('\n');

	nr_delay(1);
	return 0;
}

/************************************************************************/

void simple_transmitter1(int data)
{
	if (TxTail != TxHead) 
	{      
		na_uart1->np_uarttxdata =TxBuf[TxTail];	// send a byte of data
		if (++TxTail > (TXBUFSIZE -1))	// check for wrap around.
               		TxTail = 0;
	}
	else 
	{       /* tx buffer empty, disable iTRDY.  Since this ISR only deals with iTRDY 
		   and iRRDY, we will accomplish this by enabling just iRRDY. */
		na_uart1->np_uartcontrol = np_uartcontrol_irrdy_mask;			
	}
}// end of transmitter

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?