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.

[参考译文] 编译器/MSP430F5172:在哪里可以找到 TI C 编译器中断矢量的完整名称列表?

Guru**** 2582405 points
Other Parts Discussed in Thread: MSP430F5172

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/612666/compiler-msp430f5172-where-can-i-find-full-list-of-names-of-interrupts-vectors-for-ti-c-compiler

器件型号:MSP430F5172

工具/软件:TI C/C++编译器

您好!

在示例中、并非所有矢量都存在。 例如、我找到了 I2C:

// I2C 中断服务例程
#pragma vector = USCI_B0_vector
__interrupt void USCI_B0_ISR (void)
{
switch (__evo_in_range (UCB0IV、12))
{
情况0:中断;//向量0:无中断
情况2:中断;//向量2:ALIFG
情况4:中断;//向量4:NACKIFG
情况6:中断;//向量6:STTIFG
情况8:中断;//向量8:STPIFG
情况10:中断;//向量10:RXIFG
情况12:中断;//向量12:TXIFG
默认值:break;
}
} 

但我找不到 P1的示例。 是否有代码生成器? 我想它应该如下所示:

// P1中断服务例程
#pragma vector = Port1_vector
__interrupt void Port_1 (void)
{
switch (__evo_in_range (P1IV、16))
{
情况0:中断;//向量0:无中断
情况2:中断;//向量2:P1.0
情况4:中断;//向量4:P1.1
情况6:中断;//向量6:P1.2
案例8:中断;//向量8:P1.3
情况10:中断;//向量10:P1.4
情况12:中断;//向量12:P1.5
案例14:中断;//向量14:P1.6
案例16:中断;//向量16:P1.7
默认值:break;
}
} 

但我不知道从哪里可以获得名称:Port1_vector、Port_1、PORT1IV

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否尝试右键单击名称并转至定义?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 msp430f5172.h 中找到的 port1_vector、我已将 PORT1IV 更改为 P1IV (根据.h)
    如果我正确理解、可以自由选择中断 void 函数的名称?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的、中断函数的名称无关紧要。

    TI 示例不使用中断矢量值的名称、但可以做得更好;请参阅头文件:

    // P1IV 的定义
    #define P1IV_NONE (0x0000) /*无中断挂起*/
    #define P1IV_P1IFG0 (0x0002) /* P1IV P1IFG.0 */
    #define P1IV_P1IFG1 (0x0004) /* P1IV P1IFG.1 */
    #define P1IV_P1IFG2 (0x0006) /* P1IV P1IFG.2 */
    #define P1IV_P1IFG3 (0x0008) /* P1IV P1IFG.3 */
    #define P1IV_P1IFG4 (0x000A) /* P1IV P1IFG.4 */
    #define P1IV_P1IFG5 (0x000C) /* P1IV P1IFG.5 */
    #define P1IV_P1IFG6 (0x000E) /* P1IV P1IFG.6 */
    #define P1IV_P1IFG7 (0x0010) /* P1IV P1IFG.7 */ 
    /* USCI 中断向量定义*/
    #define USCI_NONE (0x0000) /*无中断挂起*/
    #define USCI_UCRXIFG (0x0002) /*中断矢量:UCRXIFG */
    #define USCI_UCTXIFG (0x0004) /*中断矢量:UCTXIFG */
    #define USCI_I2C_UCALIFG (0x0002) /*中断矢量:I2C 模式:UCALIFG */
    #define USCI_I2C_UCNACKIFG (0x0004) /*中断矢量:I2C 模式:UCNACKIFG */
    #define USCI_I2C_UCSTTIFG (0x0006) /*中断矢量:I2C 模式:UCSTTIFG*/
    #define USCI_I2C_UCSTPIFG (0x0008) /*中断矢量:I2C 模式:UCSTPIFG*/
    #define USCI_I2C_UCRXIFG (0x000A) /*中断矢量:I2C 模式:UCRXIFG */
    #define USCI_I2C_UCTXIFG (0x000C) /*中断矢量:I2C 模式:UCTXIFG */ 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    理想情况下、它应如下所示:

    // P1中断服务例程
    #pragma vector = Port1_vector
    __interrupt void Port_1 (void)
    {
    switch (__evo_in_range (P1IV、P1IV_P1IFG7))
    {
    案例 P1IV_NONE:break;//向量0:无中断
    案例 P1IV_P1IFG0:中断;//向量2:P1.0
    案例 P1IV_P1IFG1:中断;//矢量4:P1.1
    案例 P1IV_P1IFG2:break;//向量6:P1.2
    案例 P1IV_P1IFG3:break;//向量8:P1.3
    案例 P1IV_P1IFG4:中断;//矢量10:P1.4
    案例 P1IV_P1IFG5:中断;//矢量12:P1.5
    案例 P1IV_P1IFG6:中断;//矢量14:P1.6
    案例 P1IV_P1IFG7:中断;//向量16:P1.7
    默认值:break;
    }
    } 

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