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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版