您好!
我正在使用 msp430f5659并尝试连接 UART。 我无法传输任何字符。 我的 UCS 代码是:
空时钟()
{
UCSCTL3 |= SELREF_2; //设置 DCO FLL 基准= REFO
UCSCTL4 |= SELA_2; //设置 ACLK = REFO
_bis_SR_register (SCG0); //禁用 FLL 控制循环
UCSCTL0 = 0x0000; //设置可能的最低 DCOx、MODx
UCSCTL1 = DCORSEL_4; //选择 DCO 范围8MHz 运行
UCSCTL2 = FLLD_1 + 121; //将 DCO 乘法器设置为4MHz
//(N + 1)* FLLRef = Fdco
//(121 + 1)* 32768 = 4MHz
//设置 FLL Div = fDCOCLK/2
_BIC_SR_register (SCG0); //启用 FLL 控制环路
// DCO 范围位已经存在时、DCO 的最坏情况稳定时间
//已更改 n x 32 x 32 x f_MCLK / f_FLL_reference。 请参阅5xx 中的 UCS 一章
// UG 进行优化。
// 32 x 32 x 4 MHz/32、768Hz = 125000 = DCO 稳定的 MCLK 周期
_DELAY_CYCLES (125000);//
//循环直到 XT1、XT2和 DCO 故障标志被清除
操作
{
UCSCTL7 &=~(XT2OFFG + XT1LFOFFG + DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG; //清除故障标志
} while (SFRIFG1&OFIFG); //测试振荡器故障标志
}
UART 初始化代码为:
void UART(){
P9SEL |= RXD + TXD; //分别为 P9.2和 P9.3分配 TX 和 RX 功能
UCA2CTL1 |=UCSWRST;
UCA2CTL1 |= UCSSEL_ACLK; //选择 USCI 模块的 SMCLK 1MHz 时钟源
UCA2CTL0 = 0x00; //无奇偶校验,8位模式,lsb 优先,UART 异步模式,停止位=1
UCA2BR0=416; //波特率发生器的预取值9600bps
UCA2BR1=0;
UCA2MCTL=UCBRS_5 + UCBRF_0; //调制 UCBRSx=5、UCBRFx=0
UCA2CTL1 &=~UCSWRST; //初始化 USCI 状态机
UCA2IE |= UCRXIE; //启用 USCI_A0 RX 中断
_bis_SR_register (GIE); //全局中断使能
}
我无法确定问题的位置。