我配置 MCPWM_T0触发一段采样,触发频率10k ,ADC 1段采样完成中断使能。但实际测出来进出中断的频率是625K 。
ADC_InitStructure.IE = ADC_SF1_IE;//|ADC_SF2_IE; /* 中断使能 */
ADC_InitStructure.RE = 0; /* DMA请求使能 */
ADC_InitStructure.NSMP = DISABLE; /* 两段采样使能 */
ADC_InitStructure.DATA_ALIGN = DISABLE; /* DAT右对齐使能 */
ADC_InitStructure.CSMP = DISABLE; /* 连续采样使能 */
ADC_InitStructure.TCNT = 0; /* 触发一次采样所需的事件数 */
ADC_InitStructure.TROVS = DISABLE; /* 手动触发过采样使能,开启后一次采样需要多次触发 */
ADC_InitStructure.OVSR = 0; /* 过采样率 */
ADC_InitStructure.TRIG = ADC_TRIG_MCPWM0_T0;//|ADC_TRIG_MCPWM0_T1; /* 触发信号,一个触发信号对应一段采样 */
ADC_InitStructure.S1 = 6; /* T0触发,第一段常规采样次数 */
ADC_InitStructure.S2 = 1; /* T1触发,第二段常规采样次数 */
ADC_InitStructure.IS1 = 1; /* 空闲采样次数 */
ADC_InitStructure.GAIN = 0; /* 低增益(7.2V量程)使能 */
ADC_InitStructure.LTH = 0; /* ADC 模拟看门狗 0 下阈值 */
ADC_InitStructure.HTH = 0; /* ADC 模拟看门狗 0 上阈值 */
ADC_InitStructure.GEN = 0; /* ADC 模拟看门狗 0 对应使能位 */
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Init(ADC0, &ADC_InitStructure);
void ADC0_IRQHandler(void)
{
test_val1 = 0;
GPIO_SetBits (GPIO0 ,GPIO_Pin_3);
if(ADC_GetIRQFlag(ADC0,ADC_SF1_IF))
{
test_val1++;
}
else
{
ADC_ClearIRQFlag(ADC0,ADC_ALL_IF);
}
GPIO_ResetBits (GPIO0 ,GPIO_Pin_3);
}
|