Cấu hình ngắt

denchetmatthoi

Trứng gà
Anh chị cho em hỏi phần này :)
Có 2 ví dụ
VD1. Cấu hình ngắt cạnh xuông cho PF4
//Enable PortF
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//Config Pin PF4 as a digital input
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_4);
//Read PF4
read=GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4);
//Config GPIO Falling edge interrupt for PF1
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_FALLING_EDGE);
GPIOIntRegister(GPIO_PORTF_BASE,&ButtonISR);
GPIOIntEnable(GPIO_PORTF_BASE, GPIO_PIN_4);
IntEnable(INT_GPIOF);
IntMasterEnable();
VD2.
// Configure clock 40 MHz
SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ);
//PortF Enable
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//Config GPIO that connect to LED - PIN 1,2,3
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE);
//Turn off all LEDs
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, 0);
//Config Buttons
GPIODirModeSet(GPIO_PORTF_BASE, SW1, GPIO_DIR_MODE_IN);
GPIOPadConfigSet(GPIO_PORTF_BASE, SW1, GPIO_STRENGTH_8MA, GPIO_PIN_TYPE_STD_WPU);
//Config GPIO Interrupt for SW1
GPIOIntTypeSet(GPIO_PORTF_BASE,SW1, GPIO_FALLING_EDGE);
GPIOIntRegister(GPIO_PORTF_BASE,&ButtonISR);
GPIOIntEnable(GPIO_PORTF_BASE, SW1);
IntEnable(INT_GPIOF);
IntMasterEnable();
void ButtonISR(void)
{
static int tick = LED_RED;
GPIOIntClear(GPIO_PORTF_BASE, SW1);
GPIOPinWrite(GPIO_PORTF_BASE, LED_RED|LED_GREEN|LED_BLUE, tick);
tick<<=1;
if(tick>GPIO_PIN_3)
tick=LED_RED;
//Delay 1s
SysCtlDelay(SysCtlClockGet()/3);
}
Em không hiểu sao trong VD1 thì dùng read=GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4);
còn trong VD2 thì không dùng, giải thích giùm em với.
Em cảm ơn:D
 

MMKC

Thành Viên PIF
Trong cấu hình ngắt thì em không cần read=GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4); để làm gì.
Em copy source ở đâu phải không? Đó có lẽ là ý định người dùng thôi
 
Top