工具/软件:Code Composer Studio
我正在使用 Tiva C TM4C1294 Connected Launchpad 从 传感器读取 ADC 数据。 我正在 使用计时器中断对 ADC 进行采样。 我的代码如下所示。 在此程序中、 我希望阵列 READ_DATA 的索引在填充完整个数据后变为0、ADC 应持续 向阵列填充新数据 、但如果(i==99)条件不执行并且 READ_DATA 阵列不会持续更新、而是在之后保持不变 前100个填充。 如果有人 能告诉我哪里出错了、请告知我。
#include #include #include #include "inc/hw_ints.h" #include "inc/hw_memmap.h" #include "driverlib/interrupt.h" #include "driverlib/adc.h" #include "driverlib/gpio.h" #include "driverlib/pin_map.h" #include "driverlib/sysctl.h" uint32_t pui32ADC0Value[1]; uint32_t read_data[100]; uint16_t I = 0 int main (void) { uint32_t ui32SysClock; ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000); SysCtlPeripheralEnable (SYSCTL_Periph_TIMER0); SysCtlPeripheralEnable (SYSCTL_Periph_ADC0); SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE); GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_3); ADCSequenceConfigure (ADC0_BASE、3、ADC_TRIGGER_PROCESSOR、0); TimerConfigure (TIMER0_BASE、TIMER_CFG_SPLIT_PAIR | TIMER_CFG_B_PERIODICASE); ADCSequenceStepConfigure (ADC0_BASE、3、0、ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END); TimerLoadSet (TIMER0_BASE、TIMER_B、ui32SysClock / 1000); IntMasterEnable(); TimerIntEnable (TIMER0_BASE、TIMER_TIMB_TIMEOUT); IntEnable (INT_TIMER0B); ADCSequenceEnable (ADC0_BASE、3); ADCIntClear (ADC0_BASE、3); TimerEnable (TIMER0_BASE、TIMER_B); while (1) { if (i=99){ I=0; } } void Timer0BIntHandler (void) { TimerIntClear (TIMER0_BASE、TIMER_TIMB_TIMEOUT); ADCProcessorTrigger (ADC0_BASE、3); while (!ADCIntStatus (ADC0_BASE、 3、false) { } ADCIntClear (ADC0_BASE、3); ADCSequenceDataGet (ADC0_BASE、3、pui32ADC0Value); read_data[i]=pui32ADC0Value[0]; i++; }