实验结果:
注意:电位计的旋钮位置和LED灯的亮度,前后两次发生了变化,即用电位计调节小灯亮度。
附录:主要代码
1、首先,初始化:
- hardware_init();
- //硬件初始化
- OSA_Init();
- //初始化实时系统,主要是时钟
- dbg_uart_init();
- //调试串口初始化,用于串口打印,便于调试程序
2、校正ADC,即电位计
- ADC_DRV_GetAutoCalibrationParam(HW_ADC0, &MyAdcCalibraitionParam);
- ADC_DRV_SetCalibrationParam(HW_ADC0, &MyAdcCalibraitionParam);
- 先获得自动校正参数,主要是使能ADC内部时钟,这里的校正参数可以用结构体自行定义,也可以默认不定义,内部会以ADC最高精度进行校正,再设置初始化ADC,这里设置成了中断模式,一些参数定义如下:
- * .intEnable = true;
- * .lowPowerEnable = true;
- * .clkDividerMode = kAdcClkDividerInputOf8;
- * .resolutionMode = kAdcResolutionBitOf12or13;
- * .clkSrcMode = kAdcClkSrcOfAsynClk;
- * .asyncClkEnable = true;
- * .highSpeedEnable = false;
- * .hwTriggerEnable = false;
- * .dmaEnable = false;
- * .refVoltSrcMode = kAdcRefVoltSrcOfVref;
- * .continuousConvEnable = true;
3、初始化中断模式
- ADC_DRV_StructInitUserConfigForOneTimeTriggerMode(&MyAdcUserConfig);
- MyAdcUserConfig.resolutionMode = kAdcResolutionBitOf12or13;
- ADC_DRV_Init(HW_ADC0, &MyAdcUserConfig, &MyAdcState);
- //这里的电位计是12位的ADC,范围0-4095
4、FTM配置及初始化
- configure_ftm_pins(BOARD_FTM_INSTANCE);
- ftm_user_config_t ftmInfo;
- memset(&ftmInfo, 0, sizeof(ftmInfo));
- FTM_DRV_Init(BOARD_FTM_INSTANCE, &ftmInfo);
5、采集ADC数值
- //Get Voltage value
- adcValue_RV2= getVoltage(0, false, MyAdcUserConfig.resolutionMode);
- getVoltage函数的第一个参数是电位计ADC的通道Number,0是RV2,第二个参数是是否差分,false是不差分,第三个参数是ADC分辨率模式,这里是12位ADC;
|