Цитата(Kirill Trusov @ Jul 29 2008, 15:09)

..в туалет отнести сразу, чтобы было что почитать.....
Тем более там не желанный Вам GCC

- Редькин только перевод дюжины первых попавшихся скриншотов от IAR осилил и какого-то рекламного проспекта от Keil.
Цитата
может правда создатите фак...
Читайте форум. Сумма ответов на уже заданные вопросы много в чем поможет.
P.P.S.
В дополнение к посту №29 "про UART".
Еще о Редькине - получил письмо в котором спрашивали, ну "что, например плохого в примерах работы с AT клавиатурой"... Ответить решил в форуме.
Для примера набегу подправил (это совершенно не означает, что остальное "творчество" хоть к чему-то пригодно )такой кусочек:
Код
// функция-обработчик данных от PC-клавиатуры с помощью внешнего прерывания IRQ1
void at91_IRQ1_handler ( void )
{
U32 dum=0;
st_bit++; //инкремент счетчика битов
if (st_bit == 11) //не закончен ли прием байта?
{
st_bit = 0; //сбросить счетчик битов
flag_rd_kb=1; //уст флаг "принят байт из клавиатуры"
DATA_KB = DATA; //копировать принятый байт в переменную хранения
DEL_ST_KL = 0;//обнулить делитель задания интервала сброса ошибки
goto RET;
}
if (st_bit == 10) goto RET; //если это бит четности, ничего не делать
if (st_bit == 1) goto RET; //если это стартовый бит, ничего не делать
//иначе, если это бит данных, обработать его
if ((AT91F_PIO_GetInput(AT91C_BASE_PIOA) & IN_DATA_PC)==0)
{ BIT_CLEAR(DATA,(st_bit-2)); }
else { BIT_SET(DATA,(st_bit-2));}
RET:
//разрешить следующее прерывание IRQ1
dum =AT91C_BASE_PIOA->PIO_ISR;
dum =dum; //чтобы не генерировалось замечание о неиспольз переменной
}
Просто ужас. Нахрен не нужные (как будто на бейсике писано) GOTO, мутные, совершенно ненужные функции типа AT91F_PIO_GetInput. Голубой мути макросы BIT_*, а за написание макросов с "экономией" скобок вообще надо в дворники ссылать. Восьмибитовые st_bit, data - вообще массовое явления для редькинских переменных - исходники драл с какого-то 51... Переменная dum, да еще инициализированная, это вообще дебилизм. Про "стиль" c именами переменных из прописных букв - помолчу.
Все вместе ну просто то, что надо для пособия "как нельзя писать программы".
На самом деле и собственно функция обработчик подключена через невьебенной ненужности обертку (в cstartup.s79) тупо наворачивающую код в комплекте с огрызками поддержки вложенных прерываний, вместо человеческого подходу к делу
Код
__irq __arm void at91_IRQ1_handler( void )
Еще контроль стартового/стопового бита отсутствует напрочь, зато сбоку приляпана фигня на таймер...
Стало:
Код
void at91_IRQ1_handler( void )
{
if( AT91C_BASE_PIOA->PIO_PDSR & IN_DATA_PC )
data |= (1<<st_bit);
if( st_bit < 10 )
st_bit++; //инкремент счетчика битов
else
{ data >>= 1;
data_kb = data; //копировать принятый байт в переменную хранения
st_bit = data = 0;
}
//разрешить следующее прерывание IRQ1
AT91C_BASE_PIOA->PIO_ISR;
}
P.P.S.
Больше комментировать исходники "сотворенные" Редькиным не буду, ибо абсолютно все беспросветно и безнадежно.