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.

[参考译文] CCS/MSP430F4152:MSP430F4152

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/919084/ccs-msp430f4152-msp430f4152

器件型号:MSP430F4152

工具/软件:Code Composer Studio

您好!

我遇到了一个小问题、

我无法找到解决方案。

我使用的是 MSP430F4152。

在微控制器中、我使用 Rx 中断(我将数据从 PC 接收到微控制器)、

然后我使用计时器中断、  

通过计时器中断、我将数据从微控制器传输到 PC。

我的计划在:  

//unsigned int old;
char old;

#pragma vector=BASICTIMER_vector
__interrupt void basic_timer_ISR (void)
{
putchar (旧);
LPM3_EXIT;
}

#pragma vector=USCIAB0RX_vector
__interrupt void USCIA0RX_ISR (void)
{
OLD = UCA0RXBUF;
// putchar (old);
// LPM3_exit;
}

int main (void)
{
unsigned int i;

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

/../../---------------
FLL_CTL0 |= XCAP11PF; //配置负载电容器

BTCTL =(BTIP2+BTIP0); //2毫秒
IE2 |= BTIE;


lcd_init();
UART_INIT();

while (1)
{

LCD[0]= digit[1];

//*/=========================================================

_bis_SR_register (LPM3_bits+GIE);
}
//返回0;
}


问题:
我要从
PC 接收52 (任意2位值),从 PC 接收到微控制器,
并通过传输功能将值发送到 PC。
1)接收数据后,如果我在 Rx 中断中发送:实际值正在发送(EX:52),
2)但如果我通过 Rx 中断接收数据,并使用计时器中断发送:只有一个数字在发送(EX:我接收52,但只发送'2')
(这不会在一位数字值中发生:我收到的值..... 是发送的准确值)


我想同时使用"Rx 中断和计时器中断"。 
(我还使用了"int"类型)

您能告诉我如何解决这个问题吗?

谢谢,

Srijit。

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

    根据您的描述、您的 PC 似乎在基本计时器窗口内连续发送两个字节(2ms、如果 ACLK 故障转移到 VLOCLK、可能为6ms)。 在这种情况下、第二个 Rx 字节将在第一个字节被发送之前覆盖"OLD"。 这可能是发生的情况吗?

    在一般情况下、您可能应该有一个循环缓冲器来处理此问题。 如果您知道您的事务始终是2个字节、则可能会使用一种更简单的机制。

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

    您好!

    非常感谢您的回复。

    1)你说“循环缓冲器” :你能解释一下,如何做到?

    2) 2)如果我只想占用2个字节、那么您也可以告诉我逻辑(代码...如果可能)。

    此致、

    Srijit

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

    我认为 Google 将比我更好地解释循环缓冲器(更恰当的"循环队列")。