#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=0; 3>iCnt; ++iCnt)
{ // 0~2번 PIN 순차적 on/off
PIO_SODR = 0x00000007; // High (PA0~2 LED off)
for(iCount=0; 1000000 >= iCount; ++iCount); // 딜레이
PIO_CODR = 0x00000001<<iCnt; // Low (LED on)
for(iCount=0; 1000000 >= iCount; ++iCount); // 딜레이
}
}
} // 펌웨어는 리턴시키면 안좋다.
#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=0; 3>iCnt; ++iCnt)
{ // 0~2번 PIN 순차적 on/off
PIO_SODR = 0x00000007; // High (PA0~2 LED off)
for(iCount=0; 1000000 >= iCount; ++iCount); // 딜레이
PIO_CODR = 0x00000001<<iCnt; // Low (LED on)
for(iCount=0; 1000000 >= iCount; ++iCount); // 딜레이
}
}
} // 펌웨어는 리턴시키면 안좋다.
Low(CODR) 신호가 들어가면 LED는 off되고 반대로 High(SODR) 신호가 들어가면 On된다.
PA0~2번에 LED를 연결시키고 3.3v를 연결시킨다. 위에 프로그램을 실행시키면 PA0번 부터 2번까지 순차적으로 LED를 On/Off를 무한 반복한다.
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 |