ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
40335
Boroda (28.09.2005 14:27, просмотров: 1865)
Подскажите 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) что за странная запись (выделенная точками)?