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/MSP432-RTOS:包含2个以上 UART

Guru**** 2555630 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/596395/rtos-msp432-rtos-including-more-than-2-uarts

器件型号:MSP432-RTOS
主题中讨论的其他器件:MSP432P401R

工具/软件:TI-RTOS

您好!  

我看到 MSP432 RTOS 默认支持2个 UART (我正在使用 MSP430 TI RTOS 2.20.00.06)。 我需要添加对更多 UART 的支持(微控制器状态规格最多支持4个 UART)。 查看代码、我没有找到一种简单的方法来实现它、除非我修改 MSP_EXP432P401R.c 文件 UART 部分的结构以包含另外2个 UART。 这是正确的实施方法吗? 如果是这样,是否有任何原因不默认实施此操作(默认情况下由其他外设定义的冲突/共享,这意味着我应该禁用其他设备)?

谢谢!

Marco  

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

    您好、Marco、

    我一定可以帮助您解决这个问题。  您已经走上了正确的道路!  您必须编辑3个源文件:MSP_EXP432P401R.c、MSP_EXP432P401R.h 和 Board.h

    首先、打开 Board.h 查找 Board_UART0和 Board_UART1、并添加另外两个实例。  我会坚持命名惯例、其中 UARTA0表示它正在使用 Eusci_A0。  这就是我更改代码的方式、请注意我还更改了 Board_UART1的定义、以便它将引用 EUSCI_A1。

    #define Board_UART0     MSP_EXP432P401R_UARTA0

    #define Board_UART1     MSP_EXP432P401R_UARTA1

    #define Board_UART2     MSP_EXP432P401R_UARTA2

    #define Board_UART3     MSP_EXP432P401R_UARTA3

     

    接下来打开 MSP_EXP432P401R.h 并找到 typedef 枚举"...UARTName"。  插入两个新实例、如下所示:

    typedef 枚举 MSP_EXP432P401R_UARTName{

    MSP_EXP432P401R_UARTA0 = 0、

    MSP_EXP432P401R_UARTA1

    MSP_EXP432P401R_UARTA2

    MSP_EXP432P401R_UARTA3

    MSP_EXP432P401R_UARTCOUNT

    } MSP_EXP432P401R_UARTName

     

    第三、这可能是所有指令中最复杂的。  打开 MSP432P401R.c 文件并查找=== UART ===部分。  您需要再添加两个 HWAttrs 部分、一个用于 EUSCI_A1_base、另一个用于 A2。  下面是一个包含 UART_CONFIG 的段。  您还必须更改此项以添加修改".h"文件时创建的枚举的两个实例。  最后一个非常重要的注释:枚举顺序需要与 HWATTRS 和 UART_CONFIG 的结构数组顺序匹配。  

    电源  您可以转到=== SPI === 部分并查看 EUSCI_A1是由 SPI 配置的。  这意味着、除非您使用与上述类似的步骤(恰好相反)来删除此实例、否则初始化 SPI 可能会"窃取"此外设、即使您不一定要将 A1用于 SPI。  我建议反向执行这些步骤以删除该实例、就像删除冗余一样。

    如果您对此问题有任何疑问、请告诉我。

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