오전
◎ARM◎
타이머
더보기에 있는 소스는 클럭의 신호 타이머로 조절하여
더보기
더보기 접기
//---------- 입출력 IO설정
접기
더보기 접기
#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10)
#define PIO_SODR (*(volatile unsigned int *) 0xFFFFF430) //출력
#define PIO_CODR (*(volatile unsigned int *) 0xFFFFF434) //출력 하지 않음
#define PIO_OER (*(volatile unsigned int *) 0xFFFFF410) //출력 방향 설정
#define PIO_PER (*(volatile unsigned int *) 0xFFFFF400) //병렬 입출력 제어 레지스터 병렬 입출력 포트로 사용한다.
#define PIO_PUER (*(volatile unsigned int *) 0xFFFFF464) //풀업
#define PIO_PUDR (*(volatile unsigned int *) 0xFFFFF460) //풀업 사용하지 않음
#define PIO_IFER (*(volatile unsigned int *) 0xFFFFF420) //글리치 필터
#define PIO_IER (*(volatile unsigned int *) 0xFFFFF440) //인터럽트 허용
#define PIO_ISR (*(volatile unsigned int *) 0xFFFFF44C)
#define PIO_ODR (*(volatile unsigned int *) 0xFFFFF414)
#define PIO_ASR (*(volatile unsigned int *) 0xFFFFF470)
#define PIO_PDR (*(volatile unsigned int *) 0xFFFFF404)
#define PIO_BSR (*(volatile unsigned int *) 0xFFFFF474)//주변장치 B선택 reg
접기
더보기 접기
//---------- 인터럽트 제어기 IO설정
#define AIC_IECR (*(volatile unsigned int *) 0xFFFFF120)
#define AIC_SMR ((volatile unsigned int *) 0xFFFFF000)
#define AIC_SVR ((volatile unsigned int *) 0xFFFFF080)
#define AIC_IDCR (*(volatile unsigned int *) 0xFFFFF124)
#define AIC_ICCR (*(volatile unsigned int *) 0xFFFFF128)
#define AIC_ISCR (*(volatile unsigned int *) 0xFFFFF12C)
#define AIC_EOICR (*(volatile unsigned int *) 0xFFFFF130)
접기
더보기 접기
//타이머 /카운트 관련 I/O제어 레지스터
#define TC0_CCR (*(volatile unsigned int *) 0xFFFA0000)//채널제어
#define TC0_CMR (*(volatile unsigned int *) 0xFFFA0004)//캡쳐모드 , 파형발생모드
#define TC0_CV (*(volatile unsigned int *) 0xFFFA0010)//카운터 값 레지스터
#define TC0_RA (*(volatile unsigned int *) 0xFFFA0014)//레지스터 A
#define TC0_RB (*(volatile unsigned int *) 0xFFFA0018)//레지스터 B
#define TC0_RC (*(volatile unsigned int *) 0xFFFA001C)//레지스터 C
#define TC0_SR (*(volatile unsigned int *) 0xFFFA0020)//상태 레지스터
#define TC0_IER (*(volatile unsigned int *) 0xFFFA0024)//인터럽트 허용
#define TC0_IDR (*(volatile unsigned int *) 0xFFFA0028)//인터럽트 금지
#define TC0_IMR (*(volatile unsigned int *) 0xFFFA002C)//인터럽트 마스크
#define TC0_BCR (*(volatile unsigned int *) 0xFFFA00C0)//블록제어
#define TC0_BMR (*(volatile unsigned int *) 0xFFFA00C4)//블러모트
접기
더보기 접기
//주기적인 타이머
#define PIT_MR (*(volatile unsigned int *) 0xFFFFFD30)
접기
더보기 접기
//디버그 유닛 설정
#define DBGU_CR (*(volatile unsigned int *) 0xFFFFF200)
#define DBGU_IDR (*(volatile unsigned int *) 0xFFFFF20C)
#define DBGU_MR (*(volatile unsigned int *) 0xFFFFF204)
#define DBGU_RHR (*(volatile unsigned int *) 0xFFFFF218)
#define DBGU_THR (*(volatile unsigned int *) 0xFFFFF21C)
#define DBGU_BRGR (*(volatile unsigned int *) 0xFFFFF220)
#define DBGU_SR (*(volatile unsigned int *) 0xFFFFF214)
#define DBGU_IER (*(volatile unsigned int *) 0xFFFFF208)
#define DBGU_IMR (*(volatile unsigned int *) 0xFFFFF210)
//---------- 전력 제어 설정
#define PMC_PCER (*(volatile unsigned int *) 0xFFFFFC10)
#define PMC_PCDR (*(volatile unsigned int *) 0xFFFFFC14)
#define MASTERCLOCK 48000000
void Delayms(unsigned int ms) //딜레이 함수..
{
volatile unsigned int count, countmax = (MASTERCLOCK / 10000) * ms;
접기
더보기 접기
for(count = 0; count < countmax; count++);
}
접기
더보기 접기
int main(void)
{
PMC_PCER = (unsigned int)1<<12;
PIO_BSR = (1 << 0) | (1 << 1);
PIO_PDR = (1 << 0) | (1 << 1);
TC0_CCR = (1 << 0) | (1 << 2);
TC0_CMR = (1 << 2) | (1 << 16) | (1 << 19) | (1 << 15);
접기
더보기 접기
TC0_RA = 30000;
TC0_RC = 0xffff;
//PIT_MR = 1 << 24;
while(1)
{
/* TC0_RA+=1;
if(TC0_RA == TC0_RC)
{
TC0_RA = 100;
}*/
}
return 0;
} // End Main...
접기
더보기
아무튼 어렵다..
오후
C++
다중상속
다중상속은 두개 이상의 부모클래스를 동시에 상속하는 경우를 말한다.
아래의예제를 보면 왜 다중상속을 사용하는지 알수 있다.
더보기 접기
#include <iostream>
#include <string>
using namespace std;
접기
더보기 접기
//학부생 클래스
class udg
{
public:
string name; //이름
string dep; //학부
//학사경고
void warn()
{
//구현생략
}
};
접기
더보기 접기
//기숙사 클래스
class dorm
{
public:
string build; //기숙사명
int roomnum; //방번호
//벌점 부여
void warn()
{
//구현생략
}
};
접기
더보기 접기
//기숙사생이면서 학부생인 경우
class udg_dorm:
public udg,
public dorm
{
public:
};
접기
더보기 접기
int main()
{
//기숙사생이면서 학부생인사람의 정보생성
udg_dorm std;
std.name = " 대원 .손 ";
std.dep = " Info & 수염괴수 ";
std.build = " 저~~기 어디 ";
std.roomnum = 1818;
접기
더보기 접기
//학사경고
std.udg::warn();
cout << " udg size = " << sizeof(udg) << endl;
cout << " dorm size = " << sizeof(dorm) << endl;
cout << " udg_dorm size = " << sizeof(std) << endl;
return 0;
}
접기
더보기 사이즈 출력
포함과 상속을 구분해서 사용하기
포함과 상속은기존에 만들어진 클래스를 재사용한다는 공통점을 가지고 있다. 이미 만들어진 클래스를 사용해서 새로운 클래스를 만들고자 할때 포함을 사용해야할지 상속을 사용해야할지 결정하기 힘든 경우에는 다음과 같이 하자.
* 포함은 Has - a 관계이다. A가 B를 가지고 있다면(Has) 포함을 사용하라.
*상속은 ls -a 관계이다. A가 B라면(ls) 상속을 사용하라.