Подскажите plz почему такой запутанный h файл at91sam7s64?... 1. typedef volatile unsigned int AT91_REG;// Hardware register definition
2. // *****************************************************************************
// SOFTWARE API DEFINITION FOR Usart
// *****************************************************************************
typedef struct _AT91S_USART {
AT91_REG US_CR; // Control Register
AT91_REG US_MR; // Mode Register
AT91_REG US_IER; // Interrupt Enable Register
AT91_REG US_IDR; // Interrupt Disable Register
AT91_REG US_IMR; // Interrupt Mask Register
AT91_REG US_CSR; // Channel Status Register
AT91_REG US_RHR; // Receiver Holding Register
AT91_REG US_THR; // Transmitter Holding Register
AT91_REG US_BRGR; // Baud Rate Generator Register
AT91_REG US_RTOR; // Receiver Time-out Register
AT91_REG US_TTGR; // Transmitter Time-guard Register
AT91_REG Reserved0[5]; //
AT91_REG US_FIDI; // FI_DI_Ratio Register
AT91_REG US_NER; // Nb Errors Register
AT91_REG US_XXR; // XON_XOFF Register
AT91_REG US_IF; // IRDA_FILTER Register
AT91_REG Reserved1[44]; //
AT91_REG US_RPR; // Receive Pointer Register
AT91_REG US_RCR; // Receive Counter Register
AT91_REG US_TPR; // Transmit Pointer Register
AT91_REG US_TCR; // Transmit Counter Register
AT91_REG US_RNPR; // Receive Next Pointer Register
AT91_REG US_RNCR; // Receive Next Counter Register
AT91_REG US_TNPR; // Transmit Next Pointer Register
AT91_REG US_TNCR; // Transmit Next Counter Register
AT91_REG US_PTCR; // PDC Transfer Control Register
AT91_REG US_PTSR; // PDC Transfer Status Register
} AT91S_USART, *AT91PS_USART;
3. #define AT91C_BASE_US0 ((AT91PS_USART) 0xFFFC0000) // (US0) Base Address
4. // ========== Register definition for RSTC peripheral ==========
#define AT91C_RSTC_RSR ((AT91_REG *) 0xFFFFFD04) // (RSTC) Reset Status Register
#define AT91C_RSTC_RMR ((AT91_REG *) 0xFFFFFD08) // (RSTC) Reset Mode Register
#define AT91C_RSTC_RCR ((AT91_REG *) 0xFFFFFD00) // (RSTC) Reset Control Register
1) Что означают на русском записи 1.2.3.4?
2) зачем двойная запись } AT91S_USART, *AT91PS_USART;?
3) С базовым адресом USART_а все понятно,ну а как компилятор знает
какие смещения имеют регистры USART_а относительно базового адреса?
void Usart_c_irq_handler(void)
{
...............................................................
AT91PS_USART USART_pt = AT91C_BASE_US0;
..............................................................
unsigned int status;
//* get Usart status register
status = USART_pt->US_CSR;
if ( status & AT91C_US_RXRDY){
//* Get byte and send
AT91F_US_PutChar (USART_pt, AT91F_US_GetChar(USART_pt));
}
if ( status & AT91C_US_OVRE) {
//* clear US_RXRDY
AT91F_US_GetChar(USART_pt);
AT91F_US_PutChar (USART_pt, 'O');
}
//* Check error
if ( status & AT91C_US_PARE) {
AT91F_US_PutChar (USART_pt, 'P');
}
if ( status & AT91C_US_FRAME) {
AT91F_US_PutChar (USART_pt, 'F');
}
if ( status & AT91C_US_TIMEOUT){
USART_pt->US_CR = AT91C_US_STTTO;
AT91F_US_PutChar (USART_pt, 'T');
}
//* Reset the satus bit
USART_pt->US_CR = AT91C_US_RSTSTA;
}
4) что за странная запись (выделенная точками)?
-
- Ответ: Romario(1209 знак., 28.09.2005 14:43, )
- Спасибо , немного прояснилось и тем не менее... Boroda(778 знак., 28.09.2005 21:31, )
- Ответ: Romario(1101 знак., 28.09.2005 22:13, )
- Согласен , но всетаки.... Boroda(718 знак., 29.09.2005 00:15, )
- Ответ: Romario(1101 знак., 28.09.2005 22:13, )
- Спасибо , немного прояснилось и тем не менее... Boroda(778 знак., 28.09.2005 21:31, )
- Ответ: Romario(1209 знак., 28.09.2005 14:43, )