工具/软件:Code Composer Studio
我在 CCS 中将 MSP430F5359与 MSP-TS430PZ100C 开发工具搭配使用、并将 ADC12模块与 MSP 驱动程序库搭配使用。
我想 使用 TimerA 每4ms 触发一次 ADC12采样、并在该周期内抓取32个样本。
下面是我到目前为止所取得的成就、并希望获得一些指导来进一步推动这一目标。
#include "driverlib.h" #define ADCpin GPIO_PORT_P6、GPIO_PIN0 //端口6引脚0 //---pilots void setupADC (void); //--globals volatile uint16_t data; //---main void main (void) { //停止看门狗计时器 WDT_A_HOLD (WDT_A_base); // ADC 设置 setupADC(); while (1) { //开始单次转换,无重复或序列。 ADC12_A_startConversion (ADC12_A_base、ADC12_A_MEMORY_0、ADC12_A_SINGLECHANNEL); //等待中断标志生效 while (!(ADC12_A_getInterruptStatus (ADC12_A_base、ADC12IFG0))); //获取值 数据= ADC12_A_getResults (ADC12_A_base、ADC12_A_MEMORY_0); //清除中断标志并启动另一个转换 ADC12_A_clearInterrupt (ADC12_A_base、ADC12IFG0); } } //--setup ADC void setupADC (void) { //设置 ADC 引脚 GPIO_setPeripheralModuleFunctionInputPin (ADCpin); //初始化 ADC12_A 模块 /* ADC12_A 模块的基地址 *使用内部 ADC12_A 位作为采样/保持信号来启动转换 *使用 MODOSC 5MHZ 数字振荡器作为时钟源 *使用默认的时钟分频器1 * ADC12_A_init (ADC12_A_base、 ADC12_A_SAMPLEHOLDSOURCE_SC、 ADC12_A_CLOCKSOURCE_ADC12OSC、 ADC12_A_CLOCKDIVIDER_1); //将采样计时器设置为采样保持32个时钟周期 ADC12_A_setupSamplingTimer (ADC12_A_base、 ADC12_A_CYCLEHOLD_32_CYCLES、 ADC12_A_CYCLEHOLD_32_CYCLES、 ADC12_A_MULTIPLESAMPLESDISABLE); //使用指定的基准电压配置存储器缓冲器 /* ADC12_A 模块的基地址 *配置内存缓冲区0 *将输入 A12映射到存储器缓冲器0 * VREF+= AVCC (内部) * Vref-= AVSS *内存缓冲区0不是序列的末尾 * ADC12_A_configureMemoryParam param ={0}; param.memoryBufferControlIndex = ADC12_a_memory_0; param.inputSourceSelect = ADC12_A_INPUT_A0; param.positiveRefVoltageSourceSelect = ADC12_A_VREFPOS_AVCC; param.inveRefVoltageSourceSelect = ADC12_A_VREFNEG_AVSS; param.endOfSequence = ADC12_A_NOTENDOSEQUENCE; ADC12_A_configureMemory (ADC12_A_base、¶m); //打开 ADC12 ADC12_A_ENABLE (ADC12_A_base); //启用存储器缓冲器0中断 ADC12_A_enableInterrupt (ADC12_A_base、ADC12IE0); }