به نام خدا

سلام. من یه چند وقتیه زدم توی کار زبان C++ برای میکروهای ARM و واقعا هم زبان قویی هست!یشنهاد میکنم شما هم استفاده کنید!

اما اگه شما هم از این زبان استفاده کنید در هنگام نوشتن تابع وقفه ها با مشکل مواجه میشید! در واقع میکرو اصلا روتین وقفه ها رو دیگه اجرا نمیکنه!

دلیل اصلی این موضوع اینه که زبان C++ اسم توابع رو به دلیلی تغییر میده و چون اسم تابع ما یه اسم استاندارد و از قبل تعیین شده هست نباید تغییر پیدا کنه به همین دلیل ما باید از کد زیر استفاده کنیم!

#ifdef __cplusplus
extern "C" {
#endif

خط اولی و آخری یه ماکرو برای کامپایلر هست که میگه اگه کد ما C++ بود خط دوم رو کامپایل کنه که خط دوم به کامپایلر میگه به صورت کد C کامپایل کن نه C++.

همچنین آخر روتین وقفه هم کد زیر رو قرار بدید

#ifdef __cplusplus
}
#endif

اینم دو تا ماکرو داره و اون خط وسطی در واقع اون کد بالایی رو بسته

در کل به شکل زیر میشه!

#ifdef __cplusplus
extern "C" {
#endif

void TIMER0_IRQHandler(void){
LPC_GPIO2->FIOPIN=0xdd;		
LPC_TIM0->IR = 1;	
}

#ifdef __cplusplus
}
#endif

امیدوارم که به دردتون خورده باشه!

فعلا

یا علی مدد...!