본문 바로가기

ARM7

ARM7 출력포트로 LED 제어 하기

//---------- 입출력 IO설정

#define PIO_SODR (*(volatile unsigned int *) 0xFFFFF430) //출력  (volatile 컴파일러듸 설정을 따르지 않고 0xFFFFF430  고정으로 설정해서 사용해겠다 는뜻)
#define PIO_CODR (*(volatile unsigned int *) 0xFFFFF434) //출력 하지 않음
#define PIO_OER  (*(volatile unsigned int *) 0xFFFFF410) //출력 방향 설정
#define PIO_PER  (*(volatile unsigned int *) 0xFFFFF400) //병렬 입출력 제어 레지스터 병렬 입출력 포트로 사용한다.

//---------- 전력 제어 설정

#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10)
// PCER 전역관련 레지스터
//PMC_PCER
#define MASTERCLOCK 48000000 // MASTERCLOCK 보드내에서 기준이 되는 클럭 -크리스털 발진기에서 증폭해서 설정한다.

//--------- 전역 변수

void PIO_ISR02(void);

void Delayms(unsigned int ms) //딜레이 함수..
{
  volatile unsigned int count, countmax = (MASTERCLOCK / 10000) * ms;

  for(count = 0; count < countmax; count++);
}
 
int main(void)
{
 int i=0;
 PIO_OER = 0xFFFFFFFF;
/* 츌력포트 를 32비트를 모두 개방하겠다는뜻이다.(입력포트가 없기 때문에 귀찮아서 개산하기 귀찬아서 그냥 다 열어 버렸다 ,ㅡ,ㅡ;;*/
 // 0000000FF;포트 출력 방향 설정 32비트  0 이면 입력 1이면 출력 (.....000001111 1111 1111  = 12비트 출력으로쓰겟다. 0-11포트 출력)
 PIO_SODR = 0x00000700;   //PA8 출력  포트를 출력
 Delayms(50);

   while(1)// 무한루프

 { 
 for(i=0;i<7;i=i+2)
 {
  PIO_SODR = 0x00015000<<i;
  Delayms(500);
  PIO_CODR = 0xFFFFFFFF;
 Delayms(500);
   }
 
 }
 return 0;

//PIO_SODR = 0x00000001;  // 포트PA0 번 출력 ON
//Delayms(500);//딜레이이
// PIO_CODR = 0x0000000F; // 0-3번 포트까지 OFF  PIO_CODR->>OFF  
// PIO_SODR = 0x00000002; // 포트PA1 번 PIO_SODR 출력 ->>ON