工具/软件:Code Composer Studio
hii、
使用TI Resource Explorer 中的 I2C 示例代码(MSP430f2252)、使用中断... I2C 中是否可能没有中断? 使用 msp430f2252。 如果可能,???
谢谢你
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.
工具/软件:Code Composer Studio
hii、
使用TI Resource Explorer 中的 I2C 示例代码(MSP430f2252)、使用中断... I2C 中是否可能没有中断? 使用 msp430f2252。 如果可能,???
谢谢你
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)我想更改无中断的轮询方法。