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;
를 해야줘야 인터럽트를 사용할 수 있다.
3. timer interrupt를 사용하기 위해서
P7.0, P7.1를 select해줘야 인터럽트 벡터로 점프한다.
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;
를 해야줘야 인터럽트를 사용할 수 있다.
3. timer interrupt를 사용하기 위해서
P7.0, P7.1를 select해줘야 인터럽트 벡터로 점프한다.
댓글
댓글 쓰기