|
本帖最后由 小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
STM32L151 stop模式 rtc 闹钟唤醒不稳定
STM32L151RDT6 SDIO读写SD卡 FIFO下溢错误,不知是什么原因
STM32L152 RTC唤醒STOP mode问题
STM32L151为何FLASH擦除后全是是0x00?
求助!!STM32L151中的RTC唤醒(wake up)中断问题
STM32L152开发板原理图及说明文档
STM32L1系列,如何释放PA15为普通GPIO端口
STM32L151读取W25Q16的ID错误,请帮忙看看是什么原因
STM32L151 STOP模式唤醒程序跑哪儿了
请问有人可以STM32L152驱动LCD段码屏例程吗?
微信公众号
手机版
这句只应该在初始化中运行一次即可,你在循环中反复运行可能打乱了ADC采样。
评分
查看全部评分
wenyangzeng大大感谢你的回复
我有依照你的建议
在初始化中只运行一次
还是没有办法读到数据
花渡.青花瓷大大感谢你的回复
可是 channel_5 及 channel_17
是可以读取数据的
如果是初始化出问题
这2个channel应该也会读不到
但是就只有channel_16读不到