大家好,我用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();
}
LZ检查一下你的TX线时候连接是是你调试时接收端的RX线,再就是观测接收端的波特率设置
谢谢楼上,硬接我已经看过了肯定没问题,请大家帮我看看代码有什么问题吗
串口发送到那里?PC还是目标版,如果是目标版把TXD,RXD跳帽去掉试试,如果是PC的话运行的时候用手摸一下TXD,RXD看看PC是否有收到,可能是虚电平
串口发送到zigbee的无线传输模块,模块直接插在单片机的板子上,我现在考虑会不会因为是32.7KHz的晶振没有加12pf电容造成这情况