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:USB 连接/断开中断????

Guru**** 2543200 points
Other Parts Discussed in Thread: MSP430FR2355

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/803231/msp430fr2355-usb-connect-discconnect-interrupt

器件型号:MSP430FR2355

首先、我对驱动中断的硬件完全不熟悉。 我们正在使用 MSP430fr2355、我想弄清楚在 USB 电缆连接和断开时生成中断的相关事项。 使用 Resource Explorer、我能够使用示例软件在连接 USB 电缆时生成中断。 但是、当电缆断开连接时、我无法成功生成中断。  

这是我在连接电缆时执行它的方式。  



void Init_gpio()
{
(笑声)

P2OUT &=~BIT0; //清除已定义加电状态的 P2.0输出锁存器
P2DIR |= BIT0; //将 P2.0设置为输出方向

P2OUT |= BIT4; //将 P2.4配置为上拉
P2REN |= BIT4; // P2.4上拉寄存器使能
P2IES |= BIT4; // P2.4高/低边沿
P2IE |= BIT4; // P2.4中断被启用

(笑声)

//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;

P2IFG &=~BIT4; // P2.4 IFG 清零

} 

从这里我要使用

#if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_)
#pragma vector=port2_vector
__interrupt void Port_1 (void)
#elif defined (__GNU__)
void __attribute__((interrupt (port2_vector))) Port_1 (void)#else

not supported!
#endif
{
P2IFG &=~BIT4;//清除 P2.4 IFG
__BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);//退出 LPM3
} 

与同事交谈时、2.4似乎是响应连接 USB 电缆时出现的电压增加。

为了在我断开电缆时实现中断、我应该查看什么。

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

    USB 电缆为设备供电的是什么:电源、数据或两者?

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

    Christopher、  

    感谢您的联系。  

    USB 电缆仅用于数据。  

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

    Chris、  

    有什么建议吗?

    我想或许可以将边沿选择从上升更改为下降、但似乎并没有改变结果。 它仍然仅在我插入时才使开关变为正常状态。  

    我还 ^ P2IE = BIT4来禁用中断;然后只轮询 P2IN 来查看在拔下 USB 时是否有任何变化。 P2IN 从未发生过状态变化

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

    您好、Michael、

    仅 MSP430FR2355不支持 USB。 下面是 支持 USB 的 MSP430器件的排序列表。

    您能否分享您在 Resource Explorer 上提到的示例?

    谢谢、

    Chris

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

    Chris、  

    您知道、我想告诉您、我使用的是连接到 MSP430的 USB 转串行芯片。 在任何情况下、我都能弄清楚它。  

    这是我找到的示例代码、它指示我执行我想要执行的操作的方向。  

    #include 
    
    int main (void)
    {
    WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
    
    //配置 GPIO
    P1OUT &=~BIT0; //清除已定义加电状态的 P1.0输出锁存器
    P1DIR |= BIT0; //将 P1.0设置为输出方向
    
    P1OUT |= BIT3; //将 P1.3配置为上拉
    P1REN |= BIT3; // P1.3上拉寄存器使能
    P1IES |= BIT3; // P1.3高/低边沿
    P1IE |= BIT3; // P1.3中断被启用
    
    //禁用 GPIO 上电默认高阻抗模式
    //激活先前配置的端口设置
    PM5CTL0 &=~LOCKLPM5;
    
    P1IFG &=~BIT3; // P1.3 IFG 被清零
    
    while (1)
    {
    _bis_SR_register (LPM3_bits | GIE);//输入 LPM3、带中断
    __no_operation(); //进行调试
    P1OUT ^= BIT0; // P1.0 =切换
    }
    }
    
    //端口1中断服务例程
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector=Port1_vector
    __interrupt void Port_1 (void)
    #Elif defined (__GNU__)
    void __attribute__((interrupt (port1_vector))#if Compiler_1 (void!
    )#void Port 1
    (void!)
    #endif
    {
    P1IFG &=~BIT3; //清除 P1.3 IFG
    __BIC_SR_REGISTER_ON_EXIT (LPM3_BITS);//退出 LPM3
    } 

    配置引脚2.4时、我的设置稍有不同。 配置其他端口时出现问题、由于某种原因影响端口2、因此我需要先解决该问题。 最后、我最后要做的是切换高/低边沿、以识别 USB 电缆何时断开连接。  

    感谢你能抽出时间并提供帮助。