📄 usart.h
字号:
/* ****ROBOCON 2009 | BUPT TEAM*******
* ------------------------------------------------------------------------
* FileName : usart.h
* Version : 1.0
* Biref : Usart driver, use Queue
* Code by : Leaf
* Date : Dec.08, 2008
* Note : Dependence: queue.c queue.h
*
*
* ------------------------------------------------------------------------
*/
#ifndef USART_H_INCLUDED
#define USART_H_INCLUDED
#include "includes.h"
#define Q_DATA_TYPE char
#define Q_SIZE_TYPE UINT8
#include "queue.h"
#ifndef U0_SENDBUF_SIZE
#define U0_SENDBUF_SIZE 64
#endif
#ifndef U1_SENDBUF_SIZE
#define U1_SENDBUF_SIZE 64
#endif
#ifndef F_CPU
/* prevent compiler error by supplying a default */
# warning "F_CPU not defined for <lib_bupt/delay.h>"
# define F_CPU 14745600UL
#endif
#define UBRR_FROM_BAUD(baud) (F_CPU/(16*(baud))-1)
#define UART_SENDBUF_SIZE 32
#define UART_RECVBUF_SIZE 32
typedef enum{
usart_mode_stop = 0,
usart_mode_send = 1,
usart_mode_recv
}UsartMode;
typedef struct{
volatile uint8_t *ubrrh;
volatile uint8_t *ubrrl;
volatile uint8_t *ucsra;
volatile uint8_t *ucsrb;
volatile uint8_t *ucsrc;
volatile uint8_t *udr;
Queue *send_buf;
Queue *recv_buf;
}Usart;
extern const Usart USART0;
extern const Usart USART1;
extern void usart_init(const Usart* usart, UINT16 baudrate);
extern void usart_putc(const Usart* usart, char c);
extern void usart_tx_isr(const Usart* usart);
extern void usart_puts(const Usart *usart, const char* str);
#ifdef _STDIO_H_
extern FILE* usart_get_stream(const Usart *usart);
extern void inline usart_setup_stream(const Usart *usart, FILE* stream);
#endif
#define uart0_tx_isr() usart_tx_isr(&USART0)
#define uart0_init(ubrr) usart_init(&USART0, (ubrr))
#define u0_putc(c) usart_putc(&USART0, (c))
#define u0_puts(s) usart_puts(&USART0, (s))
#define uart1_tx_isr() usart_tx_isr(&USART1)
#define uart1_init(ubrr) usart_init(&USART1, (ubrr))
#define u1_putc(c) usart_putc(&USART1, (c))
#define u1_puts(s) usart_puts(&USART1, (s))
char usart_getc(const Usart *usart);
int usart_gets(const Usart *usart, char *buf);
int usart_flush(const Usart *usart, char *buf);
void usart_rx_isr(const Usart *usart);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -