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/MSP432P401R:将数据从一个端口传输到另一个端口

Guru**** 2555630 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/598751/ccs-msp432p401r-transmitting-data-from-one-port-to-another

器件型号:MSP432P401R

工具/软件:Code Composer Studio

您好! 

我正在编辑 UART 示例、以便最终可以使用 UART 端口3和2。 我只是使用 UART 端口1来查看发送的数据是否被接收。 因此、对于 EUSCI_A0、我发送了字母"G"、我在 TX 缓冲器中看到它、但它永远不会到达 RX 缓冲器。 有人能帮我看看我是否做了任何事情。

谢谢



/********* * MSP432 UART - PC 回显12MHz BRCLK * 说明:此演示回显通过 PC 串行端口接收的字符。 * SMCLK/DCO 被用作一个时钟源并且器 件被置于 LPM0中* eUSCI 使用自动时钟使能功能并且 SMCLK 被关闭*当 UART 空闲并且当检测到一个接收边沿时打开。 *请注意、在 RS232和 MSP *电压电平之间切换需要电平转换器硬件。 * * MSP432P401 * -------- * | | * | | * | | * RST -| P1.3/UCA0TXD|--->PC (回波) * | | * | | * | P1.2/UCA0RXD|<-- PC * | | * 作者:Timothy Logan /* DriverLib 包括*/ #include "driverlib.h" /*标准包含*/ #include #include /* UART 配置参数。 这些是配置参数 、*使 eUSCI 成为一个 UART 模块以9600波特率运行。 这些 *值是使用 TI 提供的在线计算器计算的 *网址 为:*software-dl.ti.com/.../index.html * / char info ='g'; const eUSCI_UART_Config uartConfig = { EUSCI_A_UART_CLOCKSOURCE_SMCLK、 // SMCLK 时钟源 78、 // BRDIV = 78 2、 // UCxBRF = 2 0、 // UCxBRS = 0 EUSCI_A_UART_NO_奇 偶校验、 //无奇偶校验 EUSCI_A_UART_LSB_FIRST、 // LSB 优先 EUSCI_A_UART_One_stop_bit、 //一个停止位 EUSCI_A_UART_MODE、 // UART 模式 EUSCI_A_UART_oversampling_BAUDRATE_generation //过采样 }; int main (void) { /*停止 WDT */ MAP_WDT_A_HOLDTimer(); /*在 UART 模式下选择 P1.2和 P1.3 */ MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、 GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION); //将 LED 1.0设置为输出 MAP_GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0); MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0); /*在 UART 模式下选择 P2.2和 P2.3 */ MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P2、 GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION); //将 LED 2.0设置为输出 MAP_GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN0); MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN0); /*在 UART 模式下选择 P3.2和 P3.3 */ MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、 GPIO_PIN2 | GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION); //将 LED 2.1设置为输出 MAP_GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN1); MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN1); /*将 DCO 设置为12MHz */ CS_setDCOCenteredFrequency (CS_DCO_FREQUENCY 12); /*配置 UART 模块0 */ MAP_UART_initModule (EUSCI_A0_BASE、uartConfig); /*配置 UART 模块1 */ MAP_UART_initModule (EUSCI_A1_base、uartConfig); /*配置 UART 模块2 */ MAP_UART_initModule (EUSCI_A2_base、uartConfig); /*启用 UART 模块0 */ MAP_UART_enableModule (EUSCI_A0_BASE); /*启用 UART 模块1 */ MAP_UART_enableModule (EUSCI_A1_BASE); /*启用 UART 模块2 */ MAP_UART_enableModule (EUSCI_A2_base); /*启用中断0 */ MAP_UART_enableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_receive_interrupt); MAP_Interrupt_enableInterrupt (INT_EUSCIA0); MAP_Interrupt_enableSlepOnIsrExit(); MAP_Interrupt_enableMaster(); /*启用中断1 */ MAP_UART_enableInterrupt (EUSCI_A1_base、EUSCI_A_UART_receive_interrupt); MAP_Interrupt_enableInterrupt (INT_EUSCIA1); MAP_Interrupt_enableSlepOnIsrExit(); MAP_Interrupt_enableMaster(); /*启用中断2 */ MAP_UART_enableInterrupt (EUSCI_A2_base、EUSCI_A_UART_receive_interrupt); MAP_Interrupt_enableInterrupt (INT_EUSCIA2); MAP_Interrupt_enableSlepOnIsrExit(); MAP_Interrupt_enableMaster(); while (1) { UART_transmitData (EUSCI_A0_BASE、INFO); //uart_transmitData (eUSCI_A2_base、信息); //map_PCM_gotoLPM0 (); } } // EUSCI A0 UART ISR -将数据回传到 PC 主机*/ void EUSCIA0_IRQHandler (void) { uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A0_BASE); MAP_UART_clearInterruptFlag (EUSCI_A0_BASE、STATUS); IF (STATUS 和 EUSCI_A_UART_receive_interrupt_FLAG) { MAP_UART_transmitData (EUSCI_A0_BASE、MAP_UART_receiveData (EUSCI_A0_BASE)); MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P1、GPIO_PIN0); } MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0); } // EUSCI A1 UART ISR -将数据从 P2回传到 PC 主机*/ void EUSCIA1_IRQHandler (void) { uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A1_BASE); MAP_UART_clearInterruptFlag (EUSCI_A1_BASE、STATUS); IF (STATUS 和 EUSCI_A_UART_receive_interrupt_FLAG) { MAP_UART_transmitData (EUSCI_A0_BASE、MAP_UART_receiveData (EUSCI_A1_BASE)); MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P2、GPIO_PIN0); } MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN0); } // EUSCI A2 UART ISR -将数据 P3回显到 P2 */ void EUSCIA2_IRQHandler (void) { uint32_t status = MAP_UART_getEnabledInterruptStatus (EUSCI_A2_base); MAP_UART_clearInterruptFlag (EUSCI_A2_base、status); IF (STATUS 和 EUSCI_A_UART_receive_interrupt_FLAG) { MAP_UART_transmitData (EUSCI_A1_base、MAP_UART_receiveData (EUSCI_A2_base)); MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P2、GPIO_PIN1); } MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN1); }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    梅尔
    让我尝试一下代码、然后返回给您。 我注意到的一点是、您使用的是 CCSv6.2、强烈建议您将 CCSv7和更高版本用于后续项目。 我不认为这是您当前问题的根源、但这是未来发展需要考虑的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这在使用 CCS 6.2.0的 EXP432 (LP)上运行正常。

    重新检查回送跳线。