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.
原程序如下:
#include <msp430.h>
extern unsigned char RXData,TXData,TXByteCtr,ATXData[2];
void I2C_Init(unsigned char SlaveAddress)
{ P3SEL |= 0x03; // Assign I2C pins to USCI_B0
UCB0CTL1 |= UCSWRST; // Enable SW reset
UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master, synchronous mode
UCB0CTL1 = UCSSEL_2 + UCSWRST+UCTR; // Use SMCLK
UCB0BR0 = 12; // fSCL = SMCLK/12 = ~100kHz
UCB0BR1 = 0;
UCB0I2CSA = SlaveAddress; // Slave Address is 048h
UCB0CTL1 &= ~UCSWRST; // Clear SW reset, resume operation
UCB0IE |= UCTXIE+UCRXIE+UCSTPIE; }
void I2C_WriteReg(unsigned char RegAddr, unsigned char Data) //////////涓婁笅灞侫PI闇?瑕佺敤鍒?
{ TXByteCtr = 2; // Load TX byte counter
ATXData[0]=RegAddr;
ATXData[1]=Data;
while (UCB0CTL1 & UCTXSTP); // Ensure stop condition got sent
UCB0IE |= UCTXIE; UCB0CTL1 |= UCTR + UCTXSTT; // I2C TX, start condition
__bis_SR_register(LPM0_bits + GIE); // Enter LPM0 w/ interrupts
__no_operation();
}
unsigned char I2C_ReadByte() //////////涓婁笅灞侫PI闇?瑕佺敤鍒?
{
while (UCB0CTL1 & UCTXSTP); // Ensure stop condition got sent
UCB0CTL1 &= ~UCTR;
UCB0IE &=~ UCTXIE;
UCB0CTL1 |= UCTXSTT; // I2C start condition
while(UCB0CTL1 & UCTXSTT); // Start condition sent?
UCB0CTL1 |= UCTXSTP;
return RXData;
}
#pragma vector = USCI_B0_VECTOR
__interrupt void USCI_B0_ISR(void)
{
switch(__even_in_range(UCB0IV,12))
{ case 0: break; // Vector 0: No interrupts
case 2: break; // Vector 2: ALIFG
case 4: break; // Vector 4: NACKIFG
case 6: break; // Vector 6: STTIFG
case 8:
UCB0IFG &= ~UCSTPIFG; // Clear stop condition int flag
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0 if data was transmitted
break; // Vector 8: STPIFG
case 10:
RXData=UCB0RXBUF; // UCB0CTL1 |= UCTXNACK+UCTXSTP;
UCB0IFG &= ~UCRXIFG;
__bic_SR_register_on_exit(LPM0_bits);
break; // Vector 10: RXIFG
case 12: // Vector 12: TXIFG
if (TXByteCtr) // Check TX byte counter
{
UCB0TXBUF = ATXData[2-TXByteCtr]; // Load TX buffer
TXByteCtr--; // Decrement TX byte counter
}
else
{ UCB0CTL1 |= UCTXSTP; // I2C stop condition
UCB0IFG &= ~UCTXIFG; // Clear USCI_B0 TX int flag
__bic_SR_register_on_exit(LPM0_bits); // Exit LPM0
}
break;
default: break; }}
int main(void) {
WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
return 0;
}
这里是报错:
#10010errors encountered during linking;"I2C.out" not built
#10234-D unresolved symbols remain
请指点,谢谢
Hi Yankun,
CCS 报这个错误是因为你的程序里面有没定义或是没有申明的函数或变量。你可以在CCS的 console窗口里面找到相关的unresolved symbols。
你把console里的报错信息,滑条往上面拉一点,可以找到相关的信息。然后把它贴出来,或是自己看一下,应该比较容易找到问题所在。
xiexei
ken