-
Notifications
You must be signed in to change notification settings - Fork 15
led.h
irmusy edited this page Oct 2, 2013
·
1 revision
GPIO에 연결된 LED를 초기화하고 제어하기 위한 유틸리티 코드를 정리한 헤더 파일입니다.
myCortex-LM8962 보드에는 두 개의 LED가 내장되어 있습니다.
- Power LED : 보드에 전원이 공급되면 항상 켜집니다.
- User LED : PG0 핀에 연결된 LED입니다.
위 회로도에서 보는 바와 같이 PG0 핀이 Low 일 때 LED가 켜집니다. 반대로 PG0 핀이 High 일 때 LED는 꺼집니다.
42 line:
#define CUST_SYSCTL_PERIPH_LED SYSCTL_PERIPH_GPIOG
#define CUST_GPIO_PORT_BASE GPIO_PORTG_BASE
#define CUST_GPIO_PIN GPIO_PIN_0
User LED가 연결 된 GPIO 핀에 대한 정의입니다. LED는 PG0에 연결되어 있습니다.
46 line:
#define LED_INIT() do { \
SysCtlPeripheralEnable(CUST_SYSCTL_PERIPH_LED); \
GPIOPinTypeGPIOOutput(CUST_GPIO_PORT_BASE, CUST_GPIO_PIN); \
} while(0)
LED관련 초기화 함수입니다. 코드 양이 적어서 C 함수로 만드는 대신 메크로 함수로 만들었습니다. LED를 사용하고자 하는 경우 펌웨어 초기화 부분에서 본 함수를 한번 호출해 주면 됩니다.
51 line:
#define LED_ON() GPIOPinWrite(CUST_GPIO_PORT_BASE, CUST_GPIO_PIN, 0)
#define LED_OFF() GPIOPinWrite(CUST_GPIO_PORT_BASE, CUST_GPIO_PIN, CUST_GPIO_PIN)
LED를 켜고 끄는 함수입니다. 역시 메크로 함수로 정의하였습니다.
LED를 켤 때에는 GPIO 핀에 Low를 출력해야 합니다. 반대로 LED를 끌 때에는 GPIO 핀에 High를 출력해야 합니다.
54 line:
#define LED_IS_ON() (GPIOPinRead(CUST_GPIO_PORT_BASE, CUST_GPIO_PIN) != CUST_GPIO_PIN)
LED가 켜져 있는지 꺼져 있는지 상태를 확인하는 함수입니다. LED가 켜져있다면 true가 리턴되고, LED가 꺼져있다면 false가 리턴됩니다.
56 line:
#define LED_TOGGLE() \
do { \
if (LED_IS_ON()) \
LED_OFF(); \
else \
LED_ON(); \
} while(0)
LED를 토글시키는 함수입니다. 현재 LED가 켜져있다면 LED를 끄고, LED가 꺼져 있다면 켭니다.
64 line:
#define LED_DEBUG_BLINK() \
do { \
unsigned long time; \
time = SysCtlClockGet() / 6; \
IntMasterDisable(); \
while(1) { \
LED_ON(); \
SysCtlDelay(time); \
LED_OFF(); \
SysCtlDelay(time); \
} \
} while(0)
디버깅 목적으로 사용되는 함수입니다. 이 함수를 만나면 LED를 깜박이면서 무한 루트를 돌게 됩니다. Assert 기능과 비슷한 목적으로 사용할 수 있습니다.