#define DELAY(A) for(iCount=0; (A) >= iCount; ++iCount) // Delay Macro
void DBGU_Str(const char *cString)
{
while(*cString != 0)
{ // NULL이 올때까지 TX호출
DBGU_TX(*cString);
++cString;
DELAY(30000);
}
return;
}
근데 위에 보면 딜레이가있는데 다른사람은 딜레이없어도 전송이 잘만되는데 나만 딜레이를 2만이상줘야
제대로 전송이 되는 것이였다....문자열 전송은 그냥 BDGU_Str("hello")이렇게 호출해주면 끝~~
거듭제곱 구하는 함수
int square(int N, int cnt) // 거듭제곱을 구하는 함수
{
if(cnt==0) // cnt가 0이면 1을 리턴
return 1;
else // cnt가 0을 초과할 경우
return N*square(N,--cnt); // 자기 자신인 square함수를 부르고, cnt의 값을 1 감소
}
int main()
{
int iCnt;
char cBuf[]="0000";
unsigned short usVal=1023;
for(iCnt=0; 4>iCnt; ++iCnt)
{
cBuf[3-iCnt]=((usVal/square(10, iCnt))%10)+'0';
}
DBGU_Init(); // DBGU Setting
DBGU_Str(cBuf);
while (1)
{
}
return 0;
}
cBuf[3]=(1023%10)+48 이란 식이되고 cBuf[3]=3+48, cBuf[3]=51 이므로 결과적으로 문자 3이 cBuf[3]에 들어간다. 이렇게 죽하면 cBuf에는 문자열 1024이 저장되어 문자열을 전송하면 하이퍼터미널에는 1023이 출력된다
제곱함수를 만들지 않고 그냥 변수하나만 추가해서 만들수도있다. 단지 만들어 놓은 함수가있어서 썼을뿐임..
'ARM > 강의' 카테고리의 다른 글
LCD + 센서 제어 프로그래밍 (0) | 2011.02.25 |
---|---|
AT91SAM7S256의 내부 구조 (0) | 2011.02.16 |
A/D 컨버터(ADC) (0) | 2011.02.14 |
LED 제어 테스트 (0) | 2011.02.09 |
링커 스크립트 분석 (0) | 2011.02.08 |