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.

[参考译文] MSP430F5529:UART Driverlib 初始化 proplem???

Guru**** 2542740 points
Other Parts Discussed in Thread: MSP430F5529

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/570667/msp430f5529-uart-driverlib-initialize-proplem

器件型号:MSP430F5529

大家好、我是 MSP430的新编程产品。 我有一个 MSP430 F5529 Lauchpad。 今天、我将使用基于 DriverLib 中示例的 UART 模块。 此示例是回路数据。 在我将代码下载到芯片并进行调试后、我将 P3.3与 P3.4相连(Rx 与 Tx 相连)、但不接收任何内容。 什么是错???

我在此处的代码:

#include "driverlib.h"
#include "string.h"

volatile uint8_t receive_data=0;
uint8_t transmit _data[]="Hello World"。 我是 MSP430F5529微控制器的 UART 模块!!!!\r\n\r\n 对于

UART_Init (void);
void INT32_t 延时;


#pragma vector (iple_a0_vector






















<strlen((char const*)transmit_data);i++) { USCI_A_UART_transmitData(USCI_A0_BASE,*(transmit_data+i)););i iag1 (ivoid UART_ISR (void);if (USCI_a_USCI_getInterdelay);#prag_interrupt (USCI_a_a_aT_aT_aT_unt);t USCI_receive_t (uT_uT_aT_aT_aT_aT_unt)(uart_interrupt_interrupt_ag_a_a_a_a_a_interrupt_a_a_interrupt);}(uT_uT_uart_uart_a_a_a_a_a_a_a_a_interrupt_interrupt_uT_uT_uart_a_a_a_interrupt_ag_uT_uT_uart_a_a_a_a_a_a_a_a_a_a_



/*等待传输完成*/ while (USCI_A_UART_queryStatusFlags (USCI_A0_BASE、USCI_A_UART_BUSY)=USCI_A_UART_BUSY); } 延迟(2000000); 9600}}UART_Init (void){USCI_A_UART_freparam param 参数;//波特率= 1.048MHz、param = 1.0MHz * UCBRx = 109、UCBRFx = 0、UCBRSx = 2、UCOS16 = 0 * *从:表39-5。 典型晶振和波特率的建议设置、第1039/1189页用户指南。 *有关波特率设置的更多信息、请参阅第1036页的39.3.10设置波特率用户指南 */ para.selectClockSource = USCI_A_UART_CLOCKSOURCE_SMCLK; 半.clockPrescalar = 109; 半.firstModReg = 0; para.secondModReg = 2; 半.para.奇偶校验= USCI_A_UART_NO_parity; para.msborLsbFirst = USCI_A_UART_LSB_FIRST; para.numberofStopBits = USCI_A_UART_ONE_STOP_BIT; para.uartMode = USCI_A_UART_MODE; para.overSAMPLING = USCI_A_UART_LOW_FREQUENCY BAUSCI_GEN; USCI_A1_UART_A0;para_A0¶UART_A UART_BASE;UART_A0 (para_A0) USCI_A_UART_ENABLE (USCI_A0_BASE); USCI_A_UART_clearInterrupt (USCI_A0_BASE、USCI_A_UART_receive_interrupt); USCI_A_UART_enableInterrupt (USCI_A0_BASE、USCI_A_UART_receive_interrupt); } void delay (uint32_t )(while)(t-时间 )

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您已配置 UART 本身、但未配置 P3.3/4引脚。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好! 感谢您的回复。 我该怎么办?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您应该配置引脚。

    例如、driverlib 示例 USCI_A_UART_ex1_loopbackAdvance.c 具有以下内容:

    //P3.4、5 = USCI_A0 TXD/RXD
    GPIO_setPeripheralModuleFunctionInputPin (
    GPIO_PORT_P3、
    GPIO_PIN4 + GPIO_PIN5
    ); 

    (这些引脚对于您的型号来说可能是错误的)

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

    是的、我已经查看了 MSP430F5529 MCU 的数据表。 P3.4和 P3.3上的 Rx 和 Tx 引脚映射。 但我在"gpio.h"中看到、简短的评论说"//! 此函数在所选引脚的输入方向上配置外设模块功能。 该函数针对主模块、次级模块或三态模块功能模式的所选引脚、在输入方向上配置外设模块功能。 请注意、MSP430F5xx/6xx 系列不支持这些功能模式"  我的 MCU 是 MSP430F5529:(

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    5xx/6xx 系列中不存在初级/次级/三级功能模式、因此您无需考虑它。 (该文本仅供其他系列的用户查看 GPIO_setPeripheralModuleFunctionInputPin()的第三个参数确实位于何处。)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢你的帮助。 但我已经在 UART_Init()函数的顶部添加了此代码

    GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、GPIO_PIN3 + GPIO_PIN4); 

    或该代码

    GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、GPIO_PIN4);// Rx 引脚
    GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P3、GPIO_PIN3);// Tx 引脚
    
    

    我 没有收到任何东西:(

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    代码对接收到的数据不执行任何操作。 如何检查它是否正在接收?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 main.c 的顶部添加了中断服务 Roundtie 在此函数中、我检查 Receive_interrupt_flag、然后将数据读取到 Receive_data 变量。 此处的代码:
    #pragma vector=USCI_A0_VECTOR
    _INTERRUPT void UART_ISR (void)
    {
    if (USCI_A_UART_getInterruptStatus (USCI_A0_BASE、
    USCI_A_UART_receive_interrupt_FLAG)
    = USCI_A_UART_receive_interrupt_flag)
    {
    Receive_data=USCI_A_UART_receiveData (USCI_A0_BASE);
    USCI_A_UART_clearInterrupt (USCI_A0_BASE、USCI_A_UART_Receive_interrupt_FLAG);
    }
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 msp430F55上使用 driverlib 中的示例进行测试时,我也遇到了同样的问题,我希望我能从这篇文章中得到答案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    然后、您对 Receive_data 变量执行什么操作? 您希望发生什么、而实际发生了什么?