Armboot在EV40评估板上的移植
US_MR=US_ASYNC_MODE
⑧设置发送时间确保寄存器US_TTGR。
US_TTGR=0
⑨使能接收器和发送器。
#define US_TXEN 0x0040
#define US_RXEN 0x0010
US_CR=US_RXEN|US_TXEN
⑩屏蔽所有USART中断。
US_IDR=0xFFFFFFFF
⑾最好在这里插入一个延时循环,保证初始化工作的顺利工作。
For(i=0;i<=10;i++);
为了让读者更清楚理解以上个寄存器的来源,这里以USART0各寄存器的定义为例:
//USART的各个寄存器
typedef volatile unsigned int at91_reg;
typedef struct
{
at91_reg US_CR ; /*控制寄存器*/
at91_reg US_MR ; /*模式寄存器*/
at91_reg US_IER ; /*中断使能寄存器*/
at91_reg US_IDR ; /*中断禁止寄存器*/
at91_reg US_IMR ; /*中断屏蔽寄存器*/
at91_reg US_CSR ; /*通道状态寄存器*/
at91_reg US_RHR ; /*接收保持寄存器*/
at91_reg US_THR ; /*发送保持寄存器*/
at91_reg US_BRGR ; /*波特率产生寄存器*/
at91_reg US_TTOR ; /*接收超时寄存器*/
at91_reg US_TTGR ; /*发送器时间确保寄存器*
at91_reg Reserved ;
at91_reg US_RPR ; /*接收指针寄存器*/
at91_reg US_RCR ; /*接收计数寄存器*/
at91_reg US_TPR ; /*发送指针寄存器*/
at91_reg US_TCR; /*发送计数寄存器*/
}StructUSART;
#define USART0_BASE ((StructUSART*)0xFFFD0000)
3.2 通过串口接收数据
#define US_RXRDY 0x1
While((US_CSR & US_RXRDY)==0){}
《Armboot在EV40评估板上的移植(第3页)》