注:我用的是8M晶振,当串口波特率为9600或38400,通信正常, 为57600发送数据出错,
regsist设置如下:
void Uart1_Init(void)
{
// 8M/9600 = 833.33 =0x0341 // BAUD_RATE_9600
// 8M/38400 = 208.33 =0x00D0 // BAUD_RATE_38400
// 8M/57600 = 138.88 =0x008A // BAUD_RATE_57600 //138(0x008A)或139(0x008B),发送数据会出错,2012-8-28 11:06:49
// USART_BRR1: 11~4 USART_BRR2: 15~12 3~0
#ifdef UART1_BAUD_RATE_9600
USART_BRR1=0x34;
USART_BRR2=0x01;
#elif defined UART1_BAUD_RATE_38400
USART_BRR1=0x0D;
USART_BRR2=0x00;
#elif defined UART1_BAUD_RATE_57600
USART_BRR1=0x08;
USART_BRR2=0x0A;
#endif
USART_CR2=b0010_1100; // bit5->1 Enable RX interrupt bit3->1 Enable TX bit2->1 Enable RX Spec/Page305
}
补充:其它没有设置的regsist,均为上电默认值;
|