你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

103的ADC配置,请大家帮我看看问题在哪里

[复制链接]
scfor123456 提问时间:2020-12-30 11:17 /
需求是这样的:adc0~3通道由TIM1_TRGO触发 注入采样,adc4通道由SWSTART触发 规则采样,注入采样4路AD完成后进入ADC中断,规则采样在需要的时候开启并读取。

void adc_init(void)
{
   ADC_InitTypeDef ADC_InitStructure;
       
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);//60M/6 = 10M
//-------------------------------------       
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = ENABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //非连续转换
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//SWSTART
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);

    ADC_RegularChannelConfig(ADC1,ADC_Channel_4,1,ADC_SampleTime_7Cycles5);//通道一转换结果
//-------------------------------------           
        /* Set injected sequencer length */
        ADC_InjectedSequencerLengthConfig(ADC1, 4);
       
        /* ADC1 injected channel Configuration */
        ADC_InjectedChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_7Cycles5);
        ADC_InjectedChannelConfig(ADC1, ADC_Channel_1, 2, ADC_SampleTime_7Cycles5);
        ADC_InjectedChannelConfig(ADC1, ADC_Channel_2, 3, ADC_SampleTime_7Cycles5);
        ADC_InjectedChannelConfig(ADC1, ADC_Channel_3, 4, ADC_SampleTime_7Cycles5);       
       
        /* ADC1 injected external trigger configuration */
        ADC_ExternalTrigInjectedConvConfig(ADC1, ADC_ExternalTrigInjecConv_T1_TRGO);

        /* DISable automatic injected conversion start after regular one */
        ADC_AutoInjectedConvCmd(ADC1, DISABLE);
       
        /* Enable ADC1 external trigger */
        ADC_ExternalTrigConvCmd(ADC1, ENABLE);
        ADC_ExternalTrigInjectedConvCmd(ADC1, ENABLE);
       
        ADC1->CR1 |= 0x80;                //Interrupt enable for injected channels
//-------------------------------------          
    ADC_Cmd(ADC1, ENABLE);

    ADC_ResetCalibration(ADC1);
    while(ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1));       
}

收藏 评论4 发布时间:2020-12-30 11:17

举报

4个回答
scfor123456 回答时间:2020-12-31 11:04:02
没人?
scfor123456 回答时间:2021-1-12 12:03:17
butterflyspring 回答时间:2021-1-14 17:21:57
看起来缺少注入ADC的启动函数 ,试试看
void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
scfor123456 回答时间:2021-1-16 18:52:18
butterflyspring 发表于 2021-1-14 17:21
看起来缺少注入ADC的启动函数 ,试试看
void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, Func ...

好的,感谢

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版