
本来的硬件平台是STM32F303VC,ADC校准能通过。换成STM32F303CC,校准就不行了,程序用的老的固件库。ADC的校准需要什么条件才能成功。初始化代码如下: ADC_InitTypeDef ADC_InitStructure; ADC_CommonInitTypeDef ADC_CommonInitStructure; /* Configure the ADC clock */ RCC_ADCCLKConfig(RCC_ADC12PLLCLK_Div1); // RCC_AHBPeriphResetCmd(RCC_AHBPeriph_ADC12,ENABLE); /* Enable ADC1 clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ADC12, ENABLE); /* ADC GPIO configuration */ ADC_GPIO_Configuration(); /* ADC DMA Channel configuration */ ADC_DMA_Configuration(); ADC_StructInit(&ADC_InitStructure); /* ADC Calibration procedure */ ADC_VoltageRegulatorCmd(ADC1, ENABLE); ADC_VoltageRegulatorCmd(ADC2, ENABLE); ADC_SelectCalibrationMode(ADC1, ADC_CalibrationMode_Single); ADC_StartCalibration(ADC1); ADC_SelectCalibrationMode(ADC2, ADC_CalibrationMode_Single); ADC_StartCalibration(ADC2); while(ADC_GetCalibrationStatus(ADC1) != RESET ) { calibration_value_1 = ADC_GetCalibrationValue(ADC1); debug_log("ADC1 Calibration Value %d",calibration_value_1); } while(ADC_GetCalibrationStatus(ADC2) != RESET ) { calibration_value_2 = ADC_GetCalibrationValue(ADC2); debug_log("ADC2 Calibration Value %d",calibration_value_2); } // /* ADC Dual mode configuration */ ADC_CommonInitStructure.ADC_Mode = ADC_Mode_RegSimul; ADC_CommonInitStructure.ADC_Clock = ADC_Clock_AsynClkMode; ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_1; ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_Circular; ADC_CommonInitStructure.ADC_TwoSamplingDelay = 1; ADC_CommonInit(ADC1, &ADC_CommonInitStructure); /* */ ADC_InitStructure.ADC_ContinuousConvMode = ADC_ContinuousConvMode_Enable; ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b; ADC_InitStructure.ADC_ExternalTrigConvEvent = ADC_ExternalTrigConvEvent_0; ADC_InitStructure.ADC_ExternalTrigEventEdge = ADC_ExternalTrigEventEdge_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable; ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable; ADC_InitStructure.ADC_NbrOfRegChannel = 16; ADC_Init(ADC1, &ADC_InitStructure); ADC_Init(ADC2, &ADC_InitStructure); ADC_TempSensorCmd(ADC1,ENABLE); ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 1, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 2, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_2, 2, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 3, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_3, 3, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 4, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_4, 4, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 5, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 5, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 6, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_2, 6, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 7, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_3, 7, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 8, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_4, 8, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 9, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 9, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 10, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_2, 10, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 11, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_3, 11, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_4, 12, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_4, 12, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 13, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_1, 13, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 14, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_2, 14, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 15,ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_3, 15, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 16, ADC_SampleTime_61Cycles5); ADC_RegularChannelConfig(ADC2, ADC_Channel_4, 16, ADC_SampleTime_61Cycles5); /* Configures the ADC DMA */ ADC_DMAConfig(ADC1, ADC_DMAMode_Circular); /* Enable the ADC DMA */ ADC_DMACmd(ADC1, ENABLE); /* Enable ADC1 and ADC2 */ ADC_Cmd(ADC1, ENABLE); ADC_Cmd(ADC2, ENABLE); /* wait for ADC1 ADRDY */ while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_RDY)); /* wait for ADC2 ADRDY */ while(!ADC_GetFlagStatus(ADC2, ADC_FLAG_RDY)); /* Enable the DMA channel */ DMA_Cmd(DMA1_Channel1, ENABLE); /* Start ADC1 Software Conversion */ ADC_StartConversion(ADC1); |
hrtim里update reset和reset update同时打开不会互相激励吗,另外为什么现在定时器周期值不用-1了
hrtim 下Single-shot Non-retriggerable模式 reset信号到来时Repetition counter会减少吗,手册没说这一点
F334 hrtim pwm输出没有单独的预装载影子寄存器控制位吗
STM32F373 SDAC1+DMA,数据只能更新一次?
STM32F373的VDDSD电压一直处于2.5v左右,其他电压正常,附上原理图,求指导
stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗
STM32F334如何配置PB1输出HRTIM同步信号
STM32的上电启动过程
STM32中如何实现数据加密
STM32的I2S外设
用CubeMX下载的芯片包里的例程就是固件库的