你(们)好
我想使用 Tiva TM4C123G launchpad 的 ADC 模块制作一个简单的程序。 其思路是将计时器配置为在特定时间段内中断(我希望以350kHz 的频率运行计时器)、并触发转换。 我已经制作了代码、但 ADC 配置肯定有问题。 这不n´t 我进行多个转换。
欢迎提出任何建议
代码如下:
#include
#include
#include "inc/tm4c123ghp6.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/timer.tidr.h";include
"integr.idr.idr"t.idr.idr.idr.idr.idr"
(intr.h)#include "int1 intru.int_inu.h)
uint32_t ui32Period;
SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_1_GPIO_PIN_2|GPIO_PIN_3);
SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);
TimerConfigure (Timer1_base、timer_CFG_PERIODICRACRACASE);
ui32Period =(SysCtlClockGet ()/350000)/2;
TimerLoadSet (Timer1_base、timer_A、ui32Period -1);
TimerControlTrigger (Timer1_base、timer_A、true);
//**** ADC 配置******** //
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_3);
//选择序列发生器3 (FIFO 深度1)
ADCSequenceDisable (ADC0_BASE、3);
ADCSequenceConfigure (ADC0_BASE、3、ADC_TRIGGER_TIMER、0);
//仅一步配置:
ADCSequenceStepConfigure (ADC0_BASE、3、0、ADC_CTL_CH0 | ADC_CTL_IE | ADC_CTL_END);
ADCSequenceEnable (ADC0_BASE、3);
//ADCIntClear (ADC0_BASE、3);
//中断使能
IntEnable (INT_TIMER1A);
TimerIntEnable (Timer1_base、timer_TINA_TIMEOUT);
IntMasterEnable();
ADCIntEnable (ADC0_BASE、3);
IntEnable (INT_ADC0SS3);
TimerEnable (Timer1_base、timer_A);
while (1)
{
}
}
空 Timer1IntHandler (空)
{
//清除计时器中断
TimerIntClear (Timer1_base、timer_TINA_TIMEOUT);
ADCIntClear (ADC0_BASE、3);
ADCSequenceDataGet (ADC0_BASE、3、muestra);
}