<br />void Usart_Init ( void )<br />{<br /> AT91PS_USART COM0 = AT91C_BASE_US0;<br /> AT91PS_USART COM1 = AT91C_BASE_US1;<br /><br /> //* Configure PIO controllers to periph mode<br /> AT91F_PIO_CfgPeriph( AT91C_BASE_PIOA,<br /> ((unsigned int) AT91C_PA21_RXD1 ) |<br /> ((unsigned int) AT91C_PA22_TXD1 ) |<br /> ((unsigned int) AT91C_PA5_RXD0 ) |<br /> ((unsigned int) AT91C_PA6_TXD0 ) , // Peripheral A<br /> 0); // Peripheral B<br /><br /> // First, enable the clock of the PIOB<br /> AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_US1 ) ;<br /> AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_US0 ) ;<br /> // Usart Configure<br /> AT91F_US_Configure (COM1, MCK, AT91C_US_ASYNC_MODE, SciBaudRate, 0);<br /> AT91F_US_Configure (COM0, MCK, AT91C_US_ASYNC_MODE, SciBaudRate, 0);<br /><br /> // Enable usart<br /> COM1->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;<br /> COM0->US_CR = AT91C_US_RXEN | AT91C_US_TXEN;<br /><br /> //* Enable USART IT error and RXRDY<br /> AT91F_US_EnableIt(COM1,AT91C_US_TIMEOUT | AT91C_US_FRAME | AT91C_US_OVRE |AT91C_US_RXRDY);<br /> AT91F_US_EnableIt(COM0,AT91C_US_TIMEOUT | AT91C_US_FRAME | AT91C_US_OVRE |AT91C_US_RXRDY);<br /> //AT91F_US_EnableIt(COM1,AT91C_US_RXRDY);<br /><br /> //* open Usart interrupt<br /> AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_US1, USART_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, Usart_232_irq_handler);<br /> //AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_US0, USART_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, Usart_485_irq_handler);<br /> <br /> AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US1);<br /> AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_US0);<br /><br /> COM1->US_RTOR = 20; //超时时间设定为20个字符时间<br /> COM0->US_RTOR = 20; //超时时间设定为20个字符时间<br />}<br />
|