This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430F5529:控制多个MSP430 F5529

Guru**** 2223470 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/620026/compiler-msp430f5529-control-multiple-msp430-f5529

部件号:MSP430F5529

工具/软件:TI C/C++编译器

大家好,我想同时控制多个MSP430 F5529,因此我为它们设置了ID。

但也有一些问题,如果我使用USB为IC供电,我的程序可以正常运行。

但当我使用直流电源供电时,RX  的返回结果将是错误的。

所以我希望有人能帮我解决问题, 我会感谢您的,谢谢。

我将发布 我的测试代码,请帮我检查。

这是F5529的第一个代码

#include <MSP4S.h>

void DCO25MHzInit (void);

void TA0Init (void);
无符号字符计数器;
无符号长数组[4];
unsigned char TI_ID = 1;
无符号字符I;
无符号字符A;

unsigned char uartreceive (unsigned char *redata,unsigned char datalength)

while (数据长度)

while (!(UCA0IFG & UCRXIFG ));

UCA1RXBUF =*重新数据;
redata++;
数据长度--;
}
(UCA1STAT和UCBUSY);
}
int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

DCO25MHzInit();

TA0Init();

//UCA0CTL0 |= UCSWRST;

P3SEL || BIT3+BIT4;//启用RX和TX引脚
UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 0xD9;// 25MHz/11.52万 = 217.01 = 0xD9
UCA0BR1 = 0x00;//
UCA0MCTL || UCBRS_0 + UCBRF_0;//
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
UCA0MCTL || UCBRS_1 + UCBRF_0;//调制UCBRSx=1,UCBRFx=0

UCA0IE |= UCRXIE;
UCA0IE |= UCTXIE;

_enable_interrupts();

}
#pragma vector=USI_A0_vector
__interrupt void one_UART_ISR(void)

对于(i=0;i<4;i++)

IF (计数器= UCA0RXBUF)

uartreceive (数组,4);
array[i]=计数器;
}
}
IF (TI_ID = array[0])

UCA0TXBUF = 2;
A = UCA0TXBUF;
}
否则

_ASM (" NOP");
}

}

这是F5529的第二个代码

#include <MSP4S.h>

void DCO25MHzInit (void);

void TA0Init (void);

无符号字符计数器;
无符号长数组[4];
unsigned char TI_ID2 =2;
无符号字符I;
无符号字符A;

unsigned char uartreceive (unsigned char *redata,unsigned char datalength)

while (数据长度)

while (!(UCA0IFG & UCRXIFG ));

UCA1RXBUF =*重新数据;
redata++;
数据长度--;
}
(UCA1STAT和UCBUSY);
}
int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

DCO25MHzInit();

TA0Init();

P3SEL || BIT3+BIT4;//启用RX和TX引脚
UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 0xD9;// 25MHz/11.52万 = 217.01 = 0xD9
UCA0BR1 = 0x00;//
UCA0MCTL || UCBRS_0 + UCBRF_0;//
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
UCA0MCTL || UCBRS_1 + UCBRF_0;//调制UCBRSx=1,UCBRFx=0

UCA0IE |= UCRXIE;
UCA0IE |= UCTXIE;

_enable_interrupts();
}
#pragma vector=USI_A0_vector
__interrupt void one_UART_ISR(void)

I = UCA0RXBUF;
IF (TI_ID2 = I)

UCA0TXBUF = 100;
A = UCA0TXBUF;

}
否则

_ASM (" NOP");
}
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    显示缺少的代码。