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.

[参考译文] MSP430F5436A:发送时为什么接收标志被设置为1

Guru**** 2524550 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1189344/msp430f5436a-why-the-receive-flag-set-as-1-when-transmitting

器件型号:MSP430F5436A

您好!

   在我进行传输时、接收标志自动置1  

此函数的原因是什么?

代码 附在下面。

#include
/**
* main.c
*
int main (空)


P9SEL|= BIT4;//TX
P9SEL|= BIT5;//RX

UCA2CTL1 |= UCSWRST;//**将状态机置于复位状态**
UCA2CTL1 |= UCSSEL_2;// SMCLK
UCA2BR0 = 9;// 1MHz 115200  
UCA2BR1 = 0;// 1MHz 115200
UCA2MCTL |= UCBRS_1 + UCBRF_0;//调制 UCBRSx=1、UCBRFx=0
UCA2CTL1 &=~UCSWRST;//**初始化 USCI 状态机**


while (1)

UCA2TXBUF='A';
while (!(UCA2IFG & UCTXIFG));
UCA2IFG &=~ UCTXIFG;

_DELAY_CYCLES (1000);


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

    安布尔亚、您好、

    根据我的理解、您正在尝试传输字符"A";这里有几个方面。

    1.尝试在这条语句"while (!(UCA2IFG & UCTXIFG))"之后移动行"UCA2TXBUF='A';";  

    2.您可以添加一个 ISR 来处理此问题。 查看 示例代码(这会回显一个字符、因此应用程序并不完全相同、但您可以对 ISR 使用相同的格式)。 波特率和传输字符的速度可能存在问题、因此这将解决该潜在问题。

    如果您有任何后续问题、请告诉我!

    Amruta

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

    您从未在该代码中检查 RXIFG、因此您为什么认为它已设置?

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

    在我的代码中、我使用接收中断函数、但我没有在这里指定它。

    每次我发送一个字符时、接收标志都会设置为1、这会导致该函数进入接收中断函数。

    为什么接收标志设置为1?

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

    尊敬的  

    我将按照您的建议调整线路、但将传输标志设置为1。

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

    安布尔亚、您好、

    只要您没有从接收缓冲区中读取、该标志就会保持高电平、您可以根据需要在代码中手动清除。 请告诉我、调整线条是否有用、或者您是否有任何其他问题、但我现在将关闭该主题、您可以根据需要重新打开。

    Amruta  

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

    RXD 引脚连接到什么? 如果没有、请将其连接到 GND 或 Vcc、以免其悬空。 RXIFG 不会自行置位(或复位) 。 它必须是您正在做的事情。