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.
工具/软件: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");
}
}