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.

[参考译文] MSP430F149:UART CAN 和#39;t 在器件未连接时退出

Guru**** 2394305 points
Other Parts Discussed in Thread: MSP430F149

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/649103/msp430f149-uart-can-t-quit-when-device-did-not-connect

器件型号:MSP430F149

大家好、我需要你们的帮助、现在我正在处理 MSP430F149项目、我的 MSP430F149将通过 UART 连接另一个器件、我要做的是、如果 MSP430F149通过 UART 发送数据时器件未连接、LCD 显示屏"请先连接器件"。 我使用计时器进行检查、如果 UART 器件在5秒内没有响应、计时器将设置一个标志、MSP430F149将退出 UART 进程并显示"请首先连接器件"、但现在、如果器件未连接、UART 进程始终挂起。 我的代码如下所示。

#pragma vector=TIMERB1_vector  
_interrupt void Timer_B1 (void)

   switch (__evo_in_range (TBIV、2))
   {
   案例2:
    {
         uaraar=1;
         TBCCTL1 &=~CCIE;
       中断;
    }
   默认值:break;
    
   }

void rs232_fn (uchar 命令、uchar 长度、uchar * ptr)

   uchar i、temp、checksum;
   
   //5S 正在等待 UART 响应
   TBCTL |= TBCLR;
   TBCTL = TBSSEL_1 + ID_3 + MC_1;         //clock from ACLK、and devieded by 8、32.768kHz/8=4096Hz、
   TBCCTL1 = CCIE;
   IE1 &=~URXIE0;         //禁用 Rx 中断    
   while ((IFG1&UTXIFG0)==0)          
   {
      if (uaraar)(恐怖)
         中断;    
   }
   if (uaraar)(恐怖)
   {
      uaraar=0;
      IE1|=URXIE0;               
      PAGE =200;
      DisplayDesk (页面);   //显示"请先连接设备"
   }    
   其他
   {

(笑声)

    }

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

    尊敬的 Jian:

    您能否指出您的程序挂起的代码行?

    我看到您使用 TimerB 捕获比较寄存器1 (CCR1)来实现超时功能、但您从未填充 CCR1寄存器的值。 这在您的代码中的其他地方完成了吗?

    我也不理解您代码的以下部分:

    while ((IFG1&UTXIFG0)==0)
    {
    if (uaraar)(恐怖)
    中断;
    } 

    您轮询 UART 发送中断标志、但绝不会将任何数据放入 UART TX 缓冲区。 此外、如果器件连接到 UART 接口、则该标志不会更改值、因为它仅发出 UART TX 缓冲区为空的信号。 为了 更好地了解 UART 中断标志的用途、我建议阅读 MSP430x1xx 系列用户指南的第13章。  

    最后、我建议查看此处可供下载的计时器和 UART 示例: MSP430x13x、MSP430F14x、MSP430F15x、MSP430F16x 代码示例(修订版 T)

    此致、  

    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 Caleb
    谢谢你。
    我在 init 函数中设置 CCR1。
    您是对的、实际上、MSP430F149 UART 将发送所有数据、即使器件未连接、它也无法接收响应、因此我需要检查 URXIFG0寄存器。 再次感谢。

    江阳