打印
[其他ST产品]

EXIT 11 触发ADC,程序正常调试无法触发

[复制链接]
398|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
laocuo1142|  楼主 | 2023-3-20 09:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
麻烦帮忙看下这个程序哪里有问题,就是EXIT 11 引脚,我用的是PA11     ADC采集引脚我用的是PA1  

void TIM_event_exit(void)
{

    //PA1浮空输入
    /*----------------------------------------------------------------------*/
    GPIO_InitTypeDef GPIO_Init_Def;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
    GPIO_Init_Def.GPIO_Mode=GPIO_Mode_IN_FLOATING;
    GPIO_Init_Def.GPIO_Pin=GPIO_Pin_11;
    GPIO_Init(GPIOA,&GPIO_Init_Def);

    //打开映射时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    //选择用作 EXTI 线的 GPIO 引脚(EXTICR)EXTICR[3]
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource11);
    //映射到AFIO->MAPR-》ADC1_ETRGREG(ADC1规则转换外部触发与EXTI11相连)
    GPIO_PinRemapConfig(GPIO_Remap_ADC1_ETRGREG, ENABLE);

    //EXTI初始化
    EXTI_InitTypeDef EXTI_InitStructure;
    EXTI_InitStructure.EXTI_Line=EXTI_Line11;
    EXTI_InitStructure.EXTI_LineCmd=ENABLE;
    EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Event;
    EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;
    EXTI_Init(&EXTI_InitStructure);

}



void three_ADC_dma_init_111()
{
    //PA1模拟输入
    /*----------------------------------------------------------------------*/
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );           //使能ADC1通道时钟
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                            //模拟输入引脚
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    //ADC时钟+初始化+其他配置
    /*----------------------------------------------------------------------*/
    ADC_InitTypeDef ADC_InitStruct;
    RCC_APB2PeriphClockCmd (RCC_APB2Periph_ADC1, ENABLE );

    ADC_InitStruct.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStruct.ADC_ScanConvMode = DISABLE;
    ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
    ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO;
    ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStruct.ADC_NbrOfChannel = 1;

    ADC_Init(ADC1, &ADC_InitStruct);


    //外部触发命令使能Trig
    ADC_ExternalTrigConvCmd(ADC1,ENABLE);
    //重新设置时钟
    RCC_ADCCLKConfig(RCC_PCLK2_Div8);
    //设置指定ADC的规则组通道,一个序列,采样时间
    ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_239Cycles5 );        //ADC1,ADC通道,采样时间为239.5周期
    //ADC1中断
    ADC_ITConfig( ADC1,ADC_IT_EOC,ENABLE);

    //NVIC初始化
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;                        //使能按键WK_UP所在的外部中断通道
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x01;        //抢占优先级1,
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;                                        //子优先级3
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                                                //使能外部中断通道
    NVIC_Init(&NVIC_InitStructure);

    //ADC1启用
    ADC_Cmd(ADC1, ENABLE);

    //ADC校准
    /*----------------------------------------------------------------------*/
    //使能复位校准
    ADC_ResetCalibration(ADC1);
    //等待复位校准结束
    while(ADC_GetResetCalibrationStatus(ADC1));
    // ADC开始校准
    ADC_StartCalibration(ADC1);
    // 等待校准完成
    while(ADC_GetCalibrationStatus(ADC1));

}

uint16_t ADC_CurrentValue = 0;
void ADC1_2_IRQHandler(void)
{

    if(ADC_GetITStatus(ADC1,ADC_IT_EOC)!=RESET)
    {

        ADC_CurrentValue = (uint16_t)ADC1->DR;
    }
}



int main (void)
{

    float ADC_RealValue = 0.0;
        led_init();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    delay_init();
        USART_Config();//串口打开、usart_DMA关闭、DMA没开

        three_ADC_dma_init_111();
        TIM_event_exit();
        while(1)
        {
    ADC_RealValue = (float)ADC_CurrentValue/4096*3.3 + 0.005;
    printf("ADC_CurrentValue = %d \r\n", ADC_CurrentValue);  
    printf("ADC_RealValue = %.2f V \r\n", ADC_RealValue);
    delay_ms(1000);
        }

使用特权

评论回复
沙发
两只袜子| | 2023-3-21 09:00 | 只看该作者
有没有进行外部触发呢?只有给了外部触发信号才会AD转换。

使用特权

评论回复
板凳
AloneKaven| | 2023-3-23 23:40 | 只看该作者
是不是没满足触发条件

使用特权

评论回复
地板
chenqianqian| | 2023-3-26 10:37 | 只看该作者
进入debug模式看看是不是没有触发

使用特权

评论回复
5
SantaBunny| | 2023-5-5 23:00 | 只看该作者
可能是没满足触发条件

使用特权

评论回复
6
jiajs| | 2023-5-16 19:03 | 只看该作者
有没有进行外部触发呢?

使用特权

评论回复
7
chenho| | 2023-5-16 19:05 | 只看该作者
只有给了外部触发信号才会AD转换

使用特权

评论回复
8
songqian17| | 2023-5-16 19:08 | 只看该作者
是不是没满足触发条件

使用特权

评论回复
9
jiajs| | 2023-5-16 19:09 | 只看该作者
进入debug模式看看是不是没有触发

使用特权

评论回复
10
dingy| | 2023-5-16 19:15 | 只看该作者
可能是没满足触发条件

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1200

主题

5237

帖子

12

粉丝