野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10655|回复: 1

外部EXTI触发ADC的问题

[复制链接]
发表于 2017-5-10 15:40:13 | 显示全部楼层 |阅读模式
本人想利用外部EXTI来启动ADC转换,主要是对一个输入引脚进行边沿检测,然后检测到上升沿就启动ADC转换,现在已经将EXTI和ADC都配置完了,但是下载程序后没有反应,不知道有没有做过的朋友可以指点一二。。。。。。配置部分程序如下:

static void ADCx_GPIO_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA , ENABLE );
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_0 ;    // 配置 ADC IO 引脚模式
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
       
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 ;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init( GPIOA, &GPIO_InitStructure);                               
}

static void ADCx_Mode_Config(void)
{
        ADC_InitTypeDef ADC_InitStructure;       
        // 打开ADC时钟
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_ADC1, ENABLE );       
        // ADC 模式配置
        // 只使用一个ADC,属于单模式
        ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
        // 禁止扫描模式,多通道才要,单通道不需要
        ADC_InitStructure.ADC_ScanConvMode = DISABLE ;
        // 禁止连续转换模式
        ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
        ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_Ext_IT11_TIM8_TRGO;
        // 转换结果右对齐
        ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;       
        // 转换通道1个
        ADC_InitStructure.ADC_NbrOfChannel = 1;                       
        // 初始化ADC
        ADC_Init(ADC1, &ADC_InitStructure);
        // 配置ADC时钟N狿CLK2的8分频,即9MHz
        RCC_ADCCLKConfig(RCC_PCLK2_Div8);
        // 配置 ADC 通道转换顺序为1,第一个转换,采样时间为55.5个时钟周期
        ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_55Cycles5);
        // ADC 转换结束产生中断,在中断服务程序中读取转换值
        ADC_ITConfig(ADC1, ADC_IT_EOC, ENABLE);   
        // 开启ADC
        ADC_Cmd(ADC1, ENABLE);       
        // 初始化ADC 校准寄存器  
        ADC_ResetCalibration(ADC1);   
        // 等待校准寄存器初始化完成
        while(ADC_GetResetCalibrationStatus(ADC1));
        // ADC开始校准
        ADC_StartCalibration(ADC1);
    // 等待校准完成
        while(ADC_GetCalibrationStatus(ADC1));  
    //设置外部触发模式使能
    ADC_ExternalTrigConvCmd(ADC1, ENABLE);
        // 由于没有采用外部触发,所以使用软件触发ADC转换
        //ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}

void ADC_NVIC_Config(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  // 配置中断优先级
  NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =1;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}


void ADCx_Init(void)
{
        ADCx_GPIO_Config();
        ADCx_Mode_Config();
        ADC_NVIC_Config();
}

void EXTIX_Init(void)
{
   GPIO_InitTypeDef GPIO_InitStructure;
   EXTI_InitTypeDef EXTI_InitStructure;

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO , ENABLE);

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;      
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;         // 下拉输入
   GPIO_Init(GPIOA, &GPIO_InitStructure);

   NVIC_Configuration();

  GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,  GPIO_PinSource0);

  EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Event;
  EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising; //上升沿中断
  EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  EXTI_Init(&EXTI_InitStructure);  
}

static void NVIC_Configuration(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;

  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

  /* 配置中断源 */
  NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x03;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}


希望大神们可以帮忙看看
回复

使用道具 举报

发表于 2017-5-10 16:03:56 | 显示全部楼层
先调试看看能不能进exti的中断
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-20 17:49 , Processed in 0.064437 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表