در این خانواده از میکروهااز تمامی پینهای پورت 0وپینهای 0 تا 13 پورت 2 به عنوان ورودی وقفه استفاده کرد.
همچنین میشه تعیین کرد که وقفه روی لبه ی بالارونده یا پایین رونده اتفاق بیفته.
وقفه پورت میکرو روی وقفه خارجی 3 تنظیم شده.پس بایستی حتما اینم بنویسید
NVIC_EnableIRQ(EINT3_IRQn);
1- توسط این دستور میشود پورت 0 یا 2 رو به عنوان ورودی وقفه پیکربندی کرد.
GPIO_IntCmd(شماره پورت ,پینهای مورد نظر , لبه بالا رونده یا
پایین رونده);
FIO_IntCmd(شماره پورت ,پینهای مورد نظر , لبه بالا رونده یا پایین رونده);
شماره پورت : میتونه 0 یا 2 باشد . (وقفه فقط روی این پورت ها تعریف شده )
پینهای مورد نظر:پینهایی از پورت که ورودی وقفه هستند.
برای لبه بالا رونده عدد 0 ولبه پایین رونده عدد 1.
2- توسط این دستور میتوانید بفهمید وقفه روی کدام پایه از پورت اتفاق افتاده-
GPIO_GetIntStatus(شماره پورت ,شماره پین مورد نظر , لبه بالا رونده یا پایین رونده);
FIO_GetIntStatus(شماره پورت ,شماره پین مورد نظر, لبه بالا رونده یا
پایین رونده);
شماره پین مورد نظر که اعداد 0 تا 31 برای پورت 0 و اعداد 0 تا 13 برای پورت 2.
3- توسط این دستور میتوانیدپرچم وقفه اتفاق افتاده رو پاک کنین.
GPIO_ClearInt(شماره پورت ,شماره پینهایمورد نظره);
FIO_ClearInt(شماره پورت ,شماره پینهای مورد نظر,);
نمونه برنامه کامل برای تست مطالب بالا.
#include
<lpc17xx_gpio.h>
//----------------------------------------------
void delay(void);
void EINT3_IRQHandler(void);
//----------------------------------------------
intmain(void)
{
GPIO_SetDir(1,0Xffffffff,1);
GPIO_ClearValue(1,0Xffffffff);
GPIO_IntCmd(0,0xffffffff,1);
NVIC_EnableIRQ(EINT3_IRQn);
while(1);
return 0;
}