📄 usart.h.svn-base
字号:
/* ****ROBOCON 2009 | BUPT TEAM*******
* ------------------------------------------------------------------------
* FileName : usart.h
* Version : 1.0
* Brief : 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"
#ifndef F_CPU
/* prevent compiler error by supplying a default */
# warning "F_CPU not defined for <lib_bupt/usart.h>"
# define F_CPU 14745600UL
#endif
/*根据所需波特率计算UBRR, baud要为long型,一般用于串口初始化时*/
#define UBRR_FROM_BAUD(baud) (F_CPU/(16*(baud))-1)
/*默认的缓冲区大小*/
#define USART_RECVBUF_SIZE 64
#define USART_SENDBUF_SIZE 64
typedef enum{
usart_mode_stop = 0,
usart_mode_send = 1,
usart_mode_recv = 2,
usart_mode_dual = 3
}UsartMode;
typedef UINT16 Ubrr;
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;
UINT8 recv_buf;
Mutex *recvSignal;
Mutex *sendOver;
Mutex *sendLock;
}Usart;
/*为维护之前接口,在Usart中为atmega128定义两个串口变量*/
extern Usart USART0;
extern Usart USART1;
extern void usartGetLock( Usart *u);
extern void usartUnLock( Usart *u );
extern void usartInit(Usart* usart, Ubrr baudrate);
extern void usartSetStopBits(Usart *u, UINT8 stopbits);
extern void usartSetBaudrate(Usart *usart, UINT32 baudrate);
extern void usartPutc(Usart* usart, char c);
extern inline void usartTxIsr(Usart* usart);
extern void usartSendString(Usart *usart, const char *str);
extern void usartPuts(Usart *usart, const char* str);
extern int usartWrite(Usart *usart, const void *buf, size_t size);
extern void usartWaitSend(Usart *usart);
extern void usartSetMode(Usart *usart, UsartMode mode);
extern char usartGetc(Usart *usart);
extern int usartRead(Usart *usart, void *buf, size_t size);
extern int usartGets(Usart *usart, char *buf);
extern int usartReadline(Usart *usart, char *buf);
extern void usartFlush(Usart *usart );
extern inline void usartRxIsr(Usart *usart);
extern void usartRecvBufclear(Usart *usart);
#ifdef _STDIO_H_
extern FILE* usart_get_stream(Usart *usart);
extern void inline usart_setup_stream(Usart *usart, FILE* stream);
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -