📄 uart.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 + -