h85968099 发表于 2010-8-9 12:50:01

大家帮忙看看我4

void USART_Configure(AT91S_USART *usart,
                            unsigned int mode,
                            unsigned int baudrate,
                            unsigned int masterClock)
{
        PMC_EnablePeripheral(AT91C_ID_US0);

        // Reset and disable receiver & transmitter
    usart->US_CR = AT91C_US_RSTRX | AT91C_US_RSTTX
                   | AT91C_US_RXDIS | AT91C_US_TXDIS;

    // Configure mode
    usart->US_MR = mode;

    // Configure baudrate
    // Asynchronous, no oversampling
    if (((mode & AT91C_US_SYNC) == 0)
      && ((mode & AT91C_US_OVER) == 0)) {
   
      usart->US_BRGR = (masterClock / baudrate) / 16;
    }
   
      usart->US_CR = AT91C_US_TXEN;
      usart->US_CR = AT91C_US_RXEN;
}

h85968099 发表于 2010-8-9 12:50:30

哎呀,名字还没有打完就点错了,点回车了
在下面补充吧

h85968099 发表于 2010-8-9 12:52:44

我用的是arm7 ,s64,的芯片,这是串口初始化部分,编译器用的是IAR5.1,然后
晶振用个是18.432Mhz的,
USART_Configure(
                AT91C_BASE_US0,
                AT91C_US_CHRL_8_BITS|AT91C_US_PAR_NONE|AT91C_US_NBSTOP_1_BIT,
                dw_Baudrate,
                18432000);
我在初始化中调用这个。出来的数据不对,刚接触ARM7,好多地方搞不清,帮忙看看,谢谢了

mcu.runner 发表于 2010-8-9 15:53:16

那个 master clock 的值给错了,应该是 PLL 输出时钟的频率,你这里用成 PLL 输入时钟的频率了。

h85968099 发表于 2010-8-11 17:14:36

哦,谢谢楼上了
页: [1]
查看完整版本: 大家帮忙看看我4