“线程”中讨论的其它部件:MSP-EXP430FR5994
您好,
我的 MSP430 FR5994有问题
我想使用 UCA 1来处理 UART,但我的代码不起作用
同一程序适用于 UCA2和 UCA3,但不适用于 UCA1
UCA1:
void UART_INIT (void){
//配置 GPIO
P2SEL1 &=~(BIT5 | BIT6);
P2SEL0 |=(BIT5 | BIT6);
//为 UART 模式配置 USCI_A3
UCA1CTLW0 = UCSWRST;//重置 eUSCI
UCA1CTLW0 |= UCSSEL__SMCLK;// CLK = SMCLK
UCA1BRW = 8;// 1000000/115200 = 8.68
UCA1MCTLW = 0xD600;// 1000000/115200 - INT (1000000/115200)= 0.68
// UCBRSx 值= 0xD6 (请参阅 UG)
UCA1CTLW0 &=~ UCSWRST;//从重置中释放
UCA1IE |= UCRXIE;//启用 USCI_A1 RX 中断
}
void UART_sendChar (字符){
同时(! (UCA1IFG 和 UCTXIFG);
UCA1TXBUF =字符;
}
UCA2:(它起作用)(当然,这里还有其他传输参数,但对于 UCA1中提到的参数,它也起作用)
void UART_INIT (void){
//为 USCI_A2 UART 配置 GPIO
P5SEL1 &=~(BIT4 | BIT5);
P5SEL0 |=(BIT4 | BIT5);// USCI_A2 UART 操作
//为 SDI12配置 USCI_A2
UCA2CTLW0 |= UCSWRST;//重置 eUSCI
UCA2CTLW0 = 0xD081;// CLK = SMCLK,数据= 7位,奇偶校验=偶数
UCA2BRW =(1000000ul / 1200)+ 1;//波特率= 1200
UCA2MCTLW = 0xD600;
UCA2CTLW0 &=~UCSWRST;//从重置中释放
}
使 SDI12_sendChar (字符)无效{
While (!(UCA2IFG 和 UCTXIFG));
UCA2TXBUF =字符;
}
当然,UCA2和 UCA3使用其他引脚配置。
我在评估版电路板上试用了此代码:MSP-EXP430FR5994,但也在 PCB 上试用,我使用(64PIN) MSP430FR5994IPM 制作了此代码。 我的 UCA1 UART 在这两种情况下都有问题
谢谢,
Przemysław Zielony