// baud rate = 9600
void UARTinit(unsigned short div)
{//BAUD RATE = SCLK/(16 x Divisor) FSCLK=135mhz FSCLK = 90 mhz
*pUART0_GCTL=0x0009;
*pUART0_LCR=0x0080;// DLAB=1 允许访问DLL 和DLH
*pUART0_DLL=div;
*pUART0_DLH=div>>8; //DLL DLH分别赋值
*pUART0_LCR=0x0003;// 允许访问 RBR THR 和IER
*pUART0_IER=0x0001;// 接收中断允许
}
void UART_Init_Interrupts(void)
{
// *pSIC_IAR0 = 0xffffffff;
// *pSIC_IAR1 = 0xf3ffffff; // UART 中断定义
// *pSIC_IAR2 = 0xfffFFfff;
register_handler(ik_ivg10, UART_ISR); // UART ISR -> IVG 10
*pSIC_IMASK |= 0x00008000;
}
EX_INTERRUPT_HANDLER(UART_ISR)
{
g2ReceiveData++;
if(*pUART0_LSR&DR) //判断是否有新的数据。
{
if(cont>100) //防止buff溢出,测试代码,将接收到的数据重复写入512字节的buff
////if(cont>4)
{
cont = 0;
}
RXbuf[cont]=*pUART0_RBR;
cont++;
}
}
能够进入中断,并且 *pUART0_MCR |= 1 进入自发自收,数据接收正常.不使用自收自发模式 DM模式与普通普试收到的数据一样也为0
发送引脚与接收引脚都设为高电平,都为输入,和输出模式
请高手帮助解答,谢谢
「该帖子被 red_wlh 在 2012-09-25 14:06:15 编辑过」