/******************************************************************************
COMTX //UART 发送寄存器。
COMRX //UART 接收寄存器。
COMDIV0 //UART 标准波特率发生器除数0。
COMIEN0 //UART 中断使能寄存器0。
COMDIV1 //UART 标准波特率发生器除数1。
COMIID0 //UART 中断标识0。
COMCON0 //UART 控制寄存器0。
COMCON1 //UART 控制寄存器1。
COMSTA0 //UART 状态寄存器0。
COMSTA1 //UART 状态寄存器1。
COMDIV2 //UART 小数分频器寄存器。
******************************************************************************/
void Init_UART(void)
{
COMCON0 = DLAB(1); // Enable access to COMDIV registers
COMDIV0 = 0x21; //UART 标准波特率发生器除数0 Set baud rate to 9600.
COMDIV1 = 0x00; //UART 标准波特率发生器除数1
//COMDIV2 = 0x21 + BIT11; //UART 小数分频器寄存器 Enable fractional divider for more accurate baud rate setting
COMCON0 = Stop(1) |//停止位。用户置1 后,如果字长为5 位则传送1.5 个停止位;如果字长为6、7 或8 位,则传送2 个停止位。不论所选停止位的个数是多少,接收器只检查第一个停止位。用户清0,则在发送的数据中只产生一个停止位。
WLS(D8) ; //字长选择。
COMIEN0 = ETBEI(1) |
ERBFI(1) ; //UART 中断使能寄存器0 Enable UART interrupts when Rx full and Tx buffer empty.
IRQEN |= BIT11; // Enable UART interrupt source
}
引用: zxc940107 发表于 2016-9-27 10:12
楼主大大~~~,我修改UART的波特率为115200,结果数据接收错误,求解答。
GP1CON |= BIT0 + BIT4; ...