LM4F231 IIC中断问题

我使用的单片机型号为LM4F231H5QRIG。

目前问题如下:在程序运行中 加载 IntEnable(INT_I2C0)/ I2CMasterIntEnable(I2C0_MASTER_BASE) 中断初始化后,程序发送一个字节后到while(true== I2CMasterBusy(I2C0_MASTER_BASE));就无法发送数据了。 如果去掉上面的中断初始化,程序可以正常发送数据,但是无法接受数据。

代码如下,请帮忙确认是否有问题。

#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_sysctl.h"
#include "inc/hw_gpio.h"
#include "inc/hw_uart.h"
#include "inc/hw_types.h"
#include "inc/hw_ssi.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "driverlib/uart.h"
#include "driverlib/pin_map.h"
#include "driverlib/ssi.h"
#include "driverlib/i2c.h"
#include "utils/uartstdio.h"
#include "driverlib/ssiflash.h"

unsigned char I2C[255];/*I2C data*/

int main(void)
{
	/**		system clock set		**/ 
	SysCtlClockSet(SYSCTL_SYSDIV_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
                   SYSCTL_XTAL_16MHZ);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C0);
		SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
	
	/*设置引脚功能为I2C*/
	GPIOPinConfigure(GPIO_PB3_I2C0SDA);
	GPIOPinConfigure(GPIO_PB2_I2C0SCL);


	GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_DIR_MODE_HW);
	GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD);

	// Set the pad(s) for push-pull operation.
	GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_3, GPIO_DIR_MODE_HW);

	// Set the pad(s) for open-drain operation with a weak pull-up.
	GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_3, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_OD);

	//GPIOPinTypeI2C(GPIO_PORTB_BASE,GPIO_PIN_2 | GPIO_PIN_3);
	/*I2C初始化:400K快速模式,工作在主模式,开启I2C中断*/

	I2CMasterInitExpClk(I2C_MASTER_BASE, SysCtlClockGet()/4, 0);
	IntEnable(INT_I2C0);
	I2CMasterIntEnable(I2C0_MASTER_BASE);                         
	I2CMasterEnable(I2C0_MASTER_BASE); 


while(1)
{
	I2C[0]=0x00;//0x08
	I2C[1]=0x01;//0X01		
	I2C[2]=0x1d;
	I2C[3]=0x00;
	I2C[4]=0x02;		
	I2C[5]=0x03;
	

	I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,0x68,false);
	//Indicates whether or not the I2C bus is busy, transimitted byte is finished
	I2CMasterDataPut(I2C0_MASTER_BASE,I2C[0]);	
	while(true ==I2CMasterBusBusy(I2C0_MASTER_BASE));
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_START);
	while(true== I2CMasterBusy(I2C0_MASTER_BASE));// fail
	
	I2CMasterDataPut(I2C0_MASTER_BASE,I2C[1]);
	//Indicates whether or not the I2C bus is busy, transimitted byte is finished
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);	
	while(true ==I2CMasterBusy(I2C0_MASTER_BASE));		
		
	I2CMasterDataPut(I2C0_MASTER_BASE,I2C[2]);
	//Indicates whether or not the I2C bus is busy, transimitted byte is finished
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);	
	while(true ==I2CMasterBusy(I2C0_MASTER_BASE));		
	
			
	I2CMasterDataPut(I2C0_MASTER_BASE,I2C[3]);
	//Indicates whether or not the I2C bus is busy, transimitted byte is finished
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);	
	while(true ==I2CMasterBusy(I2C0_MASTER_BASE));	

	I2CMasterDataPut(I2C0_MASTER_BASE,I2C[4]);
	//Indicates whether or not the I2C bus is busy, transimitted byte is finished

	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);	
	while(true ==I2CMasterBusy(I2C0_MASTER_BASE));	
	I2CMasterDataPut(I2C0_MASTER_BASE,I2C[5]);
	//Indicates whether or not the I2C bus is busy, transimitted byte is finished

	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_SEND_FINISH);	
	while(true ==I2CMasterBusy(I2C0_MASTER_BASE));		
	SysCtlDelay(SysCtlClockGet());
			
}

while(1)
{
	I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,0x68,true);	//true--the I2C Master is initiating a RECEIVE from the slave	
	//Indicates whether or not the I2C bus is busy, transimitted byte is finished
	while(true ==I2CMasterBusBusy(I2C0_MASTER_BASE));	
	
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_START);			
	while(true ==I2CMasterBusy(I2C0_MASTER_BASE));	

	I2CtoUart[0] =(unsigned char)I2CMasterDataGet(I2C0_MASTER_BASE);
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_CONT);	

	I2CtoUart[1] =(unsigned char)I2CMasterDataGet(I2C0_MASTER_BASE);
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_CONT);		

	I2CtoUart[2] =(unsigned char)I2CMasterDataGet(I2C0_MASTER_BASE);
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_CONT);	

	I2CtoUart[3] =(unsigned char)I2CMasterDataGet(I2C0_MASTER_BASE);
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_CONT);	

	I2CtoUart[4] =(unsigned char)I2CMasterDataGet(I2C0_MASTER_BASE);
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_CONT);	

	I2CtoUart[5] =(unsigned char)I2CMasterDataGet(I2C0_MASTER_BASE);
	I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_FINISH);	
}
	
}

另外,此款芯片是否支持查询读数据,手册中未提到。

谢谢!