⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 一个网卡的应用
💻 C
字号:
#include "at91rm9200.h"
#include "uart.h"

inline void dbgu_init(){
	int value;
	pio_reg_p pioa  = (pio_reg_s  *)PIOA_BASE;
	dbgu_reg_p dbgu = (dbgu_reg_s *)DBGU_BASE;
/* pin multiplexing */
	value = DRXD | DTXD;
	pioa->pio_asr = value;
	pioa->pio_bsr = 0;
	pioa->pio_pdr |= value;
	pioa->pio_per &= ~value;
/* setup configuration */
	dbgu->dbgu_cr = (1<<UART_RSTRX) | (1<<UART_RSTTX) | (1<<UART_RXDIS) | (1<<UART_TXDIS) | (1<<UART_RSTSTA);
	dbgu->dbgu_mr = (0x4<<9) | (0x3<<6);			//8bit, no parity, 1 stop-bit
	dbgu->dbgu_idr = (unsigned) -1;
	dbgu->dbgu_brgr = 0x14;					//cd=20, baudrate=36M/(16*20)=115200
	dbgu->pdc.periph_ptcr = (1<<1) | (1<<9);		//disable the pdc channel
	dbgu->dbgu_cr = (1<<UART_RXEN) | (1<<UART_TXEN);
}

void put_char(char c){
	dbgu_reg_p dbgu = (dbgu_reg_s *)DBGU_BASE;
	while( !(dbgu->dbgu_sr & (USART_TXRDY)) );
	dbgu->dbgu_thr = c;
}

void put_s(char *s){
	int i=0;
	while(s[i]!='\0')
		put_char(s[i++]);
}

char get_char(){
	char c;
	dbgu_reg_p dbgu = (dbgu_reg_s *)DBGU_BASE;
	while( !(dbgu->dbgu_sr & (USART_RXRDY)) );
	c = (char)(dbgu->dbgu_rhr & 0xff);
	return c;
}

⌨️ 快捷键说明

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