본문 바로가기
코스웨어/10년 스마트폰BSP

[BSP]업무일지 - 김병찬 - 20100707

by 알 수 없는 사용자 2010. 7. 8.
728x90
반응형

ARM -  PIT이용 0.5초마다 하이퍼터미널에 숫자 적기


#include "ioarm.h"

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

#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10)
/////////////////////////////////////////////////////////

#define MASTERCLOCK 48000000

//--------- 딜레이 함수

void Delayms(unsigned int ms)
{
  volatile unsigned int count, countmax = (MASTERCLOCK / 10000) * ms;

  for(count = 0; count < countmax; count++); 
}

////////////////////////////////////////////


int num=0;
int led=0;
int cnt=0;

//변수 led를 하이퍼터미널에 숫자대로 송신하는 코드
void Hyperprint() 
{
    int i=0;
    int cnum=0;
    int knum;
 
     knum=num;
 
     while(knum!=0)
    {
         knum=knum/10;
          cnum++;
    }

 for(i=cnum; i>=1; i--)
 {
     if(cnum==i-1)
     {
         DBGU_THR = (num/(pow(10,i)))+48;
         Delayms(5);
   
     }
  
     else if(i==1)
     {
          DBGU_THR = (num%10)+48;
          Delayms(5);
     }
  
     else
     {
   
          DBGU_THR = ((num%(int)(pow(10,i))/(pow(10,i-1))))+48;
          Delayms(5);
     }
    
  }
   
}


void f_interrupt()
{
 int status;
 cnt++; //cnt 는 전역변수
 
 if(cnt==3) //cnt==3 이면 500,000 * 3 = 1,500,000 이므로 0.5초가 된다
 {
  if(led==4)
  {
   PIO_CODR =1<<0 | 1<<1 | 1<<2 | 1<<3;
   led =0;
  }
  else
  {
   PIO_SODR=1<<(led);
   led++;
  }
  num++;
 
  Hyperprint();
 
  cnt=0;
 }

 status=PIT_PIVR;    //PIVR을 읽어주면 클리어가 된다

 
 
}


int main(void)
{
 PMC_PCER = 1<<2;
 PIO_PDR = 1<<9 | 1<<10;   //9,10번핀 병렬포트로 사용안함
 PIO_ASR = 1<<9 | 1<<10;   //통신을 위해 9,10번핀 장치 A로 허용

 PIO_PER = 1<<0 | 1<<1 | 1<<2 | 1<<3;  //led를 켜기위해 허용
 PIO_OER = 1<<0 | 1<<1 | 1<<2 | 1<<3;//출력 허용
 
 
 DBGU_CR = 1<<6;             //송신부 동작 허용
 DBGU_MR = 1<<11;          //모드 설정 
 DBGU_BRGR = 26;             //cd 값 26 = 보레이트 115200;
 
 
 AIC_IECR = 1<<1;           //인터럽트 허용
 AIC_SMR[1] =  1<<5|1<<2; //인터럽트 모드 설정
 AIC_SVR[1] = (unsigned int) f_interrupt;//vector에 함수주소
 
 PIT_MR = 1<<24 | 1<<25 | 500000;     //PIT 인터럽트 출력, pit인에이블, PIV 값 입력 = 500,000

 while(1)
 {
 
 }
  
} // End Main....

 



 

 

728x90