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.

[参考译文] CC3200:如何重新配置 UART?

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1033448/cc3200-how-to-reconfigure-uart

器件型号:CC3200

您好!

我正在尝试创建一个项目、在该项目中、我可以 通过 wifi 设置 UART 1的配置(我是说使用连接到 LaunchPad 的应用程序)、对于 UART0、我将使用它进行调试。

我所做的是  

在引脚多路复用器中配置 UART-1:

仅执行此操作

MAP_PRCMPeripheralClkEnable(PRCM_UARTA1, PRCM_RUN_MODE_CLK);

MAP_UARTFIFODisable(UARTA1_BASE);
UARTIntRegister(UARTA1_BASE, vUartHandler);
MAP_IntPrioritySet(INT_UARTA1, INT_PRIORITY_LVL_1);
UARTIntClear(UARTA1_BASE, UART_INT_RX);
UARTIntEnable(UARTA1_BASE, UART_INT_RX);

当我接收到 UART 1配置时、我调用一个函数来运行该代码

MAP_PinTypeUART(MDB_CFG_TX_PIN, MDB_CFG_TX_PIN_MODE);
MAP_PinTypeUART(MDB_CFG_RX_PIN, MDB_CFG_RX_PIN_MODE);
MAP_UARTConfigSetExpClk(MDB_TASK_UART_BASE, MAP_PRCMPeripheralClockGet(MDB_TASK_UART_PRCM),
		u32BaudeRateCfg, (UART_CONFIG_WLEN_8 | u32StopBitCfg | u32ParityCfg));

完成此操作后、UART 开始工作、但行为异常、首先只接收到来自许多字节的字节、对于其余接收到的数据、第一个字节成为最后一个字节、
我不确定是需要重新初始化某个内容,还是需要禁用中断,然后再执行启用该中断的配置,但当我复制 UART 配置部分中的那些行时,似乎可以正常工作,就像这样

MAP_PinTypeUART(MDB_CFG_TX_PIN, MDB_CFG_TX_PIN_MODE);
MAP_PinTypeUART(MDB_CFG_RX_PIN, MDB_CFG_RX_PIN_MODE);
MAP_UARTConfigSetExpClk(MDB_TASK_UART_BASE, MAP_PRCMPeripheralClockGet(MDB_TASK_UART_PRCM),
		u32BaudeRateCfg, (UART_CONFIG_WLEN_8 | u32StopBitCfg | u32ParityCfg));
		
// the extra code
MAP_UARTFlowControlSet(UARTA1_BASE, UART_FLOWCONTROL_NONE);
MAP_UARTFIFODisable(UARTA1_BASE);
MAP_IntPrioritySet(INT_UARTA1, INT_PRIORITY_LVL_1);
UARTIntClear(UARTA1_BASE, UART_INT_RX);
UARTIntEnable(UARTA1_BASE, UART_INT_RX);
 

我不明白为什么、所以我希望有人能帮助我了解当我从应用程序收到配置时如何进行配置、以及在这行代码之后它为什么起作用(如果有任何文档解释了这些函数、它也会有所帮助)

请注意、

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

    您好!

    在配置 UART 引脚之前、您似乎启用了 UART 中断。  这可能 导致 意外行为。  如果您先进行配置、是否存在任何问题?

    此致、

    Sarah

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

    您好、
    实际上、当我首先进行配置时、它可以正常工作。
    因此、我必须禁用中断、并设置 UART 的新配置(波特率等)。 然后我再次设置/启用中断、现在它可以正常工作。 顺便说一下、我必须再次配置 UART 中断、因为仅启用 UART 中断功能就无法正常工作。
    这就是我所做的:

    // disbale interruption
    UARTIntDisable(UARTA1_BASE, UART_INT_RX);
    UARTIntClear(UARTA1_BASE, UART_INT_RX);
    // configure UART again (user configuration)
    MAP_UARTConfigSetExpClk(MDB_TASK_UART_BASE, MAP_PRCMPeripheralClockGet(MDB_TASK_UART_PRCM),
    		u32BaudeRateCfg, (UART_CONFIG_WLEN_8 | u32StopBitCfg | u32ParityCfg));
    // Configure Interruption
    MAP_UARTFIFODisable(UARTA1_BASE);
    UARTIntRegister(UARTA1_BASE, vUartMdbIsr);
    MAP_IntPrioritySet(INT_UARTA1, IRQ_PRIORITY_UART1);
    // enable interruption
    UARTIntClear(UARTA1_BASE, UART_INT_RX);
    UARTIntEnable(UARTA1_BASE, UART_INT_RX);

    感谢你的帮助。