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

20150427-31번-차윤도 USART, 함수포인터

by 알 수 없는 사용자 2015. 4. 28.
728x90
반응형

# 1교시 H/W

 

노동절도 수업한단다 허허...

 

AVR 을 기능적으로 봤을때 제일처음했던것은 입출력, 스위치로 led 점등

led 를 켜고끄기위해 사용한기능은 단순히 입출력이고, GPIO를 사용

 

GPIO 는 일반목적이고, 단순히 하이로우로 사용

GPIO 와 상반되는 AFIO(Alternate Function) -ADC     중에 USART(UART) 를 다루는중

    -DAC

    -USART

    -SPI

    -TWI

    -PWM

USART 는 아트멜이고, UART는 USART를 포괄한다

UART 는 비동기식통신을 포함한다

ㄴ>약속이 가장중요하다 -> BAUD RATE

 

& 시리얼 통신 하이퍼 터미널 / UART

 

 

 

 

 

 

 

 

 

& DATA당 소요되는 시간

&

 

 

** 비동기 2배속 모드는 비동기 일반 모드보다 BAUD RATE 선택폭이 넓다

 

& USART 초기화

 

 

*설정기준

9600-NO-8-1-NONE
2배속모드

 

BAUD RATE = (16000000/8 X 9600)-1
          = 207

HIGH = (형변환연산자:unsigned char)207 >> 8
LOW  = 207

UBRR = 207


UCSRA = 0X02; //2배속모드정의
UCSRB = 0X18;
UCSRC = 0X06; //비동기모드,패리티사용X

 

GPIO 설정 //UART가 연결되있는 포트확인 PE0는 수신 PE1는 발신(DDRE=FE)

 

 

 

 

& 데이터 출력 실습

 

 

 

# 2교시 S/W

 

_______________________________________________________

int smart(char *A)
{

}

 test
{
 return smart;
}

 

원형추출
int smart(char *A);
int (*)(char *);

->
int (*test())(char *)
{
 return smart;
}

 

int (*)(const char *,...); -> printf의 원형
->
int (*test(int (*)(const char *,...)))(char *)
{
 return smart;
}

 

 P=test;

 int (*(*P)(int (*test(int (*)(const char *,...)))(char *))

_________________________________________________________

int (*(*P)(int (*test(int (*)(const char *,...)))(char *))

test 함수는 smart함수를 리턴하고
printf함수를 인자로받음
P는 test 함수를 가리킬수있는 함수포인터

_________________________________________________________

문제.

int smart(char *A);
smart함수를 가리키는 포인터 P ?

 

int (*P)(char *A);

_________________________________________________________

문제.

int (*)(const char *,...);

test()
{
 return P;
}

test() 함수의 형태는?

int (*test())(char *A)
{
 return P;
}

_________________________________________________________

& int (*P)(void)

 

 

& main 함수를 통한 인자의 전달

 

 

& char * argv[]

 

 

& 인자의 형성과정

 

 

함수포인터 부분을 정확히 이해못하고 일지를 써서...

틀린부분있으면 알려주세요 ^^:

728x90