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/MSP430FR4133:MSP430FR4133

Guru**** 2540720 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/586910/ccs-msp430fr4133-msp430fr4133

器件型号:MSP430FR4133

工具/软件:Code Composer Studio

你(们)好

我不熟悉 CCS、在 UART 的配置/初始化方面遇到了问题。 我参考了 slau445g 来启动寄存器。

我的主要目的是将单个字节/缓冲区(如果可能)传输到 comp 端口、并附加用于 sbal 的代码。 任何帮助都将得到真正的批准。

//#include
#include
#define delay 10000

unsigned int txint=12;

void txdata (unsigned int txint){

//UCA0IFG |= 0x02;
// while (UCA0TXIFG)
UCA0TXBUF = 0x01;

void init_UART (void){
P1SEL0 |=(BIT0 |BIT1);

UCA0CTLW0 |= UCSWRST;

UCA0CTLW0 |= UCSSEL_SMCLK;

UCA0BR0 = 104;// 16000000 /16*9600

UCBRSx=0x49;

UCA0BR1 = 0x00;

UCA0MCTLW = UCOS16 | UCBRF_1;

UCA0CTLW0 &=~UCSWRST;

UCA0IE |= UCRXIE;

RTCCTL &=~RTCIE;

void init_delay (int l){
int i;
for (i=0;i>l;i++);

int main (void){
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器

init_uart();

while (1)

txdata (txint);
init_delay (delay);

谢谢你

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

    您缺少根据需要将 SMCLK 设置为16MHz 所需的所有 CSCTLx 寄存器初始化、请查看 msp430fr413x_CS_[03/05].c 和 msp430fr413x_euscia0_UART_[01/03].c 以了解更多信息。 您也不会禁用 GPIO 上电默认高阻抗模式来激活之前配置的端口设置(PM5CTL0 &=~LOCKLPM5;)、并且评估空 UCTX 缓冲器(while (!(UCA0IFG&UCTXIFG));)优于随机延迟。

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

    感谢您的回答。

    我们不能采用 BRCLK/ SMCLK 的默认值并计算波特率吗? 如果是、如何操作? 如果不是、原因是什么?

    谢谢、此致

    Onkar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是 Onkar、但默认 SMCLK 频率为1MHz、而您的设置指示希望以16MHz 的频率运行 SMCLK (请参阅 msp430fr413x_euscia0_UART_03.c)。 用户指南的表21-5提供了典型波特率的建议设置。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的宝贵响应
    此致
    Onkar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    主席先生,我最近遇到了一个错误

    我重新考虑了用于定义波特率的计算、但仍然在 TX 处获得了垃圾值。 计算中是否有任何更正

    空 init_uart()
    P1SEL0 |=(BIT0 |BIT1);
     P1DIR = BIT0;// P1.1 = RXD、P1.2=TXD
     //配置 UART
      UCA0CTLW0 |= UCSWRST;
      UCA0CTLW0 |= UCSSEL_SMCLK;
      UCA0BR0=6;               // 1000000/16/9600
      UCA0BR1 = 0x00;
      UCA0MCTLW = 0x4980 | UCOS16;
      UCA0CTLW0 &=~UCSWRST;
    这只是 init_uart()函数。 我在 GPIO 中禁用了高阻抗模式、并尝试在不将 SMCLK 初始化为16MHz 的情况下运行程序。
    我是新手、尝试不同的东西、很抱歉出错了。 感谢您的回答
    此致
    -Onkar
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    UCA0MCTLW 寄存器的 UCBRSx 位不正确、应为0x2080。

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

    非常感谢您的响应和时间。 这意味着很多。

    此致
    Onkar