본문 바로가기
코스웨어/14년 스마트컨트롤러

DBGU.c 참고 자료

by 와이즈캣 2014. 7. 9.
728x90
반응형

#include "DBGU.h"

//DBGU초기화
void DBGU_INIT()
{
  // 1.송/수신부를 리셋.
  DBGU_CR = (1 << RSTRX) | (1 << RSTTX);  //송/수신부를 리셋시키고 동작을 중지 시킴.
  // 2. 인터럽트 비활성
  DBGU_IDR = 0xFFFFFFFF;    //관련 인터럽트 비활성화
  // 3. 외부 연결용 pin설정.
  PIOA_ASR = (1 << DRXD) | (1 << DTXD);    //Peripheral A 사용. 
  PIOA_BSR = 0;  //B모드 비활성.
  PIOA_PDR = (1 << DRXD) | (1 << DTXD);    //I/O포트로 사용하지 않음.
  // 4. 포트 속도 설정.
  DBGU_BRGR = CD;      //115200bps
  // 5. 포트 모드 설정.
  DBGU_MR = (0 << CHMODE) | (4 << PAR);  //노멀모드, 패리티x
  // 6. 송/수신 모드 활성화
  DBGU_CR = (1 << TXEN) | (1 << RXEN);    //송/수신 허용
  
  return ;
}

// 7. Data송신용 함수의 제작
void Send_Char(unsigned char ucSData)
{
  // 7-2  DBGU_SR레지스터 폴링 (송신이 가능한지 check)
  while(0 == (DBGU_SR & (1 << TXRDY)));    //TXRDY비트 검사하여 1이면 탈출.
                      // 1이면 송신준비완료
  // 7-3 DBGU 유닛에 문자 전송.
  DBGU_THR = ucSData;    //송신버퍼에 데이터 넣음.

  return ;
}


// 8. Data 수신용 함수의 제작
unsigned char Recv_Char()
{
  // 8-2 DBGU_SR레지스터 폴링. (수신가능하지 check)
  while(0 == (DBGU_SR & (1 << RXRDY)));    //RXRDY비트 검사하여 1이면 탈출.
                      // 1이면 수신준비완료.
  return DBGU_RHR;    //수신버퍼의 값을 리턴.
}


//문자열을 보내는 함수
void Send_String(void *vpData)
{
  //while문과 Send_Char() 만 사용. 변수 추가하지 말 것.
  while('\0' !=  (*((unsigned char *)vpData)))
  {
    Send_Char(*((unsigned char *)vpData));
    (unsigned char *)vpData++;
  }  

  return ;
}


728x90