|
大家好,我用MSP430F248做的一个程序,功能很简单,就是隔2秒左右串口发一个数据出去,但现在问题是用仿真器数据能发出,但是上电后串口数据就无法发出了(程序确定在跑,我用IO口输出个翻转电平监视的),请各位高手帮忙看看啊。
程序如下:
#include "msp430x24x.h"
unsigned char NoData[]={'!','3','3','N','O','?','R'}; //没有数据发送的命令
void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; BCSCTL1 &= ~XT2OFF; //打开XT振荡器 BCSCTL2 |= SELM1 + SELS; //MCLK为8MHZ,SMCLK为1MHZ P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD UCA0CTL1 |= UCSSEL_1; // CLK = ACLK UCA0BR0 = 0x03; // 32kHz/9600 = 3.41 UCA0BR1 = 0x00; UCA0MCTL = UCBRS1 + UCBRS0; // Modulation UCBRSx = 3 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** CCTL0 = CCIE; //使能CCR0中断 CCR0 = 6000; //设定周期2S TACTL = TASSEL_1 + ID_3 + MC_1; //定时器A的时钟源选择ACLK,增计数模式 P1DIR = 0xff; //设置P2口方向为输出 P1OUT = 0xff; P6DIR = 0xff; P6OUT = 0xff;
_EINT(); //使能全局中断
while(1) {};
}
#pragma vector = TIMERA0_VECTOR __interrupt void Timer_A (void) { _DINT(); P1OUT ^= 0xff; //P2口输出取反 for(int i=0;i<7;i++) { while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready? UCA0TXBUF = NoData; // TX -> RXed character } _EINT(); }
|
|