我的stm32f103c8t6的adc设置是单次单通道转换,软件触发。但是软件触发命令后,adc根本没有开始转换。SR寄存器中的STAT标志位一直没有置位。 什么原因?
你先试试采集内部温度传感器和参考电压通道,通道16、17。
评分
查看全部评分
评分
查看全部评分
都设置了
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2,ENABLE);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
RCC_ADCCLKConfig(RCC_PCLK2_Div6);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC2, &ADC_InitStructure);
ADC_RegularChannelConfig(ADC2,ADC_Channel_4,1,ADC_SampleTime_55Cycles5);
ADC_Cmd(ADC2,ENABLE);
ADC_ResetCalibration(ADC2);
while(ADC_GetResetCalibrationStatus(ADC2));
ADC_StartCalibration(ADC2);
while (ADC_GetCalibrationStatus(ADC2));
点评
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
if(ADC_GetFlagStatus(ADC1, ADC_FLAG_STRT))
LED_ON();
sdDataBuf[0] = ADC_GetConversionValue(ADC1);
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
//while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
wdDataBuf[0] = ADC_GetConversionValue(ADC1);
这个是main函数中的代码,那个led灯一直不亮。两个数组中的数据都是0,如果增加while那一句,那么就死在那里了。
评分
查看全部评分
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
这些都不是自动转换的啊,
评分
查看全部评分
OneWire_DS18b20温度传感器https://pan.baidu.com/s/1MR3zDKaRtSVWqksLoYhIIw
OneWire_DHT11温湿度传感器https://pan.baidu.com/s/1i_kxUCRP58s--Fb9ucuHPw
ADC实验https://pan.baidu.com/s/1DJQSBQ_-TwySt4xj0Xq1hw
可以看看,比对比对
评分
查看全部评分