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.

[参考译文] RTOS/MSP-EXP430FR5994:我需要使用具有 UART 驱动程序的 EUSCI_A0和 EUSCI_A3

Guru**** 2577385 points
Other Parts Discussed in Thread: CC2591, MSP430F2618, CC2520, MSP430FR5994, MSP-EXP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/607152/rtos-msp-exp430fr5994-i-need-to-use-both-eusci_a0-and-eusci_a3-with-uart-driver

器件型号:MSP-EXP430FR5994
主题中讨论的其他器件:CC2591MSP430F2618CC2520MSPWAREMSP430FR5994

工具/软件:TI-RTOS

您好!

如标题中所述、我需要在项目中在 UART 模式下同时使用 EUSCI_A0和 EUSCI_A1。

我阅读了以下条目: e2e.ti.com/.../581883

另一个用于其他器件。

我创建了一个 UART_ECHO 项目的副本、并进行了上一篇文章中所述的所有更改。

此时、我使用示波器来查看 Tx 线路上的变化。

我使用 EUSCI_A0尝试了 echo.c 文件、没有对.cfg 文件进行任何更改、也没有在 TxD 行(P2.0)上进行测量。

我还使用 EUSCI_A3尝试了 echo .c 文件、更改了.cfg 文件上的中断编号并在 TxD 行上进行测量(P6.0)。

我无法在示波器上观察到任何字节。

我们将感谢您的任何帮助。

我附加项目。 可以通过搜索://jalr_begin 轻松识别 Board.h、MSP_EXP430FR5994 .c 和.h、uartecho.c 和 uartech.cfg 上的更改

谢谢、此致、

Juan Antonioe2e.ti.com/.../uartecho_5F00_MSP_5F00_EXP430FR5994_5F00_EUSCIA0_5F00_EUSCIA3.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Juan:
    您是从该 e2e 线程还是从 Resource Explorer 复制项目?

    他们在该主题中提到、其中包含的主题不起作用。

    此外、您是否正在向器件发送字符? 如果没有接收到任何内容、则不会回显。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它是原始工程(通过 Resource Explorer 导入)、进行了一些更改以支持两个 UART、但不起作用。

    我不发送字符、但任务的第一部分发送几个字节:

    const char echoPrompt[]="\fEchoing Characters:\r\n";
    (笑声)
    UART_WRITE (UART、echoPrompt、sizeof (echoPrompt));

    我测试了更多内容:

    1.-原始项目正常工作、可以通过 P2.0线路中的示波器查看字节活动。
    2.-我已更改了第一个帖子中提到的文件、仅使用了 EUSCI_A3而不是 EUSCI_A0、并且示波器显示了 P6.0行中的字节。
    3--修改文件以添加第二个 UART (EUSCI_A3),该项目使用 EUSCI_A0,但不使用选择 EUSCI_A3。

    在测试 EUSCI_A3模块时、行"halHwi.create (48、"&UARTEUSCIA_hwiIntFxn"、hwiParams);"已替换为"halHwi.create (24、"&UARTEUSCIA_hwiIntFxn"、hwiParams);"。

    谢谢、此致、

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

    你好。

    我遇到的问题很奇怪。 定义两个 UART 时:

     

    Board.h 文件

    #define Board_UART0 MSP_EXP430FR5994_UARTA0
    
    #define Board_UART03 MSP_EXP430FR5994_UARTA3 

     

    MSP_EXP430FR5994.h 文件

    typedef enum MSP_EXP430FR5994_UARTName{
    
    MSP_EXP430FR5994_UARTA0 = 0、
    
    MSP_EXP430FR5994_UARTA3 = 1、
    
    MSP_EXP430FR5994_UARTCOUNT
    
    }MSP_EXP430FR5994_UARTName; 

     

    和 MSP_EXP430FR5994.c 文件

    CONST UARTEUSCI_HWAttrs uartEUSCIAHWAttrs[MSP_EXP430FR5994_UARTCOUNT]={
    
    {
    
    baseAddr = EUSCI_A0_BASE、
    
    时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、
    
    .bitOrder = EUSCI_A_UART_LSB_FIRST、
    
    numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、
    
    .budrateLUT = uartEUSCIA波特 率
    
    }、
    
    {
    
    baseAddr = EUSCI_A3_base、
    
    时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、
    
    .bitOrder = EUSCI_A_UART_LSB_FIRST、
    
    numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、
    
    .budrateLUT = uartEUSCIA波特 率
    
    }、
    
    };
    
    
    
    const UART_Config UART_CONFIG[]={
    
    {
    
    .fxnTablePtr =&UARTEUSCIA_fxnTable、
    
    .object = uartEUSCIAObjects[0]、
    
    .hwAttrs = uartEUSCIADHWAttrs[0]
    
    }、
    
    {
    
    .fxnTablePtr =&UARTEUSCIA_fxnTable、
    
    .object = uartEUSCIAObjects[1]、
    
    hwAttrs = uartEUSCIADHWAttrs [1]
    
    }、
    
    {NULL、NULL、NULL}
    
    };
    
    
    
    //
    
    *===== MSP_EXP430FR5994_initUART ===
    
    */
    
    void MSP_EXP430FR5994_initUART (void)
    
    {
    
    /* P2.0、1 = EUSCI_A0 TXD/RXD *
    
    GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、
    
    GPIO_PIN0、GPIO_secondary 模块功能);
    
    GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P2、
    
    GPIO_PIN1、GPIO_secondary 模块功能);
    
    
    
    GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、
    
    GPIO_PIN0、GPIO_PRIMARY_MODULE_FUNCTION);
    
    GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P6、
    
    GPIO_PIN1、GPIO_PRIMARY_MODULE_FUNCTION);
    
    
    
    /*初始化 UART 驱动程序*/
    
    UART_init();
    
    } 

    我可以毫无问题地配置和使用  引脚2.0和2.1上 UART_CONFIG 数组的第一个条目(EUSCI_A0)。  

    字符输入;

      

    UART_Handle UART;
    
    UART_Params uartParams;
    
    const char echoPrompt[]="\fEchoing Characters:\r\n";
    
    
    
    /*创建一个数据处理关闭的 UART。 *
    
    UART_PARAMS_INIT (uartParams);
    
    uartParams.writeDataMode = UART_DATA_BINARY;
    
    uartParams.readDataMode = UART_DATA_BINARY;
    
    uartParams.readReturnMode = UART_return_full;
    
    uartParams.readEcho = UART_ECHO_OFF;
    
    uartParams.baudrate = 9600;
    
    UART = UART_OPEN (Board_UART0、uartParams);
    
    
    
    if (UART == NULL){
    
    System_abort ("打开 UART 时出错");
    
    }
    
    
    
    UART_WRITE (UART、echoPrompt、sizeof (echoPrompt)); 

    最后一行、我可以使用 Tx (P2.0)线路上的示波器显示数据。

    但是、更改用于使用 EUSCI_A3的相应行 Tx (P6.0)没有任何活动。

    UART = UART_OPEN (Board_UART3、uartParams);

    我还将"halHwi.create (48、"&UARTEUSCI_hwiIntFxn"、hwiParams);"改为"halHwi.create (24、"&UARTEUSCIA_hwiIntFxn"、hwiParams);"

    最后、最有趣的是更改 uartEUSCIAHWAttrs 矢量中的顺序、

    CONST UARTEUSCI_HWAttrs uartEUSCIAHWAttrs[MSP_EXP430FR5994_UARTCOUNT]={
    
    {
    
    baseAddr = EUSCI_A3_base、
    
    时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、
    
    .bitOrder = EUSCI_A_UART_LSB_FIRST、
    
    numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、
    
    .budrateLUT = uartEUSCIA波特 率
    
    }、
    
    {
    
    baseAddr = EUSCI_A0_BASE、
    
    时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、
    
    .bitOrder = EUSCI_A_UART_LSB_FIRST、
    
    numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、
    
    .budrateLUT = uartEUSCIA波特 率
    
    },
    
    }; 

    EUSCI_A3使用以下行在 P6.0上工作:

    字符输入;
    
    UART_Handle UART;
    
    UART_Params uartParams;
    
    const char echoPrompt[]="\fEchoing Characters:\r\n";
    
    
    
    /*创建一个数据处理关闭的 UART。 *
    
    UART_PARAMS_INIT (uartParams);
    
    uartParams.writeDataMode = UART_DATA_BINARY;
    
    uartParams.readDataMode = UART_DATA_BINARY;
    
    uartParams.readReturnMode = UART_return_full;
    
    uartParams.readEcho = UART_ECHO_OFF;
    
    uartParams.baudrate = 9600;
    
    UART = UART_OPEN (Board_UART3、uartParams);
    
    
    
    if (UART == NULL){
    
    System_abort ("打开 UART 时出错");
    
    }
    
    
    
    UART_WRITE (UART、echoPrompt、sizeof (echoPrompt)); 

    和: halHwi.create (24、"&UARTEUSCIA_hwiIntFxn"、hwiParams);

    但 EUSCI_A0不适用于以下行:

    字符输入;
    
    UART_Handle UART;
    
    UART_Params uartParams;
    
    const char echoPrompt[]="\fEchoing Characters:\r\n";
    
    
    
    /*创建一个数据处理关闭的 UART。 *
    
    UART_PARAMS_INIT (uartParams);
    
    uartParams.writeDataMode = UART_DATA_BINARY;
    
    uartParams.readDataMode = UART_DATA_BINARY;
    
    uartParams.readReturnMode = UART_return_full;
    
    uartParams.readEcho = UART_ECHO_OFF;
    
    uartParams.baudrate = 9600;
    
    UART = UART_OPEN (Board_UART0、uartParams);
    
    
    
    if (UART == NULL){
    
    System_abort ("打开 UART 时出错");
    
    }
    
    
    
    UART_WRITE (UART、echoPrompt、sizeof (echoPrompt)); 

    和: halHwi.create (48、"&UARTEUSCIA_hwiIntFxn"、hwiParams);

    调用 UART_init 后、第二个条目似乎未正确初始化:

    void MSP_EXP430FR5994_initUART (void)
    
    {
    
    /* P2.0、1 = EUSCI_A0 TXD/RXD *
    
    GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、
    
    GPIO_PIN0、GPIO_secondary 模块功能);
    
    GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P2、
    
    GPIO_PIN1、GPIO_secondary 模块功能);
    
    
    
    GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、
    
    GPIO_PIN0、GPIO_PRIMARY_MODULE_FUNCTION);
    
    GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P6、
    
    GPIO_PIN1、GPIO_PRIMARY_MODULE_FUNCTION);
    
    
    
    /*初始化 UART 驱动程序*/
    
    UART_init();
    
    } 

    请帮助我解决此问题、因为我在测试更改的几天没有积极的结果。 该项目在第一个员额中提供。

    谢谢、此致、

    Juan Antonio

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    胡安
    RTOS 是否为您的设计要求?

    如果是、我将邀请一些 RTOS 专家。 如果没有、我可能有一些适合您的解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Cameron、
    我是一家中小型企业的成员、该企业基于 WiFi/GPRS 传感器节点为农民提供灌溉建议服务。 该器件的主板基于 MSP430F2618、CC2520和 CC2591。
    我们在该器件上遇到了很多问题、因为它有成千上万的代码行、而且软件设计从一开始就不合适。
    现在、我们正在基于 MSP430FR5994开发板开发一个节点、我们一开始研究了 MSPWare 和 RTOS、目的是为我们选择最合适的器件。
    除了我们专注于灌溉服务(我们部署了100多个设备)、我们还在为基于同一电路板的其他部门设计新产品。
    我们之所以选择 RTOS、是因为我们更喜欢在应用程序级别工作、因为我们的团队中有一名软件工程师在并发编程方面具有良好的经验。
    目前、我最关心的问题在以下文章中进行了解释: e2e.ti.com/.../599855
    因为低功耗对我们来说非常重要、如果工作模式大约为5%或低于1%、这是一个很大的差异。
    我认为 fatfs 模块应该用小方法来声明、但我不知道怎么做。
    关于本主题中描述的问题、我认为解决方案应该非常简单、但它们是您看不到的典型情况、即使您看了上千次。 我这样说是因为我在论坛中阅读了其他帖子、其他用户正在使用两个 UART。

    如果您让我与 RTOS 专家联系、我将非常高兴。

    谢谢、此致、

    Juan Antonio
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Juan:
    我已经将他们圈在这里、并将继续处理这个问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Juan:
    我注意到了这一点、但我认为这是一个拼写错误。
    #define Board_UART03 MSP_EXP430FR5994_UARTA3

    我能否让您检查 UART 结构阵列并确认两个元素都已填充。 这似乎其中一个缺少第二个元素。 找到缺失的地方应该为我们今后提供更好的理由。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Cameron。

    这不是问题、因为编译器会给我提供错误、我无法运行项目。

    我将为 MSP-EXP430FR5994开发板附加两个项目。 它们之间的差异是用于定义 EUSCI_A0和 EUSCI_A3的顺序。 这些项目基于"uartecho_MSP_EXP430FR5994_TI"项目、该项目用作模板。

    我对两个项目中的常见更改进行注释:

    文件"uartecho.cfg 结束。 定义了 EUSCI_A0和 EUSCI_A3所需的两个 Hwi:

    var hwiParams = new halHwi.Params();

    hwiParams.arg = 0;

    halHwi.create (48、"&UARTEUSCIA_hwiIntFxn"、hwiParams);

    halHwi.create (24、"&UARTEUSCIA_hwiIntFxn"、hwiParams);

    2.-文件"Board.h"。 定义了两个 UART:

    #define Board_UART0         MSP_EXP430FR5994_UARTA0

    #define Board_UART3         MSP_EXP430FR5994_UARTA3

    名称以_A0_A3结尾的项目

    EUSCI_A0是向量的第一个入口。

     

    MSP_EXP430FR5994.h

    EUSCI_A0的别名是向量的第一个元素。

    typedef enum MSP_EXP430FR5994_UARTName{

      MSP_EXP430FR5994_UARTA0 = 0、

      MSP_EXP430FR5994_UARTA3 = 1、

      MSP_EXP430FR5994_UARTCOUNT

    }MSP_EXP430FR5994_UARTName;

     

    MSP_EXP430FR5994.c

    EUSCI_A0是向量的第一个元素。

    CONST UARTEUSCI_HWAttrs uartEUSCIAHWAttrs[MSP_EXP430FR5994_UARTCOUNT]={

      {

        baseAddr = EUSCI_A0_BASE、

        时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、

        .bitOrder = EUSCI_A_UART_LSB_FIRST、

        numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、

        .budrateLUT = uartEUSCIA波特 率

      }、

      {

        baseAddr = EUSCI_A3_base、

        时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、

        .bitOrder = EUSCI_A_UART_LSB_FIRST、

        numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、

        .budrateLUT = uartEUSCIA波特 率

      }、

    };

    const UART_Config UART_config[]={

      {

        .fxnTablePtr =&UARTEUSCIA_fxnTable、

        .object = uartEUSCIAObjects[0]、

        .hwAttrs = uartEUSCIADHWAttrs[0]

      }、

      {

        .fxnTablePtr =&UARTEUSCIA_fxnTable、

        .object = uartEUSCIAObjects[1]、

        hwAttrs = uartEUSCIADHWAttrs [1]

      }、

      {NULL、NULL、NULL}

    };

    /*

     * ==== MSP_EXP430FR5994_initUART ===

     *

    void MSP_EXP430FR5994_initUART (void)

      /* P2.0、1 = EUSCI_A0 TXD/RXD *

      GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、

        GPIO_PIN0、GPIO_secondary 模块功能);

      GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P2、

        GPIO_PIN1、GPIO_secondary 模块功能);

      GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、

          GPIO_PIN0、GPIO_PRIMARY_MODULE_FUNCTION);

      GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P6、

          GPIO_PIN1、GPIO_PRIMARY_MODULE_FUNCTION);

      /*初始化 UART 驱动程序*/

      UART_INIT();

     

    使用 uartho.c 文件中的"UART = UART_open (Board_UART0、&uartParams);"行测试项目:

    J101连接器上的跳线 RXD 和 TXD 已放置、并使用终端软件。 该项目按预期工作。

    使用 uartho.c 文件中的"UART = UART_OPEN (Board_UART3、&uartParams);"行测试项目:

    J101连接器上的跳线 RXD 和 TXD 已移除。 P6.1和 RXD 之间连接了一根导线(参见图)。 P6.0和 TXD 之间连接了另一根导线。 使用终端软件。 由于导线放置正确、因此不起作用、也不是硬件问题。

    名称以_A3_A0结尾的项目

    EUSCI_A3是向量的第一个入口。

     

    MSP_EXP430FR5994.h

    EUSCI_A3的别名是向量的第一个元素。

    typedef enum MSP_EXP430FR5994_UARTName{

      MSP_EXP430FR5994_UARTA3 = 0、

      MSP_EXP430FR5994_UARTA0 = 1、

      MSP_EXP430FR5994_UARTCOUNT

    }MSP_EXP430FR5994_UARTName;

     

    MSP_EXP430FR5994.c

    EUSCI_A3是向量的第一个元素。

    CONST UARTEUSCI_HWAttrs uartEUSCIAHWAttrs[MSP_EXP430FR5994_UARTCOUNT]={

      {

        baseAddr = EUSCI_A3_base、

        时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、

        .bitOrder = EUSCI_A_UART_LSB_FIRST、

        numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、

        .budrateLUT = uartEUSCIA波特 率

      }、

      {

        baseAddr = EUSCI_A0_BASE、

        时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、

        .bitOrder = EUSCI_A_UART_LSB_FIRST、

        numBudrateEndries = sizeof (uartEUSCIABAURATEes)/sizeof (UARTEUSCIA_BAUDRAateConfig)、

        .budrateLUT = uartEUSCIA波特 率

      }、

    };

    const UART_Config UART_config[]={

      {

        .fxnTablePtr =&UARTEUSCIA_fxnTable、

        .object = uartEUSCIAObjects[0]、

        .hwAttrs = uartEUSCIADHWAttrs[0]

      }、

      {

        .fxnTablePtr =&UARTEUSCIA_fxnTable、

        .object = uartEUSCIAObjects[1]、

        hwAttrs = uartEUSCIADHWAttrs [1]

      }、

      {NULL、NULL、NULL}

    };

    /*

     * ==== MSP_EXP430FR5994_initUART ===

     *

    void MSP_EXP430FR5994_initUART (void)

      /* P2.0、1 = EUSCI_A0 TXD/RXD *

      GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、

        GPIO_PIN0、GPIO_secondary 模块功能);

      GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P2、

        GPIO_PIN1、GPIO_secondary 模块功能);

      GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、

          GPIO_PIN0、GPIO_PRIMARY_MODULE_FUNCTION);

      GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P6、

          GPIO_PIN1、GPIO_PRIMARY_MODULE_FUNCTION);

      /*初始化 UART 驱动程序*/

      UART_INIT();

     

    使用 uartho.c 文件中的"UART = UART_open (Board_UART0、&uartParams);"行测试项目:

    J101连接器上的跳线 RXD 和 TXD 已放置、并使用终端软件。 该项目无法按预期工作。

    使用 uartho.c 文件中的"UART = UART_OPEN (Board_UART3、&uartParams);"行测试项目:

    J101连接器上的跳线 RXD 和 TXD 已移除。 P6.1和 RXD 之间连接了一根导线。 P6.0和 TXD 之间连接了另一根导线。 使用终端软件。 很不错!

    正如您看到的、这似乎是 UART 驱动程序的一个问题、因为当两个 UART 都放置在矢量的第一个入口时、但当它们放置在矢量的第二个位置时、这两个 UART 工作正常。

    很抱歉、有很多文本。

    谢谢、此致、

    Juan Antonio

    e2e.ti.com/.../uartecho_5F00_EUSCI_5F00_A0_5F00_A3.zipe2e.ti.com/.../uartecho_5F00_EUSCI_5F00_A3_5F00_A0.zip

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

    尊敬的 Juan:

    感谢您发布上述内容。  我相信您看到的问题是由您的*。cfg 文件中的 Hwi 设置引起的。  在上面的 snip 中、您为 EUSCI (int24)创建了一个 Hwi、但是您不会更新 hwiParams.arg 以获得驱动程序实例的索引。  下面是一个小插曲、显示了我的意思:

    var hwiParams = new halHwi.Params ();
    
    hwiParams.arg = 0;//<- UART0驱动程序句柄索引(EUSCI_A0)
    halHwi.create (48、"&UARTEUSCIA_hwiIntFxn"、hwiParams.arg
    
    = 1、UARTIx24、UART24_UHIC.h)
    

    MSP430器件不支持动态 Hwi 创建、因此我们必须提供驱动程序索引作为 Hwi 的参数(因此我们知道使用的是哪个驱动程序实例)。  我可以自由地更新 uartecho 示例、通过两个 UART 打印邮件、并在这篇文章中附加了 zip 文件。  下面是一个预期结果的屏幕截图:

    请告诉我这是否有帮助、

    伊曼纽尔

    e2e.ti.com/.../dual_5F00_uarts_5F00_fr5994.zip

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

    我对 UART 驱动程序有一个小问题。 驱动器是否实现了接收 FIFO 或类似的缓冲器?

    这是 uartecho 示例代码的一部分:

    while (1){
    UART_READ (UART、INPUT、1);
    UART_WRITE (UART、INPUT、1);
    System_printf ("%d\n"、输入);
    system_flush();


    如果系统行未注释、并且我通过终端发送多个字符(例如"hello")、则我仅接收第一个字符。 但是、如果对行进行了注释、则会接收所有字符。

    再次感谢。

    此致、

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

    此致、

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

    此致、

    Juan Antonio