LM3S8962 Buton Kullanım Örneği
- LM3S8962 arm cortex m3 kartındaki butonları kullanan bir uygulamadır.
#include "inc/hw_gpio.h"
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "drivers/rit128x96x4.h"
void
GPIOFIntHandler(void)
{
//
// Clear the GPIO interrupt.
//
GPIOPinIntClear(GPIO_PORTF_BASE, GPIO_PIN_1);
RIT128x96x4StringDraw("SELECT", 48, 32, 15);
}
void
GPIOEIntHandler(void)
{
//
// Clear the GPIO interrupt.
//
GPIOPinIntClear(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_0) == 0)
RIT128x96x4StringDraw("UP ", 48, 32, 15);
if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_1) == 0)
RIT128x96x4StringDraw("DOWN ", 48, 32, 15);
if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_2) == 0)
RIT128x96x4StringDraw("LEFT ", 48, 32, 15);
if(GPIOPinRead(GPIO_PORTE_BASE, GPIO_PIN_3) == 0)
RIT128x96x4StringDraw("RIGHT ", 48, 32, 15);
}
int
main(void)
{
//
// Set the clocking to run directly from the crystal.
//
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);
//
// Enable the peripherals used by this application.
//
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
//
// Configure the push button as an input and enable the pin to interrupt on
// the falling edge (i.e. when the push button is pressed). basılmasında kesme olsun
//
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_STRENGTH_2MA,
GPIO_PIN_TYPE_STD_WPU);
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_FALLING_EDGE);
GPIOPinIntEnable(GPIO_PORTF_BASE, GPIO_PIN_1);
IntEnable(INT_GPIOF);
//
// E portu ayarlanıyor.
//
GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_0);
GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2
| GPIO_PIN_3, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOIntTypeSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2
| GPIO_PIN_3, GPIO_FALLING_EDGE);
GPIOPinIntEnable(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);
IntEnable(INT_GPIOE);
//
// Initialize the OLED display.
//
RIT128x96x4Init(1000000);
RIT128x96x4StringDraw("But. Int Ex.", 30, 16, 15);
//
// Loop forever. This loop simply exists to display on the OLED display
//
while(1)
{
}
}
- Select butonu için ve diğer butonlar için kesme tanımlandı.
- OLED ayarlanıp, hangi butona basıldı ise ekranda o butonun adı yazdırılıyor.
- startup_ccs.c dosyası altında butonlara tanımlanan kesmeler vektor tablosuna kaydedilir.
extern void GPIOFIntHandler(void); extern void GPIOEIntHandler(void); GPIOEIntHandler, // GPIO Port E GPIOFIntHandler, // GPIO Port F
Kaynaklar
- Luminary Micro gpio_jtag örneği