主题 : 设置S3C2440的波特率问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 6750
精华: 0
发帖: 23
金钱: 250 两
威望: 250 点
综合积分: 46 分
注册时间: 2009-06-15
最后登录: 2010-07-31
楼主  发表于: 2009-07-24 13:56

 设置S3C2440的波特率问题

我想用mini2440的开发板的串口2接一个微型打印机,打印机的波特率是9600,我想把开发板的串口2的波特率设置为9600.    
                     UartNum = 1;
    Uart_Select(UartNum);
    Uart_Init(0,9600);   //设置波特率
void Uart_Init(int pclk,int baud)
{
    int i;
    if(pclk == 0)
    pclk    = PCLK;
    rUFCON0 = 0x0;   //UART channel 0 FIFO control register, FIFO disable
    rUFCON1 = 0x0;   //UART channel 1 FIFO control register, FIFO disable
    rUFCON2 = 0x0;   //UART channel 2 FIFO control register, FIFO disable
    rUMCON0 = 0x0;   //UART chaneel 0 MODEM control register, AFC disable
    rUMCON1 = 0x0;   //UART chaneel 1 MODEM control register, AFC disable
//UART0
    rULCON0 = 0x3;   //Line control register : Normal,No parity,1 stop,8 bits
     //    [10]       [9]     [8]        [7]        [6]      [5]         [4]           [3:2]        [1:0]
     // Clock Sel,  Tx Int,  Rx Int, Rx Time Out, Rx err, Loop-back, Send break,  Transmit Mode, Receive Mode
     //     0          1       0    ,     0          1        0           0     ,       01          01
     //   PCLK       Level    Pulse    Disable    Generate  Normal      Normal        Interrupt or Polling
    rUCON0  = 0x245;   // Control register
    rUBRDIV0=( (int)(pclk/16./baud+0.5) -1 );   //Baud rate divisior register 0
//UART1
    rULCON1 = 0x3;
    rUCON1  = 0x245;
    rUBRDIV1=( (int)(pclk/16./baud+0.5) -1 );
//UART2
    rULCON2 = 0x3;
    rUCON2  = 0x245;
    rUBRDIV2=( (int)(pclk/16./baud+0.5) -1 );    

    for(i=0;i<100;i++);
}

我不知道是不是这样修改波特率的,希望得到大家的帮助!