Нужно инит IRQ. Итак, по шагам:
0. Адрес IRQ_exeption инитится вот таким:
Код
void __irq IRQ_Exception( void )
{
U32 regVal, index;
HandlerAddr irqHandler;
regVal = INT_VECTOR_1;
index = regVal >> 3;
if ( index == 0 )
{
/* no-interrupt handler for IRQ */
return;
}
irqHandler = IRQ_VectorTable[index].Isr;
(*irqHandler)();
return;
}
{
U32 regVal, index;
HandlerAddr irqHandler;
regVal = INT_VECTOR_1;
index = regVal >> 3;
if ( index == 0 )
{
/* no-interrupt handler for IRQ */
return;
}
irqHandler = IRQ_VectorTable[index].Isr;
(*irqHandler)();
return;
}
1. Заносим в секции Reset таблицу (располагается в RW) в INT_VECTOR_1
2. Инитим таблицу нулями
3. Маска приоритетов = 0
4. инициализация всяких клоков, flash и GPIO (без фанатизьму, частота ядра 120МГц)
5. Устанавливаем прерывание для таймера0 (заносим в таблицу прерываний по смещению 2*2 адрес и приоритет)
6. Включаем прерывание таймера 0 (TIM0_INT_SET_ENABLE = 1;) и стартуем его
7. Прога выполняется
Настройка таймера корректна, проверялось на "родном" стартапе
Но в ту самую IRQ_Exception так и не попадаю
Что я мог упустить ?