SmileGobo 0 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба Изучал хидер файл LPC23xx.H ,который идет в поставке с KEIL обнаружил странную вещь в UART Разные регистры задефайнены на одни и теже адреса: /* Universal Asynchronous Receiver Transmitter 0 (UART0) */ #define UART0_BASE_ADDR 0xE000C000 #define U0RBR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x00)) //0xE000C000 #define U0THR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x00)) //0xE000C000 #define U0DLL (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x00)) //0xE000C000 #define U0DLM (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x04)) //0xE000C004 #define U0IER (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x04)) //0xE000C004 #define U0IIR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x08)) //0xE000C008 #define U0FCR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x08)) //0xE000C008 #define U0LCR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x0C)) #define U0LSR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x14)) #define U0SCR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x1C)) #define U0ACR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x20)) #define U0ICR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x24)) #define U0FDR (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x28)) #define U0TER (*(volatile unsigned long *)(UART0_BASE_ADDR + 0x30)) По документации эти регистры находятся в одних и тех же адресах. И никак не могу взять в толк, как процессор определят, какие значения для каких регистров я ему задаю??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fantex 0 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба U0RBR только чтение принятый байт U0THR только запись передаваемый байт U0DLL доступен для чтения/записи при установленном старшем бите в U0LCR Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SmileGobo 0 4 мая, 2011 Опубликовано 4 мая, 2011 · Жалоба сообразил спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться