본문 바로가기

ARM/강의

LED 제어 테스트

#define PIO_PER (*((volatile unsigned int*)0xFFFFF400))   // PIO Enable
#define PIO_PDR (*((volatile unsigned int*)0xFFFFF404))   // PIO Disable
#define PIO_OER (*((volatile unsigned int*)0xFFFFF410))   // output Enable
#define PIO_SODR (*((volatile unsigned int*)0xFFFFF430))  // set output data
#define PIO_CODR (*((volatile unsigned int*)0xFFFFF434))  // clear output data

int main()
{
  volatile unsigned int iCount;
  int iCnt;

  PIO_PDR = 0xFFFFFFFF;  // PA 모두 비활성화
  PIO_PER = 0x00000007;  // PA0 활성화
  PIO_OER = 0x00000007;  // PA0 출력 활성화
  while (1)
  {
    for(iCnt=03>iCnt; ++iCnt)
    {  // 0~2번 PIN 순차적 on/off
      PIO_SODR = 0x00000007;      // High (PA0~2 LED off)
      for(iCount=01000000 >= iCount; ++iCount); // 딜레이
      PIO_CODR = 0x00000001<<iCnt;  // Low (LED on)
      for(iCount=01000000 >= iCount; ++iCount); // 딜레이
    }
  }
}  // 펌웨어는 리턴시키면 안좋다.
Low(CODR) 신호가 들어가면 LED는 off되고 반대로 High(SODR) 신호가 들어가면 On된다.
PA0~2번에 LED를 연결시키고 3.3v를 연결시킨다. 위에 프로그램을 실행시키면 PA0번 부터 2번까지 순차적으로 LED를 On/Off를 무한 반복한다.


'ARM > 강의' 카테고리의 다른 글

LCD + 센서 제어 프로그래밍  (0) 2011.02.25
AT91SAM7S256의 내부 구조  (0) 2011.02.16
A/D 컨버터(ADC)  (0) 2011.02.14
시리얼 통신으로 문자열 출력 함수 만들기!!  (0) 2011.02.14
링커 스크립트 분석  (0) 2011.02.08