运行程序我在主函数写 Uart0_Send_Byte能收到单片机发过来的数据,但是我用串口助手发数据给单片机没有反应,完全接收不了数据。主函数里有开全局中断__bis_SR_register(GIE);//打开全局中断
msp430F4152单片机 485芯片是TI的ISO3082,P65和66是485的RX和TX,P63是485的ctrl。
void RS485_init(void)
{
P6SEL |= BIT5+BIT6;//设置p6.5与p6.6为RX和TX
UCA0CTL1 |= UCSSEL_1; // CLK = ACLK
//UCA0CTL0 无校验位 8位数据位 一位停止位
UCA0BR0 = 0x03; // 32k/9600 - 3.41
UCA0BR1 = 0x00; //
UCA0MCTL = 0x06; // Modulation
UCA0CTL1 &= ~UCSWRST; // Initialize USCI state machine 软件复位禁止
IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt
P6DIR |= BIT3;
P6OUT |= BIT3;//接收
}
void Uart0_Send_Byte(unsigned char data)
{
while(!(IFG2&UCA0TXIFG));//发送寄存器空的时候发送数据
P6OUT &= ~BIT3;// 发送状态
UCA0TXBUF = data;
P6OUT |= BIT3; //接收
}
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
unsigned char data=0;
data = UCA0RXBUF;//接收到的数据存起来
Uart0_Send_Byte(data);//将接收到的数据再发送出去
}
试试用其它方式判断接收功能,而不是重新发送出去,在中断里调用发送可能有点问题。