Romario (28.09.2005 22:13, просмотров: 1) ответил Boroda на Спасибо , немного прояснилось и тем не менее...
Ответ: указателя на тип переменной не бывает. указатель бывает только на участок памяти.
AT91PS_USART a;
AT91S_USART *b;
a и b равноценны.
>>AT91PS_USART USART_pt = AT91C_BASE_US0;
>>-это объявление указателя USART_pt на тип AT91PS_USART и >>присвоение ему значения AT91C_BASE_US0
точнее так: это объявление указателя USART_pt на память которая представляется в виде структуры типа AT91S_USART. сразу же при объявлении указателю присваивается начальное значени
запись
AT91PS_USART USART_pt = AT91C_BASE_US0;
эквивалента записи
AT91S_USART *USART_pt = AT91C_BASE_US0;
далее,
>>#define AT91C_BASE_US0 ((AT91PS_USART) 0xFFFC0000) // (US0) Base >>Address
>>адрес начало блока (структуру) уарта названная AT91C_BASE_US0. в >>железе она
>>размещается по адресу 0xFFFC0000
>>ведь запись (AT91PS_USART) 0xFFFC0000 похожа на приведение >>0xFFFC0000 к указателю на тип AT91PS_USART ну а дальше #define...
после такой записи можно ползоваться выражениями типа
AT91C_BASE_US0->xxx=yyyy;
где xxx - требуемый регистр.