PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : نام توابع روتین وقفه ها در Keil برای lpc17xx



Havva2
18-08-2012, 16:31
سلام

در مثال های وقفه دیدم برای مشخص کردم توابع روتین وقفه از اسم مثل این
EINT3_IRQHandler
استفاده میکنه که حالا این برای وقفه خارجی 3 هست و برای بقیه هم باید فقط
_IRQHandler رو بعد از نام وقفه آورد.

سوالم این هست که آیا این اسم ها یونیک هستن؟ نمیشه از اسم دیگه ای برای نام تابع وقفه استفاده کرد؟
و اینکه این اسم ها کجا تعریف شده اند که کیل اونها رو به عنوان تابع ISR می شناسه؟ در فایل های زیر چیزی ازشون ندیدم

system_lpc17xx.c
startup_lpc17xx.s
core_cm3.h

تشکر

mzarkoob
18-08-2012, 19:13
در LPC17xx.h در قسمت LPC17xx Specific Interrupt Numbers لیست وقفه ها هست. همین طور در startup_LPC17xx.s این اسم ها آورده شده:
EINT0_IRQHandler
EINT1_IRQHandler
EINT2_IRQHandler
EINT3_IRQHandlerاین وقفه Gpio است که به تا بیاید فقط میره در زیر روال تابع EINT3_IRQHandler
اینکه آیا آیا فقط این باشد می خواهید عوضش کنید ببینید میره در زیر روال وقفه؟ مطمئنا نمی ره:mrgreen:

Aghaeifar
18-08-2012, 21:23
البته توی lpc2000 می شد VIC این قابلیت رو داشت که نام تابع روتین وقفه رو خودمون مشخص کنیم و ادرس تابع رو در رجیستری که برای این منظور بود بریزیم.
در NVIC میکروی lpc176x من همچین چیزی ندیدم.

mansoory
25-12-2012, 15:35
سلام

در مثال های وقفه دیدم برای مشخص کردم توابع روتین وقفه از اسم مثل این
EINT3_IRQHandler
استفاده میکنه که حالا این برای وقفه خارجی 3 هست و برای بقیه هم باید فقط
_IRQHandler رو بعد از نام وقفه آورد.

سوالم این هست که آیا این اسم ها یونیک هستن؟ نمیشه از اسم دیگه ای برای نام تابع وقفه استفاده کرد؟
و اینکه این اسم ها کجا تعریف شده اند که کیل اونها رو به عنوان تابع ISR می شناسه؟ در فایل های زیر چیزی ازشون ندیدم

system_lpc17xx.c
startup_lpc17xx.s
core_cm3.h

تشکر

توی فایل startup.s هست

Navid_Micro
09-11-2015, 19:39
سلام دوستان
من یه مشکل اساسی با وقفه دارم و اونم اینه که میره تو روتین وقفه میمونه و روتین وقفه تشکیل یک حلقه میده
لطفا کمک کنید ...




void EINT3_IRQHandler(void)
{
LPC_GPIOINT->IO2IntClr|=(1<<13);
iliprintf(10,100,BLACK,WHITE,3,"%d",cnt++);

}

LPC_GPIOINT->IO2IntEnF|=(1<<13);
LPC_PINCON->PINSEL4|=(0x01<<26);
LPC_GPIO2->FIODIR&=~(1<<13);
NVIC_EnableIRQ(EINT3_IRQn);