陈迪迪🐼 qq925388955
屌丝一枚、
关注数: 19 粉丝数: 60 发帖数: 7,679 关注贴吧数: 26
有人帮忙看一下代码哪儿出问题了么 #include "msp430f5529.h" unsigned char RXD_data; void UART_Init() { P4SEL |= BIT5+BIT4; P4DIR |= BIT4; UCA1CTL1 |= UCSWRST; UCA1CTL1 |= UCSSEL_1; //时钟源是ACLK,32768,生成9600 UCA1BR0 = 3; UCA1BR1 = 0; UCA1MCTL |= UCBRS_3 + UCBRF_0; UCA1CTL1 &= ~UCSWRST; UCA1IE |= UCRXIE ; } void Clock_Init() { P5SEL |= BIT2+BIT3+BIT4+BIT5; // Port select XT1 UCSCTL6 &= ~(XT1OFF); // XT1 On UCSCTL6 &= ~(XT2OFF); // XT2 On UCSCTL6 |= XCAP_3; // Internal load cap do { UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags SFRIFG1 &= ~OFIFG; // Clear fault flags }while (SFRIFG1&OFIFG); // Test oscillator fault flag UCSCTL3 = SELREF_0+FLLREFDIV_0; // Set DCO FLL reference = XT2 __bis_SR_register(SCG0); // Disable the FLL control loop UCSCTL1 = DCORSEL_7; // Select DCO range 16MHz operation UCSCTL0 = 0x0000; // Set lowest possible DCOx, MODx UCSCTL2 |= FLLD_0+488; // Set DCO Multiplier for 8MHz // (15 + 1) * FLLRef = F_dcoclkdiv // F_dcoclkdiv=F_dco // (488+ 1) * 32768= 16MHz __bic_SR_register(SCG0); // Enable the FLL control loop __delay_cycles(250000); UCSCTL4 |=SELA_0+SELS_5; //ACLK = 32768HZ,SMCLK= 1MHZ,MCLK= 16MHZ UCSCTL5 |=DIVS_2; //4分频 } void main() { WDTCTL |= WDTPW + WDTHOLD; Clock_Init(); UART_Init(); _EINT(); while(1) { switch(RXD_data) { case '1': P7OUT|=BIT3; // 1 P6OUT|=BIT7; // 1 P6OUT&=~BIT6; // 0 P7OUT&=~BIT2; //0 break; case '2': P6OUT&=~BIT7; //0 P6OUT|=BIT6; //1 P7OUT&=~BIT3; //0 P7OUT|=BIT2; //1 break; case '3': P7OUT|=BIT3; // 1 P6OUT&=~BIT7; // 0 P6OUT&=~BIT6; // 0 P7OUT&=~BIT2; //0 break; case '4': P7OUT&=~BIT3; //0 P6OUT|=BIT7; // 1 P6OUT&=~BIT6; // 0 P7OUT&=~BIT2; //0 break; case '5': P6OUT&=~BIT7; //0 P6OUT&=~BIT6;//0 P7OUT&=~BIT2;//0 P7OUT&=~BIT3;//0 break; default: break; } } } #pragma vector=USCI_A1_VECTOR __interrupt void USCI_A0_ISR(void) { _DINT(); //先关上中断,接收正确的数据 switch(__even_in_range(UCA0IV,4)) { case 0:break; case 2: while(!(UCA0IFG&UCRXIFG)); RXD_data = UCA0RXBUF; while(!(UCA0IFG&UCRXIFG)); break; case 4:break; default: break; } _EINT(); }
首页 1 2 下一页