用CCS6.0编译总是出类似的错误,最近写一个I2C的代码一直弄不好,请大神们知道一下吧这个是库里面的例子加载编译出来都是错
#include
#include
#include
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
#include "driverlib/uart.h"
#include "utils/softi2c.h"
#include "utils/uartstdio.h"
#define SLAVE_ADDR 0x54
#define STATE_IDLE 0
#define STATE_WRITE_NEXT 1
#define STATE_WRITE_FINAL 2
#define STATE_WAIT_ACK 3
#define STATE_SEND_ACK 4
#define STATE_READ_ONE 5
#define STATE_READ_FIRST 6
#define STATE_READ_NEXT 7
#define STATE_READ_FINAL 8
#define STATE_READ_WAIT 9
static tSoftI2C g_sI2C;
static uint8_t *g_pui8Data = 0;
static uint32_t g_ui32Count = 0;
static volatile uint32_t g_ui32State = STATE_IDLE;
void
InitConsole(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
GPIOPinConfigure(GPIO_PA0_U0RX);
GPIOPinConfigure(GPIO_PA1_U0TX);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTStdioConfig(0, 115200, 16000000);
}
void
SoftI2CCallback(void)
{
SoftI2CIntClear(&g_sI2C);
switch(g_ui32State)
{
case STATE_IDLE:
{
break;
}
case STATE_WRITE_NEXT:
{
SoftI2CDataPut(&g_sI2C, *g_pui8Data++);
g_ui32Count--;
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_SEND_CONT);
if(g_ui32Count == 1)
{
g_ui32State = STATE_WRITE_FINAL;
}
break;
}
case STATE_WRITE_FINAL:
{
SoftI2CDataPut(&g_sI2C, *g_pui8Data++);
g_ui32Count--;
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_SEND_FINISH);
g_ui32State = STATE_SEND_ACK;
break;
}
case STATE_WAIT_ACK:
{
if(SoftI2CErr(&g_sI2C) == SOFTI2C_ERR_NONE)
{
SoftI2CDataGet(&g_sI2C);
g_ui32State = STATE_IDLE;
break;
}
}
case STATE_SEND_ACK:
{
SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR, true);
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_SINGLE_RECEIVE);
g_ui32State = STATE_WAIT_ACK;
break;
}
case STATE_READ_ONE:
{
SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR, true);
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_SINGLE_RECEIVE);
g_ui32State = STATE_READ_WAIT;
break;
}
case STATE_READ_FIRST:
{
SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR, true);
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_RECEIVE_START);
g_ui32State = STATE_READ_NEXT;
break;
}
case STATE_READ_NEXT:
{
*g_pui8Data++ = SoftI2CDataGet(&g_sI2C);
g_ui32Count--;
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_RECEIVE_CONT);
if(g_ui32Count == 2)
{
g_ui32State = STATE_READ_FINAL;
}
break;
}
case STATE_READ_FINAL:
{
*g_pui8Data++ = SoftI2CDataGet(&g_sI2C);
g_ui32Count--;
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_RECEIVE_FINISH);
g_ui32State = STATE_READ_WAIT;
break;
}
case STATE_READ_WAIT:
{
*g_pui8Data++ = SoftI2CDataGet(&g_sI2C);
g_ui32Count--;
g_ui32State = STATE_IDLE;
break;
}
}
}
void
AtmelWrite(uint8_t *pui8Data, uint32_t ui32Offset, uint32_t ui32Count)
{
g_pui8Data = pui8Data;
g_ui32Count = ui32Count;
if(ui32Count != 1)
{
g_ui32State = STATE_WRITE_NEXT;
}
else
{
g_ui32State = STATE_WRITE_FINAL;
}
SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR | (ui32Offset >> 8), false);
SoftI2CDataPut(&g_sI2C, ui32Offset);
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_BURST_SEND_START);
while(g_ui32State != STATE_IDLE)
{
}
}
void
AtmelRead(uint8_t *pui8Data, uint32_t ui32Offset, uint32_t ui32Count)
{
g_pui8Data = pui8Data;
g_ui32Count = ui32Count;
if(ui32Count == 1)
{
g_ui32State = STATE_READ_ONE;
}
else
{
g_ui32State = STATE_READ_FIRST;
}
SoftI2CSlaveAddrSet(&g_sI2C, SLAVE_ADDR | (ui32Offset >> 8), false);
SoftI2CDataPut(&g_sI2C, ui32Offset);
SoftI2CControl(&g_sI2C, SOFTI2C_CMD_SINGLE_SEND);
while(g_ui32State != STATE_IDLE)
{
}
}
void
Timer0AIntHandler(void)
{
TimerIntClear(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
SoftI2CTimerTick(&g_sI2C);
}
int
main(void)
{
uint8_t pui8Data[16];
uint32_t ui32Idx;
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
GPIOPinTypeI2C(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_3);
memset(&g_sI2C, 0, sizeof(g_sI2C));
SoftI2CCallbackSet(&g_sI2C, SoftI2CCallback);
SoftI2CSCLGPIOSet(&g_sI2C, GPIO_PORTB_BASE, GPIO_PIN_2);
SoftI2CSDAGPIOSet(&g_sI2C, GPIO_PORTB_BASE, GPIO_PIN_3);
SoftI2CInit(&g_sI2C);
SoftI2CIntEnable(&g_sI2C);
TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
TimerLoadSet(TIMER0_BASE, TIMER_A, SysCtlClockGet() / 40000);
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT);
TimerEnable(TIMER0_BASE, TIMER_A);
IntEnable(INT_TIMER0A);
InitConsole();
UARTprintf("SoftI2C Atmel AT24C08A example\n");
UARTprintf("Write:");
for(ui32Idx = 0; ui32Idx < 16; ui32Idx++)
{
pui8Data[ui32Idx] = ui32Idx;
UARTprintf(" %02x", pui8Data[ui32Idx]);
}
UARTprintf("\n");
AtmelWrite(pui8Data, 0, 16);
AtmelRead(pui8Data, 0, 16);
UARTprintf("Read :");
for(ui32Idx = 0; ui32Idx < 16; ui32Idx++)
{
UARTprintf(" %02x", pui8Data[ui32Idx]);
}
UARTprintf("\n");
UARTprintf("Done.\n\n");
return(0);
}
下面的也是
#include"include.h"
#include "pin_map.h"
//**************************** 设备端口号 *********************************//
// 核心板 使用PLL,频率 80MHZ
//PWM四路50HZ输出:PB4,PB5,PB6,PB7; 定时1器捕捉(超声波):PF2(R),PF3(T) //
//串口通信:PB0-->RX,PB1-->TX; IIC通信:PB2-->SCL,PB3-->SDA //
//液晶OLED:PC4(D0),PC5(D1),PC6(RS),PC7(DC) 按键:PF0|PF4(核心板),PE4,PE5 //
//*************************************************************************//
//**************************** Times0Int **********************************//
// 1ms //
// //
//*************************************************************************//
void Times0Int_InIt(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); //使能定时器
TimerIntRegister(TIMER0_BASE,TIMER_A,Timer0_IntHandler);
TimerConfigure(TIMER0_BASE,TIMER_CFG_SPLIT_PAIR |TIMER_CFG_A_PERIODIC);
//TimerConfigure(TIMER0_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PERIODIC);
TimerLoadSet(TIMER0_BASE,TIMER_A,400000); ///5MS中断
TimerIntEnable(TIMER0_BASE,TIMER_TIMA_TIMEOUT);
TimerEnable(TIMER0_BASE, TIMER_A);
}
//************************** GpioTimes1Int ********************************//
// //捕获计数 //
// //
//*************************************************************************//
void GpioTimes1Int_InIt(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinConfigure(GPIO_PF2_T1CCP0);
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_2,GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);
GPIOPinTypeTimer(GPIO_PORTF_BASE,GPIO_PIN_2);
TimerClockSourceSet(TIMER1_BASE,TIMER_CLOCK_SYSTEM);
TimerConfigure(TIMER1_BASE, TIMER_CFG_SPLIT_PAIR|TIMER_CFG_A_CAP_TIME_UP);
TimerControlEvent(TIMER1_BASE, TIMER_A, TIMER_EVENT_BOTH_EDGES);
TimerIntEnable(TIMER1_BASE,TIMER_CAPA_EVENT);
TimerIntRegister(TIMER1_BASE,TIMER_A,Timer1_IntHandler);
IntPrioritySet(INT_TIMER1A, 0);
IntEnable(INT_TIMER1A);
TimerEnable(TIMER1_BASE,TIMER_A );
}
//***************************** GpioInt ***********************************//
// //
// //
//*************************************************************************//
void GpioInt_InIt(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1);
GPIOIntTypeSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_BOTH_EDGES);
GPIOIntRegister(GPIO_PORTF_BASE,GPIO_IntHandler);
GPIOIntEnable(GPIO_PORTF_BASE,GPIO_INT_PIN_1);
IntPrioritySet(INT_GPIOF, 0);
IntEnable(GPIO_INT_PIN_1);
}
//******************************* PWM *************************************//
//PORT : PB4 ,PB5 ,PB6 ,PB7 //
// //
//*************************************************************************//
void PWM_InIt(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);
GPIOPinConfigure(GPIO_PB6_M0PWM0);
GPIOPinConfigure(GPIO_PB7_M0PWM1);
GPIOPinConfigure(GPIO_PB4_M0PWM2);
GPIOPinConfigure(GPIO_PB5_M0PWM3);
SysCtlPWMClockSet(SYSCTL_PWMDIV_64);
PWMGenConfigure(PWM0_BASE,PWM_GEN_0,PWM_GEN_MODE_UP_DOWN| PWM_GEN_MODE_NO_SYNC);
PWMGenConfigure(PWM0_BASE,PWM_GEN_1,PWM_GEN_MODE_UP_DOWN| PWM_GEN_MODE_NO_SYNC);
PWMGenPeriodSet( PWM0_BASE, PWM_GEN_0, 25000);//125 0000 / 250 00
PWMGenPeriodSet( PWM0_BASE, PWM_GEN_1, 25000);//125 0000 / 250 00
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 0);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 0);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, 0);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, 0);
PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT |PWM_OUT_1_BIT|PWM_OUT_2_BIT|PWM_OUT_3_BIT), true);
PWMGenEnable(PWM0_BASE, PWM_GEN_0);
PWMGenEnable(PWM0_BASE, PWM_GEN_1);
}
void PWM_Set(int16 PWM_CH0,int16 PWM_CH1,int16 PWM_CH2,int16 PWM_CH3)
{
if(PWM_CH0 > 25000)PWM_CH0 = 25000;else if(PWM_CH0<0)PWM_CH0 = 0;
if(PWM_CH1 > 25000)PWM_CH1 = 25000;else if(PWM_CH1<0)PWM_CH1 = 0;
if(PWM_CH2 > 25000)PWM_CH2 = 25000;else if(PWM_CH2<0)PWM_CH2 = 0;
if(PWM_CH3 > 25000)PWM_CH3 = 25000;else if(PWM_CH3<0)PWM_CH3 = 0;
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, PWM_CH0);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, PWM_CH1);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, PWM_CH2);
PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, PWM_CH3);
}
//******************************* ADC *************************************//
// //
// //
//*************************************************************************//
void ADC_InIt(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3|GPIO_PIN_2|GPIO_PIN_1|GPIO_PIN_0);
ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);
// ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH0 );
// ADCSequenceStepConfigure(ADC0_BASE, 0, 1, ADC_CTL_CH1 );
// ADCSequenceStepConfigure(ADC0_BASE, 0, 2, ADC_CTL_CH2 );
ADCSequenceStepConfigure(ADC0_BASE, 0, 3, ADC_CTL_CH3 | ADC_CTL_IE | ADC_CTL_END);
ADCSequenceEnable(ADC0_BASE, 0);
ADCIntClear(ADC0_BASE, 0);
}
void Get_Ad(void)
{
uint32_t pui32ADC0Value[4];
ADCProcessorTrigger(ADC0_BASE, 0);
while(!ADCIntStatus(ADC0_BASE, 0, false));
ADCIntClear(ADC0_BASE, 0);
ADCSequenceDataGet(ADC0_BASE, 0, pui32ADC0Value);
Count(1,pui32ADC0Value[0],"V");
}
//****************************** UART *************************************//
//Port:PB0-->RX //
// PB1-->TX //
//*************************************************************************//
void Uart_Init(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB0_U1RX);
GPIOPinConfigure(GPIO_PB1_U1TX);
GPIOPinTypeUART(GPIO_PORTB_BASE, GPIO_PIN_0 | GPIO_PIN_1);
UARTConfigSetExpClk(UART1_BASE,80000000,115200,(UART_CONFIG_WLEN_8|UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE));
//UARTFIFOLevelSet(UART1_BASE,UART_FIFO_TX1_8,UART_FIFO_RX1_8);
IntEnable(INT_UART1);
UARTIntRegister(UART1_BASE, UART1_Handler); ///接收中断
UARTIntEnable(UART1_BASE,UART_INT_RX);
UARTEnable(UART1_BASE);
UARTFIFODisable(UART1_BASE);
}
void UART_Str(char ch[])
{
unsigned char ptr=0;
while(ch[ptr])
{
UARTCharPut(UART1_BASE,(unsigned char)ch[ptr++]);
}
UARTCharPut(UART1_BASE, '\n');
}
void UART_Write_Int(int UART_Write_data)//整型变量使用这个函数
{
char uart_str_temp[10];
sprintf(uart_str_temp,"%d ",UART_Write_data);
UART_Str(uart_str_temp);
}
void UART_Write_Float(float UART_Write_data)//浮点型变量使用这个函数
{
char uart_str_temp[10];
int UART_Write_i=(int)UART_Write_data;
int UART_Write_j=(int)(fabs((UART_Write_data-UART_Write_i)*1000));
int UART_Write_k3=(int)(UART_Write_j/100);
int UART_Write_k2=(int)(UART_Write_j%100/10);
//int k1=(int)(j%100%10);
sprintf(uart_str_temp,"%d.%d%d ",UART_Write_i,UART_Write_k3,UART_Write_k2);//,k1);
UART_Str(uart_str_temp);
}
//=======虚拟示波器beat1.7=========//
void sci_dis(signed int ch0, signed int ch1, signed int ch2)
{
UARTCharPut(UART1_BASE,(ch0+4000)/90+' ');
UARTCharPut(UART1_BASE,(ch0+4000)%90+' ');
UARTCharPut(UART1_BASE,(ch1+4000)/90+' ');
UARTCharPut(UART1_BASE,(ch1+4000)%90+' ');
UARTCharPut(UART1_BASE,(ch2+4000)/90+' ');
UARTCharPut(UART1_BASE,(ch2+4000)%90+' ');
}
//******************************* IIC *************************************//
//PORT : PB2-->SCL //
// PB3-->SDA //
//*************************************************************************//
void I2C_init(void)
{
SysCtlPeripheralEnable( SYSCTL_PERIPH_I2C0);
SysCtlPeripheralEnable( SYSCTL_PERIPH_GPIOB);
GPIOPinConfigure(GPIO_PB2_I2C0SCL);
GPIOPinConfigure(GPIO_PB3_I2C0SDA);
GPIOPinTypeI2CSCL(GPIO_PORTB_BASE,GPIO_PIN_2);
GPIOPinTypeI2C(GPIO_PORTB_BASE,GPIO_PIN_3);
I2CMasterInitExpClk(I2C0_BASE,80000000,true);
I2CMasterEnable(I2C0_BASE);
}
void I2CWrite(uint8 DevAddr,uint8 RegAddr,uint8 WriteData)
{
I2CMasterSlaveAddrSet(I2C0_BASE, DevAddr, false);
I2CMasterDataPut(I2C0_BASE, RegAddr);
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_START);
while(I2CMasterBusy(I2C0_BASE));
I2CMasterDataPut(I2C0_BASE,WriteData);
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_CONT);
while(I2CMasterBusy(I2C0_BASE));
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);
while(I2CMasterBusy(I2C0_BASE));
SysCtlDelay(1000);
}
uint8 I2CRead(uint8 DevAddr,uint8 RegAddr)
{
static uint8 i2c_getdata = 0;
I2CMasterSlaveAddrSet(I2C0_BASE, DevAddr, false);
I2CMasterDataPut(I2C0_BASE, RegAddr);
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_BURST_SEND_START);
while(I2CMasterBusy(I2C0_BASE));
I2CMasterSlaveAddrSet(I2C0_BASE, DevAddr, true);
I2CMasterControl(I2C0_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE);
while(I2CMasterBusy(I2C0_BASE));
i2c_getdata = I2CMasterDataGet(I2C0_BASE);
return i2c_getdata;
}
//******************************* QEI *************************************//
//正交解码 //
// //
//*************************************************************************//
/*
void Qei_InIt(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
SysCtlPeripheralEnable(SYSCTL_PERIPH_QEI1);
GPIOPinTypeQEI(GPIO_PORTC_BASE,GPIO_PIN_5);
GPIOPinTypeQEI(GPIO_PORTG_BASE,GPIO_PIN_4);
QEIConfigure(QEI1_BASE,(QEI_CONFIG_CAPTURE_A|QEI_CONFIG_NO_RESET|QEI_CONFIG_CLOCK_DIR|QEI_CONFIG_NO_SWAP),0);
// 设置速度检测周期为 0.01秒
QEIVelocityConfigure(QEI1_BASE, QEI_VELDIV_1, 60000);
QEIEnable(QEI1_BASE);
QEIVelocityEnable(QEI1_BASE);
//ROM_QEIVelocityGet(QEI1_BASE);
}
*/除了标记出来的还有很多,我把错误贴到下面附件