请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP430FR5994 主题中讨论的其他部件:EK-LM4F120XL
工具/软件:Code Composer Studio
我正在尝试测试以下代码,以便在启动板上测试UART,但在运行该代码时,接收缓冲区(UCA0RXBUF)不显示任何收到的十六进制代码。 此外,我还对一个LED进行了编程,当来自传输缓冲区(UCA0TXBUF)的字符回波到接收缓冲区(UCA0RXBUF)时,它会关闭。 但不管用。 请求帮助!
#include <MSP430.h>
volatile unsigned int I;
/*
main.c
*/
int main(void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//为2.1 USI_A0 UART操作
P2SEL0 &=~(BIT0| BIT1)设置WFP 2.0 和WFP;
P2SEL1 |= BIT0|BIT1DP;
//在WFP 1.0 上配置LED,用于调试
P1OUT |= BIT0; //LED WFP 1.0 启动时打开
//禁用GPIO通电默认高阻抗模式,以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLP5;
//启动时钟系统,最大DCO设置~8MHz
CSCTL0_H = CSCKEY >> 8; //解锁时钟寄存器
CSCTL1 = DCOFSEL_3 | DCORSEL; //将DCO设置为8MHz
CSCTL2 = LAST__VLOCLK | UART__DCOCLK | SELM__DCOCLK;
CSCTL3 = DSCISI__1 | DIVAN__1 | DILWVM__1;//为UCS0
模式设置UCS0;CST_0;配置UCS0
//启用软件重置
UCA0CTLW0 |= UCSSEL__SMCLK; // CLK = SMCLK
//波特率计算
// 80万/(16*9600)=9600= 52.083
//部分= 0.083
// UCBRFx = int ((MCSN-52)*16)= 1 52.083
0LW0 = 52; // 8CBRF= UC01
~= UCA0100;UCSRF= UCA0CA0 = UCA0 //初始化eUSCI,禁用软件重置
UCA0IE |= UCRXIE; //启用USCI_A0 RX中断
UCA0TXBUF = 0x41; //测试发送'A'
__bis_sr_register(LPM3_bits | GIE); //输入LPM3,启用中断
__no_operation(); //用于调试器
}
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#pragma vector=USI_A0_vector
__interrupt void USI_A0_ISR(void)
#Elif defined(__GSCI__)
void __attribute__(void(u(USI_A0_vector)
编译器#uelle_us_use)
#endif
{
SWITCH(__EIN_RANGE(UCA0IV, USCI_UART_UCTXCPTIFG))
{
CASE USI_NONE:
Break;
CASE UTO_UART_UCRXIFG:
while (!(UC0IFG & UCTXIFG);
UCA0TCSTCUF = UCA0RUART_UART_UCRXIFF; CA_UCASCI_USCI_UF; CAXF; CAUST_UCAUSB0 ~CA_UCA_UCAUSB;
CAUSB; CA_UCAUSB; CAUSB; CAUSB; CAUC_UCAUSB; CA_UC_UCAXF; CAUSB; CAUSB; CAUSB; CA_UC_UCAUSB; CA 1.0
}