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/MSP-TS430DA38:MSP430F2252

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/769497/ccs-msp-ts430da38-msp430f2252

器件型号:MSP-TS430DA38

工具/软件:Code Composer Studio

hii、

使用TI Resource Explorer 中的 I2C 示例代码(MSP430f2252)、使用中断... I2C 中是否可能没有中断? 使用 msp430f2252。 如果可能,???

谢谢你

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

    您好 Siranjevi、

    -您能链接您所引用的代码示例吗?
    -您的问题是代码示例是否可以在没有中断的情况下完成?

    最棒的
    Chris

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

    1.这是我要更改带有输出中断的轮询方法的项目代码

    #include

    int chkAcInput (void);
    unsigned short int ACInputVoltage (void);
    int chkaci (void);
    void adc_init (void);
    void i2c_init (void);

    #define CLOCK FREQ 16000000

    #define LED_ACIN 0x01 //P1.0

    char ac_FLAG = 0、ac_Val = 0;

    unsigned int RxByteCtr;
    unsigned int RxWord;

    int main (空)

    WDTCTL = WDTPW + WDTHOLD;//停止 WDT
    IF (CALBC1_16MHz=0xFF)//如果校准常数被擦除

    while (1);//请勿加载,陷阱 CPU!!

    DCOCTL = 0;//选择最低 DCOx 和 MODx 设置
    BCSCTL1 = CALBC1_16MHz;//设置 DCO
    DCOCTL = CALDCO_16MHz;
    P1DIR |= 0x01;
    P1OUT |=~LED_ACIN;
    while (1)

    AC_Val = ACInputVoltage ();


    /*-------------------- ADC_Value_Comparesion_With _Volt----------------------------------------------------------------------------- *
    无符号短整型 ACInputVoltage (void)

    unsigned short int ACV_flag = 0;
    float ac_Real、ac_ref=3.592;

    I2C_init();

    RxByteCtr = 1;//加载 RX 字节计数器
    UCB0CTL1 |= UCTXSTT;// I2C 启动条件
    _bis_SR_register (CPUOFF + GIE);//输入 LPM0、启用中断

    ac_real-=(RxWord/ac_ref);
    ACV_FLAG =(int) AC_REAL;
    返回(ACV_FLAG);


    /*-------------------- I2C_setup------------------------------------------------------- *
    void i2c_init (void)

    P1DIR |= 0x01;// P1.0输出
    P3SEL |= 0x06;//将 I2C 引脚分配给 USCI_B0
    UCB0CTL1 |= UCSWRST;//启用 SW 复位
    UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;// I2C 主器件、同步模式
    UCB0CTL1 = UCSSEL_2 + UCSWRST;//使用 SMCLK、保持软件复位
    UCB0BR0 = 12;// fSCL = SMCLK/12 =~100kHz
    UCB0BR1 = 0;
    UCB0I2CSA = 0x48;//设置从器件地址
    UCB0CTL1 &=~UCSWRST;//清除 SW 复位,恢复运行
    IE2 |= UCB0RXIE;//启用 RX 中断


    // USCIAB0TX_ISR 的结构使其可用于接收任何
    //通过预加载带字节计数的 RxByteCtr 来获得2+字节数。
    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector = USCIAB0TX_vector
    _interrupt void USCIAB0TX_ISR (void)
    #Elif defined (_GNU_)
    void __attribute__((interrupt (USCIAB0TX_vector)) USCIAB0TX_ISR (void)
    其他
    错误编译器不受支持!
    #endif

    RxByteCtr ----
    RxWord |= UCB0RXBUF;//获取最终接收到的字节、
    如果(RxByteCtr = 1)//只剩下一个字节?

    UCB0CTL1 |= UCTXSTP;//生成 I2C 停止条件
    _BIC_SR_REGISTER_ON_EXIT (CPUOFF);//退出 LPM0

    2) 2)我想更改无中断的轮询方法。

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

    Siranjevi、

    该主题中所述 -建议使用中断并在轮询过程中遵循 TI 示例代码、除非您有非常具体的应用。  

    您对需要轮询的此代码的应用是什么?

    Chris