本帖最后由 小s是白痴 于 2016-6-27 11:29 编辑 //使用debug模式观看 // Channel_5 及channel_17的数据可以读的到 // Channel_16 温度sensor 读不到 //请问各位先进,小弟有哪个地方设错了 //附上完整档案 /**********************************************************/ //refer AN3964 page3,page6 #define VREFINT_CAL_Adr 0x1FF80078 #define TS_CAL1_Adr 0x1FF8007A #define TS_CAL2_Adr 0x1FF8007C //***************************************************************************** //* Private variables */ //***************************************************************************** float g_ftTemperature; float g_ftADCBUF5; float g_ftADCBUF16; float g_ftADCBUF17; float g_ftVDDa; float g_ftVREFINT_CAL; float g_ftTS_CAL1; float g_ftTS_CAL2; unsigned int g_uiADC_CH_Value[20]; /**********************************************************/ int main(void) { uint32_t *pttmpreg ; float fCalCulBuf1; //----------------------------------------------------------------------------- //Peripheral clock configuration //----------------------------------------------------------------------------- /* GPIOD Periph clock enable */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM10, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //***************************************************/ // ADC1 Configuration //***************************************************/ ADC_InitTypeDef ADC_InitStructure; RCC_HSICmd(ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); ADC_DeInit(ADC1); ADC_TempSensorVrefintCmd(ENABLE); //Enable Cannel_16 (Temperature Sensor) ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; // Disable the scan conversion so we do one at a time // ADC_InitStructure.ADC_ScanConvMode = DISABLE; // Don't do contimuous conversions - do them on demand // ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; // Start conversin by software, not an external trigger // ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None; // Initialize the ADC_ExternalTrigConv member // // ADC_InitStructure->ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2; // Conversions are 12 bit - put them in the lower 12 bits of the result // ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // Say how many channels would be used by the sequencer // ADC_InitStructure.ADC_NbrOfConversion = 1; // Now do the setup // ADC_Init(ADC1, &ADC_InitStructure); // Enable ADC1 // ADC_Cmd(ADC1, ENABLE); //**************************************************/ pttmpreg = (uint32_t *) VREFINT_CAL_Adr; g_ftVREFINT_CAL = (*pttmpreg)&0xFFFF; pttmpreg = (uint32_t *) TS_CAL1_Adr; g_ftTS_CAL1 = (*pttmpreg)&0xFFFF; pttmpreg = (uint32_t *) TS_CAL2_Adr; g_ftTS_CAL2 = (*pttmpreg)>>16; //***************************************************/ //* MAIN LOOP */ //***************************************************/ while (1) { // ADC_Channel_16 ADC_RegularChannelConfig(ADC1, ADC_Channel_16 , 1, ADC_SampleTime_384Cycles); ADC_SoftwareStartConv(ADC1); ADC_ClearFlag(ADC1, ADC_FLAG_EOC); while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==0); g_uiADC_CH_Value[16] = ADC_GetConversionValue(ADC1); g_ftTemperature =((110-30)/(g_ftTS_CAL2-g_ftTS_CAL1)) * (g_uiADC_CH_Value[16] - g_ftTS_CAL1) + 30; // ADC_Channel_17 ADC_RegularChannelConfig(ADC1, ADC_Channel_17 , 1, ADC_SampleTime_384Cycles); ADC_SoftwareStartConv(ADC1); ADC_ClearFlag(ADC1, ADC_FLAG_EOC); while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==0); g_uiADC_CH_Value[17] = ADC_GetConversionValue(ADC1); fCalCulBuf1 = g_uiADC_CH_Value[17]; g_ftVDDa = 3 * g_ftVREFINT_CAL / fCalCulBuf1 ; // ADC_Channel_5 ADC_RegularChannelConfig(ADC1, ADC_Channel_5 , 1, ADC_SampleTime_384Cycles); ADC_SoftwareStartConv(ADC1); ADC_ClearFlag(ADC1, ADC_FLAG_EOC); while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==0); g_uiADC_CH_Value[5] = ADC_GetConversionValue(ADC1); g_ftADCBUF5 = g_uiADC_CH_Value[5]* (g_ftVDDa/4095); } } |
ADC_Temperature_TEST2.rar
下载2.31 MB, 下载次数: 14, 下载积分: ST金币 -1
ADC_temperature
STM32L151RDT6 SDIO读写SD卡 FIFO下溢错误,不知是什么原因
STM32L152 RTC唤醒STOP mode问题
STM32L152系列自带LCD驱动段码液晶屏,怎么驱动想要亮的段亮
STM32L151为何FLASH擦除后全是是0x00?
求助!!STM32L151中的RTC唤醒(wake up)中断问题
STM32L152普通I/O模拟SPI驱动W25Q16问题
STM32L152开发板原理图及说明文档
STM32L1系列,如何释放PA15为普通GPIO端口
STM32L151读取W25Q16的ID错误,请帮忙看看是什么原因
STM32L151 STOP模式唤醒程序跑哪儿了
这句只应该在初始化中运行一次即可,你在循环中反复运行可能打乱了ADC采样。
评分
查看全部评分
wenyangzeng大大感谢你的回复
我有依照你的建议
在初始化中只运行一次
还是没有办法读到数据
花渡.青花瓷大大感谢你的回复
可是 channel_5 及 channel_17
是可以读取数据的
如果是初始化出问题
这2个channel应该也会读不到
但是就只有channel_16读不到