上次想用led指示AD转换是否完成但没能成功,这次我想用LCD来指示,程序如下:<br />#include "hw_types.h"<br />#include "hw_memmap.h"<br />#include "hw_gpio.h"<br />#include "hw_ints.h"<br />#include "sysctl.h"<br />#include "I2CINT.H"<br />#include "PCF8576.H"<br />#include "LCD_TH3144.H"<br />#include "hw_adc.h"<br />#include "gpio.h"<br />#include "adc.h"<br />#include "debug.h"<br /><br />#define KEY GPIO_PIN_4<br />void Go2Jtag(void)//防止jtag死锁<br />{<br /> SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);<br /> GPIODirModeSet(GPIO_PORTD_BASE,KEY,GPIO_DIR_MODE_IN);<br /> if(GPIOPinRead(GPIO_PORTD_BASE,KEY)==0)<br /> {<br /> while(1);<br /> }<br />}<br /><br />void delay(unsigned int n) // 软件延迟函数<br />{<br /> volatile int i;<br /> for(;n>0;n--)<br /> {<br /> for(i=0;i<1000;i++);<br /> }<br />}<br /><br />unsigned long ulData;<br /><br /><br />int main(void)<br />{<br /> Go2Jtag();<br /> I2CInit(100000, 1);<br /> SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_6MHZ);<br /> SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); <br /> SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);<br /> ADCSequenceDisable(ADC_BASE,0);<br /> ADCSequenceConfigure(ADC_BASE,0,ADC_TRIGGER_PROCESSOR,0);<br /> ADCSequenceStepConfigure(ADC_BASE,0,0,ADC_CTL_CH0|ADC_CTL_END);<br /> ADCSequenceEnable(ADC_BASE,0);//使能采样序列0<br /> while(1)<br /> {<br /> ADCProcessorTrigger(ADC_BASE,0);//程序触发采样序列<br /> while((HWREG(ADC_BASE+ADC_O_X_SSFSTAT)&0x00000100));<br /> ADCSequenceDataGet(ADC_BASE,0,&ulData);<br /> ulData=(ulData*1000*3)/1024; <br /> if(PCF8576_Ini(MODE_E, NOGLITTER)!=1) // 初始化PCF8576驱动<br /> { while(1); }<br /> Lcd_Seg.D1 = HexToSeg(1); // 延时一段时间<br /> Lcd_Update();<br /> delay(1000);<br /> Lcd_Clean(); // 清屏<br /> delay(1000); // 延时一段时间<br /> }<br />}<br /><br />但是我在调试程序的时候,程序执行到I2CInit(100000, 1)中的IntEnable(INT_I2C),即使能I2C中断的时候,就会触发一个中断,然后陷入死循环,即程序跳转到IntDefaultHandler(void),这是怎么回事?请高手指教。<br /><br /> |
|