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.

[参考译文] MSP430FR5969:带HC-06模块的MSP430FR5969

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430FR5969

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/633265/msp430fr5969-msp430fr5969-with-hc-06-module

部件号:MSP430FR5969

大家好,我正在使用MSP430FR5969启动板通信和蓝牙HC-06模块。 我使用了一个示例代码并对其进行了修改,但不知为何调试在此行停止:__bis_sr_register(LPM0_bits| GIE); 另一件奇怪的事情是,在调试中,我必须使用“步入”而不是“下一个语句”,我必须单击“步入”几次,直到光标到达第一个语句(停止看门狗)。 如果我在第一次单击时使用“Next Statement”(下一个语句  ),代码将运行一段时间并在以下位置停止:__bis_sr_register(LPM0_bits | GIE);我需要您的帮助,因为我无法找到问题。

我将GPIO引脚设置为WFP 2.5 ,WFP 2.6 ,USCI_A1用于UART模式,LPM0模式。 这是我的代码:

包括"MSP4S.h"
字符A;
内部主(无效)

 WDTCTL = WDTPW | WDTHOLD;                //停止看门狗

 //配置GPIO
 P2SEL1 || BIT5 | BIT6;                   // USI_A1 UART操作
 P2SEL0 &=~(BIT5 | BIT6);

 //禁用GPIO开机默认高阻抗模式以激活
 //以前配置的端口设置
 PM5CTL0 &=~LOCKLPM2;

 //启动时钟系统,最大DCO设置为~8MHz
 CSCTL0_H = CSOKEY >> 8;                   //解锁时钟寄存器
 CSCTL1 = DCOFSEL_3 | DCORSEL;            //将DCO设置为8MHz
 CSCTL2 =拉美_ VLOCLK | SESS__DCOCLK | SELM__DCOCLK;
 CSCTL3 = DIVA__1 | DIVs__1 | DIVM__1;    //设置所有分隔线
 CSCTL4 &=~SMCLKOFF;                      //启用SMCLK
 CSCTL0_H = 0;                            //锁定CS寄存器

 //为UART模式配置USI_A1
 UCA1CTLW0|= UCSWRST;                     //将eUSCI置于复位状态
 UCA1CTLW0 |= UCSSEL__SMCLK;              // CLK = SMCLK
 UCA1CTLW0 |= UCBRKIE;                       //设置UCRXIFG
 //波特率计算
 // 80万/(16*9600)=9600= 52.083
 //分数部分= 0.083
 //用户指南表21-4:UCBRSx = 0x04
 // UCBRFx = int ((52.083 -52)*16)= 1
 UCA1BR0 = 52;                            // 80万/16/9600</s>9600
 UCA1BR1 = 0x00;
 UCA1MCTLW || UCOS16 | UCBRF_1;
 UCA1CTLW0 &=~UCSWRST;                   //初始化eUSCI
 UCA1IE |= UCRXIE;                        //启用USCI_A1 RX中断

 __bis_sr_register(LPM0_bits | GIE);      //输入LPM0,中断已启用
// __no_operation();                        //用于调试器
 }



#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USI_A1_vector
__interrupt void USI_A1_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USI_A1_vector)) USI_A1_ISR (void)
#否则
错误编译器不受支持!
#endif

 A = UCA1RXBUF;
}

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

    由于MCU处于休眠状态且CPU处于非活动状态,您的代码在进入LPM0后停止,它将保持这种状态,直到您从UCA1 RXIFG接收到中断。 或者,您的意思是调试会话在此行结束吗? 我在使用CCS 7.2 v和TI Compiler v 17.6 时没有遇到任何调试问题,可以按预期运行此示例。

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

    感谢您的回复。 该代码在LPM0后暂停,但在我从手机向蓝牙模块发送数据后,未收到来自UCA1 RXIFG的中断。 我将来自蓝牙的RX TX引脚连接在一起,我可以接收我发送的任何信件,因此蓝牙上的RX和TX应该可以正常工作。
    当我在CCS上运行代码时,没有发生调试问题,但在IAR 7.10 2上发生了。
    此外,标题行(J13)上的TXD RXD引脚是否连接到MSP430FR5969上的WFP 2.0 和WFP 2.1。

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

    洪美

    WFP 2.0 / WFP 2.1 (UCA0)连接到J13上的EZ-FET TXD/RXD插针。 现在,您可以使用2.5 ,UCA1TXD和2.6 ,UCA1RXD与蓝牙设备进行通信。 确保HC-06 TXD已连接至MSP430 RXD,反之亦然。

    此致,
    Ryan

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

    您好,Ryan:

    很抱歉,我仍然无法让蓝牙正常工作。

    我已将MSP430 2.0 和WFP 2.1 连接到蓝牙模块RX/TX,并确保HC-06 TXD连接到MSP430上的,HC-06 RXD连接到MSP430上的TXD。 我加载示例代码"msp430fr59xx_euscia0_UART_01.c",并在IAR 7.10 上运行该代码。2当我从蓝牙终端向HC-06发送一封信函时,蓝牙终端在DEC 157上接收ASCII符号,这不是我发送的。 而且,我每次写信都不能收到信号,我多次没有收到任何信号。 我还在CCS 7.3 0和TI编译器v IAR上运行了代码,我得到了与16.9 相同的结果。

    我还运行我修改的代码,以使用WFP,2.5 ,2.6 和LMP0。 在调试过程中,代码保持在LMP0,并且从不接收中断。 我使用蓝牙终端向HC-06发送了一封信,但没有任何反应。

    非常感谢你的帮助。

    洪美

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

    您不能在UART总线上连接三个设备(蓝牙终端,HC-06和MSP430),因为这会导致干扰。 您只需要将HC-06与MSP430连接,并在CCS或IAR内部进行调试。

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

    您好,Ryan:

    蓝牙终端是手机上的应用程序,我使用它与HC-06配对以测试代码。 但此时,示例代码不能按预期工作。 我仔细检查了该示例,我不确定它是否是因为LPM3禁用了SMCLK,而SMCLK已用于UART时钟。 因此,我更改为LPM0,并在系统clk设置中启用SMCLK。 但这种办法并没有解决问题。 我知道示例代码应该起作用,我还确信蓝牙和MSP430连接正确,并且我已经测试了蓝牙模块是否工作正常。 但它只是不能按预期工作。  

    有我使用的示例代码,粗体行是我添加和修改的代码。 我运行了两个代码(示例代码没有任何更改,下面的代码),但不出所料,这两个代码都没有给出预期的结果。 结果与我在上一篇文章中描述的结果相同。  

    包括"MSP4S.h"

    内部主(无效)

     WDTCTL = WDTPW | WDTHOLD;                //停止看门狗

     //配置GPIO
     P2SEL1 || BIT0 | BIT1;                   // USI_A0 UART操作
     P2SEL0 &=~(BIT0 | BIT1);

     //禁用GPIO开机默认高阻抗模式以激活
     //以前配置的端口设置
     PM5CTL0 &=~LOCKLPM2;

     //启动时钟系统,最大DCO设置为~8MHz
     CSCTL0_H = CSOKEY >> 8;                   //解锁时钟寄存器
     CSCTL1 = DCOFSEL_3 | DCORSEL;            //将DCO设置为8MHz
     CSCTL2 =拉美_ VLOCLK | SESS__DCOCLK | SELM__DCOCLK;
     CSCTL3 = DIVA__1 | DIVs__1 | DIVM__1;    //设置所有分隔线
     CSCTL4 &=~SMCLKOFF;                      //启用SMCLK
     CSCTL0_H = 0;                            //锁定CS寄存器

     //为UART模式配置USI_A0
     UCA0CTLW0 = UCSWRST;                     //重置eUSCI
     UCA0CTLW0 |= UCSSEL__SMCLK;              // CLK = SMCLK
     //波特率计算
     // 80万/(16*9600)=9600= 52.083
     //分数部分= 0.083
     //用户指南表21-4:UCBRSx = 0x04
     // UCBRFx = int ((52.083 -52)*16)= 1
     UCA0BR0 = 52;                            // 80万/16/9600</s>9600
     UCA0BR1 = 0x00;
     UCA0MCTLW || UCOS16 | UCBRF_1;
     UCA0CTLW0 &=~UCSWRST;                   //初始化eUSCI
     UCA0IE |= UCRXIE;                        //启用USI_A0 RX中断

     __bis_sr_register(LPM0_bits | GIE);      //输入LPM3,中断已启用
     __no_operation();//                        用于调试器
    }

    #if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
    #pragma vector=USI_A0_vector
    __interrupt void USI_A0_ISR(void)
    #Elif已定义(__GMNU__)
    void __attribute__((interrupt (USI_A0_vector))) USI_A0_ISR (void)
    #否则
    错误编译器不受支持!
    #endif

     Switch(__偶 数_in_range(UCA0IV, USI_UART_UCTXCPTIFG))
     {
       案例USI_NONE:中断;
       案例USI_UART_UCRXIFG:
         while (!(UCA0IFG和UCTXIFG));
         UCA0TXBUF = UCA0RXBUF;
         __no_operation();
         中断;
       案例USI_UART_UCTXIFG:中断;
       案例USI_UART_UCSTIFG:中断;
       案例USI_UART_UCTXCPTIFG:中断;
     }
    }

    此致,

    洪美

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    msp430fr59xx_euscia0_UART_01.c按预期工作,如果尝试与PC进行反向通道UART通信,请确保在LaunchPad上连接J13 RXD和TXD跳线。

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

    您好,Ryan:

    我认为背信道UART与PC通信。 我上传蓝牙模块和启动板之间的线缆连接图片。 在J13上,预期TXD/RXD连接至蓝牙模块RX/TX,其余针脚通过跳线连接。 如果有任何连接错误,请告知我。 非常感谢!

    此致,

    洪美

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    5V引脚连接至LaunchPad的3.3V VCC导轨。 请注意,即使计算机上出现COM7,但在连接J13上的RXD/TXD跳线时,反向通道UART仍被禁用。

    此致,
    Ryan