10월, 2012의 게시물 표시

배열 값 구조체에 넣기

이거 C로 프로그램 짜면서 자주 햇갈린다 struct { uint8 name; uint8 age; }info_t; 라는 구조체가 있고 배열 data[2]={"홍길도",17};의 값을 구조체 넣을려면 info_t *info; info = (info_t*) data; 이렇게 사용해주면 많은 구조체에 다량의 배열값을 넣을 때 유용하다. 하지만 위와 같은 방법은 로컬 함수에서 모든 일(?)이 있을 때는 유리하지만 전체 프로그램에서 공유해서 사용하는 값이라면 스텍에 겹쳐지면 지워질 수 있기 때문에 전체에서 사용하는 값이라면 맵 카피와 같은 방법을 사용해야 한다. memset(&info, data, sizeof(inof)); 와 같이 사용해야 한다. 자주 까먹는데 왜자꾸 까먹는건지 아니면 이해를 잘못해서 자꾸 까먹나?

MSP430F5438 clk, uart, timer 초기화

MSP430을 사용하면서 혹시모를 삽질을 위해 초기화에서 주의해야 할 점을 몇 가지!! 1. clk를 초기화 할 때   unsigned int i;   P5SEL |= 0x06;                            // Port select XT2                  UCSCTL1 = 1;   UCSCTL6 = XCAP_3;   UCSCTL8 = 0;      for(i=0; (i<0x7FFF) && (SFRIFG1&OFIFG); i++) {           UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags           SFRIFG1 &= ~OFIFG;   }      UCSCTL6 &= ~XT2DRIVE0;   UCSCTL4 = SELA__XT1CLK | SELS__XT2CLK | SELM__XT2CLK; // ACLK(XT1),     MCLK/SMCLK(XT2)   UCSCTL5 = DIVS_3; // MCLK (20M), SMCLK(2.5M), ACLK(32.768K) msp430에서 clk를 초기화 시키지 않으면 모든게 동작하지 않는다. 2. uart RX interrupt 초기화 할 때     UCA1IE |= UCRXIE;      를 해야줘야 인터...