Отрабатываю прерывания. В книге Марина написано, что надо менять строчку в стартап коде у метки необходимого прерывания, приложенных к книге примерах вектор оставлен в неизменном виде. У меня этот пример не компилируется
После компиляции своего кода и запуска в режиме отладки программа успешно проходит инициализацию и как положенно, вылетает в пустой цикл. Далее, в режиме debug, открываю вкладку переферии на Vectored Interrupt Controller, на 14 строчке в EINT0 ставлю галочку в квадратик SoftInt, после чего программа переходт на строку
Код
FIQ_Handler B FIQ_Handler
, где останавливается в пустом цикле.текст программы:
Код
#include <LPC23xx.H> /* LPC23xx definitions */
int main (void)
{
IODIR1 = 0x00FF0000; /* P1.16..23 defined as Outputs */
PINSEL4 = 0x00100000; /* enable EINT0 */
VICIntSelect = 0x00004000; /* enable EINT0 */
VICIntEnable = 0x00004000; /* enable EINT0 */
IOCLR1 = 0x00FF0000;
while (1)
{ /* Loop forever */
}
}
void FIQ_Handler (void)
{
IOSET1 = 0x00FF0000;
EXTINT = 0x00000002;
}
int main (void)
{
IODIR1 = 0x00FF0000; /* P1.16..23 defined as Outputs */
PINSEL4 = 0x00100000; /* enable EINT0 */
VICIntSelect = 0x00004000; /* enable EINT0 */
VICIntEnable = 0x00004000; /* enable EINT0 */
IOCLR1 = 0x00FF0000;
while (1)
{ /* Loop forever */
}
}
void FIQ_Handler (void)
{
IOSET1 = 0x00FF0000;
EXTINT = 0x00000002;
}
Пробовал добавлять в стартрап в строку метки FIQ_Handler окончание ?A, напротив void FIQ_Handler (void) добавлял __fiq.Не помогает.
Где ошибка, подскажите ?