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

📄 at91_usart.h

📁 基于ARM7微控制器AT91X40开发板的定时器程序
💻 H
字号:
/*
 * at91_usart.h
 * 
 * author: Kexin (kexin28@126.com) Tel:+8613714451195
 * date:   2007-11-27	
 */


#ifndef __AT91_USART_H
#define __AT91_USART_H

/*
 ******************* AT91x40 ********************
 */

#define ARM_CLK		        (32768000)
#define UART_CLOCK	      (ARM_CLK/16)

#define AT91_USART_CNT     2

#define AT91_USART0_BASE	(0xfffd0000)
#define AT91_USART1_BASE	(0xfffcc000)

struct at91_usarts{
	unsigned long cr;		  // control
	unsigned long mr;		  // mode
	unsigned long ier;		// interrupt enable
	unsigned long idr;		// interrupt disable
	unsigned long imr;		// interrupt mask
	unsigned long csr;		// channel status
	unsigned long rhr;		// receive holding
	unsigned long thr;		// tramsmit holding
	unsigned long brgr;		// 波特率发生器寄存器
	unsigned long rtor;		// rx time-out
	unsigned long ttgr;		// 发送器时间保障寄存器
	unsigned long reserved;
	unsigned long rpr;		// rx pointer
	unsigned long rcr;		// rx counter
	unsigned long tpr;		// tx pointer
	unsigned long tcr;		// tx counter
};

/*  USART control register*/
#define US_SENDA	          (1<<12)     //发送地址。只适用于多点模式,发送写入US_THR 的下一个字符并将地址位置位。
#define US_STTO		          (1<<11)     //启动超时。在超时计数器计数前等待一个字符。
#define US_STPBRK	          (1<<10)     //停止间断.最少一字符时间且发送高电平达12比特周期后停止间断发送。若间断已发送则无效。
#define US_STTBRK	          (1<<9)      //启动间断.在US_THR 中有字符且发送移位寄存器中字符已发送后,开始发送间断。若间断已发送则无效。
#define US_RSTSTA	          (1<<8)      //US_CSR 寄存器中状态位PARE、FRAME、OVRE 与RXBRK 复位.
#define US_TXDIS	          (1<<7)      //禁用发送器
#define US_TXEN		          (1<<6)      //发送器使能
#define US_RXDIS	          (1<<5)      //禁用接收器
#define US_RXEN		          (1<<4)      //接收器使能
#define US_RSTTX	          (1<<3)      //发送器复位
#define US_RSTRX	          (1<<2)      //接收器复位

/* USART mode register */
#define US_OVER   		      (1<<19)                 //重采样模式:0--16倍重采样 1--8倍重采样
#define US_CLKO   		      (1<<18)                 //时钟输出选择:0--USART不驱动SCK引脚 1--若USCLKS未选择外部时钟SCK,USART 驱动SCK引脚
#define US_MODE9            (1<<17)                 //9位字符长度:0--CHRL定义字符长度 1--9位字符长度
#define US_CHMODE(x)        (x<<14& 0xc000)         //通道模式:00--普通模式 01--自动回应。接收器输入与TXD引脚连接。
#define US_NBSTOP(x)        (x<<12& 0x3000)         //停止位数:00--1个停止位 10--2个停止位
#define US_PAR(x)	          (x<<9 & 0x0e00)         //检验类型:000--偶检验 001--奇检验 10x--无检验
#define US_SYNC(x)		      (x<<8 & 0x0100)         //0--USART工作在异步模式下 1--USART工作在同步模式下
#define US_CHRL(x)	        (x<<6 & 0x00c0)         //字符长度:00--5位 11--8位
#define US_USCLKS(x)        (x<<4 & 0x0030)         //时钟选择:00--MCK 01--MCK/DIV 10--保留
#define US_USMODE(x)        (x & 0x07)              //USART 模式:000--普通
 
/* USART interrupts enable/disable/mask and status register */
#define US_DMSI		  (1<<10)              //迭代中断使能
#define US_TXEMPTY	(1<<9)               //TXEMPTY中断使能
#define US_TIMEOUT	(1<<8)               //超时中断使能
#define US_PARE		  (1<<7)               //奇偶错误中断使能
#define US_FRAME	  (1<<6)               //帧错误中断使能
#define US_OVRE		  (1<<5)               //溢出错误中断使能
#define US_ENDTX	  (1<<4)               //发送结束中断使能
#define US_ENDRX	  (1<<3)               //接收结束中断使能
#define US_RXBRK	  (1<<2)               //接收器间断中断使能
#define US_TXRDY	  (1<<1)               //TXRDY中断使能
#define US_RXRDY	  (1)                  //RXRDY中断使能

void at91_init_usart(void);
int printf(char *p);

#endif __AT91_USART_H

⌨️ 快捷键说明

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