|
我用的是周立功的lm3s8962的开发板. 我使用了两个定时器0和1,定时器0 4秒一次触发ADC,定时器1 1秒一次触发中断(中断程序是空的),程序如下: void TIMER0_Init(void) { SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER0 ); /* 使能定时器0外设 */ GPIOPinTypeTimer(TIMER0_BASE, TIMER_A);
TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER); /* 设置定时器0为周期触发模式 */ TimerLoadSet(TIMER0_BASE, TIMER_A, 4*SysCtlClockGet() ); /* 设置定时器装载值:定时4秒 */ TimerControlTrigger(TIMER0_BASE, TIMER_A, true); /* 使能触发ADC */ TimerEnable(TIMER0_BASE, TIMER_A); /* 使能定时器0 */ }
/********************************************************************************************************* *********************************************************************************************************/ void TIMER1_Init(void) { SysCtlPeripheralEnable( SYSCTL_PERIPH_TIMER1 ); /* 使能定时器1外设 */ GPIOPinTypeTimer(TIMER1_BASE, TIMER_A);
TimerConfigure(TIMER1_BASE, TIMER_CFG_32_BIT_PER); /* 设置定时器1为周期触发模式 */ TimerLoadSet(TIMER1_BASE, TIMER_A, 1*SysCtlClockGet() ); /* 设置定时器装载值:定时1秒 */ TimerIntEnable(TIMER1_BASE, TIMER_TIMA_TIMEOUT); /* 设置定时器为溢出中断 */ IntEnable(INT_TIMER1A); /* 使能定时器1外设 */ TimerEnable(TIMER1_BASE, TIMER_A); /* 使能定时器1 */
ADC的初始化程序如下: void ADC_Init(void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); /* 使能ADC模块的时钟 */ SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); /* 125KSps采样率 */
ADCSequenceDisable(ADC_BASE, 0); /* 禁止所有采样序列 */ TIMER0_Init(); TIMER1_Init(); IntEnable(INT_ADC0); /* 使能AD中断 */ ADCIntEnable(ADC_BASE, 0); /* 使能AD中断模块 */ ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_TIMER, 0); ADCSequenceStepConfigure(ADC_BASE, 0, 0, ADC_CTL_CH0 ); ADCSequenceStepConfigure(ADC_BASE, 0, 1, ADC_CTL_CH1 ); ADCSequenceStepConfigure(ADC_BASE, 0, 2, ADC_CTL_TS | ADC_CTL_IE|ADC_CTL_END); ADCSequenceEnable(ADC_BASE, 0); /* 使能采样序列0 */
我使用了两个定时器,但只有0触发ADC,可程序运行结果是1秒采样一次(应该是4秒一次).如果我只初始化定时器0,那么是4秒采样一次,这是为什么呢? 难道只要使用了定时器触发ADC,其他定时器就不能用了?或者会产生干扰?
[ 本帖最后由 zhengqieqie 于 2011-8-16 13:52 编辑 ]
|
|