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.

[参考译文] CCS/MSP430FR2353:MSP430FR2355上的 UART 示例

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/795422/ccs-msp430fr2353-uart-example-on-msp430fr2355

器件型号:MSP430FR2353

工具/软件:Code Composer Studio

我正在尝试在我的 MSP exp430fr2355 LaunchPad 上运行此代码。  我正在使用 TI 云工具编译和加载代码。  它构建时没有错误、并且似乎正在运行。  我在 Terra Term 或调试器中看不到任何输出。  不确定我需要更改什么才能实际看到输出。

#include

void Software_Trim ();//软件调整可获得最佳 DCOFTRIM 值
#define MCLK_FREQ_MHz 1 // MCLK = 1MHz
unsigned int i;
unsigned char TXData []={"Enerpac"};

int main (空)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

_bis_SR_register (SCG0);//禁用 FLL
CSCTL3 = SELREF_REFOCLK;//将 REFO 设置为 FLL 基准源
CSCTL1 = DCOFTRIMEN_1 | DCOFTRIM0 | DCOFTRIM1 | DCORSEL_0;// DCOFTRIM = 3、DCO 范围= 1MHz
CSCTL2 = FLLD_0 + 30;// DCODIV = 1MHz
_DELAY_CYCLES (3);
_BIC_SR_register (SCG0);//启用 FLL
Software_Trim ();//软件调整可获得最佳 DCOFTRIM 值
CSCTL4 = SELMS_DCOCLKDIV | SELA_REFOCLK;//将默认 REFO (~32768Hz)设置为 ACLK 源、ACLK = 32768Hz
//默认 DCODIV 为 MCLK 和 SMCLK 源

PM5CTL0 &=~LOCKLPM5;//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
P1DIR |= BIT0;
P1OUT &=~BIT0;// P1.0 OUT 低电平
P1OUT |= BIT0;

//配置 UART 引脚
P1SEL0 |= BIT6 | BIT7;//将2个 UART 引脚设置为第二功能

//配置 UART
UCA0CTLW0 |= UCSWRST;//将 eUSCI 置于复位状态
UCA0CTLW0 |= UCSSEL_SMCLK;
//波特率计算
UCA0BR0 = 8;// 1000000/115200 = 8.68
UCA0MCTLW = 0xD600;// 1000000/115200 - INT (1000000/115200)=0.68
// UCBRSx 值= 0xD6 (请参阅 UG)
UCA0BR1=0;
UCA0CTLW0 &=~UCSWRST;//初始化 eUSCI
UCA0IE |= UCRXIE;//启用 USCI_A0 RX 中断

while (1)

for (i=0;i<=6;i++)

while (!(UCA0IFG & UCTXIFG));
UCA0TXBUF = TXData[i];//将数据加载到缓冲区中

//_ bis_SR_register (LPM0_bits|GIE);//输入 LPM0
__no_operation();//用于调试器

空 Software_Trim ()

unsigned int oldDcotTap = 0xFFFF;
unsigned int newDcoTap = 0xFFFF;
unsigned int newDcoDelta = 0xFFFF;
unsigned int bestDcoDelta = 0xFFFF;
unsigned int csCtl0Copy = 0;
unsigned int csCtl1Copy = 0;
无符号 int csCtl0Read = 0;
无符号 int csCtl1Read = 0;
unsigned int dcoFreqTrim = 3;
unsigned char endLoop = 0;

操作

CSCTL0 = 0x100;// DCO 抽头= 256
操作

CSCTL7 &=~DCOFFG;//清除 DCO 故障标志
} while (CSCTL7 & DCOFFG);//测试 DCO 故障标志

__DELAY_CYCLLES ((unsigned int) 3000 * MCLK_FREQ_MHz);//等待 FLL 锁定状态(FLLUNLOCK)保持稳定
//建议等待24个经过分频的 FLL 参考时钟周期
while (((CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1))和&((CSCTL7 & DCOFFG)= 0));

CSCCtl0Read = CSCTL0;//读取 CSCTL0
CSCCtl1Read = CSCTL1;//读取 CSCTL1

oldDcoTap = newDcoTap;//记录上次的 DCOTAP 值
newDcoTap = csCtl0Read & 0x01ff;//这次获得 DCOTAP 值
dcoFreqTrim =(csCtl1Read & 0x0070)>>4;//获取 DCOFTRIM 值

if (newDcoTap < 256)// DCOTAP < 256

newDcoDelta = 256 - newDcoTap;// DCPTAP 和256之间的增量值
if ((oldDcotap!= 0xFFFF)&&(oldDcotap >= 256)// DCOTAP 交叉256
endLoop = 1;//停止 while 循环
其他

dcoFreqTrim --;
CSCTL1 =(csCtl1Read &(~DCOFTRIM))|(dcoFreqTrim <4);


else // DCOTAP >= 256

newDcoDelta = newDcoTap - 256;// DCPTAP 和256之间的增量值
if (oldDcoTap < 256)// DCOTAP 交叉256
endLoop = 1;//停止 while 循环
其他

dcoFreqTrim++;
CSCTL1 =(csCtl1Read &(~DCOFTRIM))|(dcoFreqTrim <4);

if (newDcoDelta < bestDcoDelta)//记录最接近256的 DCOTAP

csCtl0Copy = csCtl0Read;
csCtl1Copy = csCtl1Read;
bestDcoDelta = newDcoDelta;

}while (endLoop =0);//轮询直至 endLoop =1

CSCTL0 = csCtl0Copy;//重新加载锁定的 DCOTAP
CSCTL1 = csCtl1Copy;//重新加载锁定的 DCOFTRIM
while (CSCTL7 &(FLLUNLOCK0 | FLLUNLOCK1));//轮询直到 FLL 被锁定

#if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
#pragma vector=USCI_A0_Vector
_interrupt void USCI_A0_ISR (void)
#Elif defined (_GNU_)
void __attribute__((中断(USCI_A0_Vector)) USCI_A0_ISR (void)
其他
错误编译器不受支持!
#endif

switch (__evo_in_range (UCA0IV、USCI_UART_UCTXCPTIFG))

USCI_NONE 案例:中断;
USCI_UART_UCRXIFG 案例:
UCA0TXBUF=UCA0RXBUF;
UCA0IFG &=~ UCRXIFG;//清除中断
_BIC_SR_REGISTER_ON_EXIT (LPM0_BITS);//在 TI 上退出 LPM0
中断;
案例 USCI_UART_UCTXIFG:中断;
案例 USCI_UART_UCSTTIFG:中断;
案例 USCI_UART_UCTXCPTIFG:中断;

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

    您好 Richard、

    我已经为 MSP430FR2353附上了3个 UART 示例、它们应该对您有所帮助。

    谢谢、

    Yidinge2e.ti.com/.../msp430fr235x_5F00_euscia0_5F00_uart.zip