本帖最后由 ddllxxrr 于 2015-2-25 09:58 编辑
这个例程我觉得挺有用,毕竟不用其它的温度传感器就可搞定温度打开例程很方便,插上开发板点例程就可:
那么,这个温度传感器在内部ADC的第几道呢?
可以右键击 ADC_TEMPERATURE_SENSOR
到定义它的地方:
/** Definitions for ADC channel number */
enum adc_channel_num {
ADC_CHANNEL_0 = 0,
ADC_CHANNEL_1,
ADC_CHANNEL_2,
ADC_CHANNEL_3,
ADC_CHANNEL_4,
ADC_CHANNEL_5,
ADC_CHANNEL_6,
ADC_CHANNEL_7,
#if (SAM4N)
ADC_CHANNEL_8,
ADC_CHANNEL_9,
ADC_CHANNEL_10,
ADC_CHANNEL_11,
ADC_CHANNEL_12,
ADC_CHANNEL_13,
ADC_CHANNEL_14,
ADC_CHANNEL_15,
#endif
#ifdef TEMP_SENSOR
ADC_TEMPERATURE_SENSOR,
#endif
ADC_CHANNEL_ALL = 0xFFFF
};
可见它是第16道,定义ADC如下:
struct adc_config adc_cfg;
adc_get_config_defaults(&adc_cfg);
adc_init(ADC, &adc_cfg);
adc_channel_enable(ADC,ADC_TEMPERATURE_SENSOR);
adc_set_trigger(ADC, ADC_TRIG_SW);
struct adc_temp_sensor_config adc_temp_sensor_cfg;
adc_temp_sensor_get_config_defaults(&adc_temp_sensor_cfg);
adc_temp_sensor_set_config(ADC, &adc_temp_sensor_cfg);
adc_set_callback(ADC, ADC_INTERRUPT_EOC_16,
adc_temp_sensor_end_conversion, 1);
adc_start_software_conversion(ADC);
以后便是循环地显示ADC的温度值,运行结果如下:
|