Main 소스
#include "AT91SAM7S256.h" #include "LED.h" #define PICNT 20 void PIT_Init(void); void ISR_System(void); unsigned int iCnt; int main(void) { LED_Init(); PIT_Init();
while (1) {
} return 0; } void PIT_Init(void) { AT91C_AIC_SVR[AT91C_ID_SYS] = (volatile unsigned int)ISR_System; *AT91C_AIC_IECR = (1<<AT91C_ID_SYS); *AT91C_PITC_PIMR= AT91C_PITC_PITEN | AT91C_PITC_PITIEN | 0xF4240; } void ISR_System(void) { if( 0 != *AT91C_PITC_PISR ) {
if(1 ==((*AT91C_PITC_PIVR >> PICNT))) { ++iCnt; if(0 == iCnt%3) { LED_Toggle(); } } } }
|
LED.c 소스
#include "LED.h" static volatile unsigned int uiState; void LED_Init(void) { *AT91C_PMC_PCER = (1<<AT91C_ID_PIOA); *AT91C_PIOA_PER = LED_PIN; *AT91C_PIOA_OER = LED_PIN; *AT91C_PIOA_PPUDR = LED_PIN; //풀업저항 OFF *AT91C_PIOA_SODR = LED_PIN; uiState = __OFF__; } void LED_ON(void) { *AT91C_PIOA_CODR=LED_PIN; uiState = __ON__; } void LED_OFF(void) { *AT91C_PIOA_SODR=LED_PIN; uiState = __OFF__;
} unsigned int LED_State(void) { return uiState; } void LED_Toggle(void) { if( __OFF__ == uiState) { LED_ON(); } else { LED_OFF(); } }
|
LED.h
#ifndef __LED_H__ #define __LED_H__ #include "AT91SAM7S256.h" #define LED_PIN AT91C_PIO_PA0 #define __ON__ 1 #define __OFF__ 0 void LED_ON(void); void LED_OFF(void); void LED_Init(void); unsigned int LED_State(void); void LED_Toggle(void); #endif |
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
ADS LED On/Off 양태영 (1) | 2014.10.31 |
---|---|
ADS LED ON/OFF(PIT) 김화린 (0) | 2014.10.31 |
ADS LED ON/OFF(PIT) 문대영 (0) | 2014.10.31 |
ARM PIT 이용한 LED - 허수웅 (0) | 2014.10.31 |
10.30 PIT 활용 LED On/Off [오두환] (0) | 2014.10.30 |
2014.10.29 ARM Source 구조체 -> 포인터 변경 소스코딩 - 오두환 (0) | 2014.10.30 |
2014.10.29 업무보고 18번 오영주 (5) | 2014.10.30 |
ARM main source - 허수웅 (0) | 2014.10.29 |