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.

[参考译文] MSP430FR2355:Rx ISR --如何等待未知字符数....

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/905519/msp430fr2355-rx-isr----how-to-wait-for-unknown-number-of-characters

器件型号:MSP430FR2355

我在 radio.c 中运行一个状态机...我在 main.c 中有一个 RX/TX ISR。 我有多种命令,其中一些命令需要得到确认,有些命令不需要...我已经在各种情况下使用逻辑分析仪验证了状态机,所有命令看起来都很好。  我的问题是、一些命令会返回到 MSP。  这些响应的大小不一,可达20个字符...我已经尝试过状态机中的多种操作,以停止并等待 RX 结束后移动,但我发现的唯一工作是  

案例响应:
TX = F;ACK = F;
if (howMany <= 3)
_bis_SR_register (LPM3_bits);
否则{
PRx =传入;
howMany = 0;
memcpy (响应、传入、sizeof (传入));
状态=完成;

问题3对于一个命令来说很好、而不是对另一个命令来说很好。  我希望使用(UCA1IFG 和 UCRXIFG)的 while 或 if 似乎都不会使用适当的信息填充数组....有人能告诉我是否有一种简单的方法来获得不同大小的传入响应,除非通过每个命令传递一个参数。  ISR 看起来是什么样的

USCI_UART_UCRXIFG 案例:
如果(!TX){
* prx = UCA1RXBUF;
howMany ++;
prx++;
_BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);
}
中断;

谢谢

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

    这听起来更像是一个逻辑问题而不是编码问题。 您(作为人类)如何知道响应何时完成?

    两种典型的机制(除长度外)是(1)终止字符、例如'\r\n'(2)空闲超时。