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

查看: 5193|回复: 2

stm32 adc中断问题

[复制链接]

6

主题

12

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-5-20 11:11:09 | 显示全部楼层 |阅读模式
 
用定时器3的TRGO触发ADC转换,利用ADC中断计算,配置如下,但是ADC中断进入不了。不知道什么原因,哪位给指导一下呗!谢谢。
void Init_TIMER3(void)
{
 TIM_TimeBaseInitTypeDef  TIM_BaseInitStructure;   //定义一个定时器结构体变量
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    //使能定时器3,重要!!
 TIM_DeInit( TIM3);                                //将IM3定时器初始化位复位值
    TIM_BaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
    TIM_BaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_BaseInitStructure.TIM_Period = 1;
    TIM_BaseInitStructure.TIM_Prescaler = 7199;
    TIM_TimeBaseInit(TIM3,&TIM_BaseInitStructure);
               
    TIM_SelectOutputTrigger(TIM3,TIM_TRGOSource_Update); //选择TRGO触发源为计时器更新时间
       
    TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);    
    TIM_Cmd(TIM3,ENABLE);
}
void NVIC_Configuration(void)

    NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn;   // NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;   
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;      //响应优先级0
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;         //允许中断
 NVIC_Init(&NVIC_InitStructure);                         //根据指定参数初始化中断寄存器  
}
void ADC1_Configuration(void)
{
 
/* ADC1 configuration ------------------------------------------------------*/
    ADC_InitTypeDef ADC_InitStructure;
    ADC_DeInit(ADC1);
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_NbrOfChannel = M;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
    ADC_InitStructure.ADC_ScanConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;
    ADC_InitStructure.ADC_DataAlign =ADC_DataAlign_Right;
    ADC_Init(ADC1,&ADC_InitStructure);
 ADC_ExternalTrigConvCmd(ADC1,ENABLE);
 ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);
}
void ADC1_2_IRQnHandler(void) 
{
   while (ADC_GetITStatus(ADC1,ADC_IT_EOC)==RESET)
   {
      ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);    // ADC_GetConversionValue(ADC1);
      if(Status)
  {
   TEST1=1;
   TEST2=1;
   Status=0;
  }
  else
  {
   TEST1=0;
   TEST2=0;
   Status=1;
  }

    }
}
 
 
回复

使用道具 举报

134

主题

4489

回帖

239

蝴蝶豆

版主

最后登录
2020-12-9
发表于 2013-5-20 11:38:02 | 显示全部楼层

RE:stm32 adc中断问题

ADC模块的时钟开启了吗?
回复 支持 反对

使用道具 举报

6

主题

12

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2013-5-20 12:02:29 | 显示全部楼层

回复:stm32 adc中断问题

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA
                           |RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC
                           |RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE
         |RCC_APB2Periph_ADC1  | RCC_APB2Periph_AFIO
                           |RCC_APB2Periph_SPI1  | RCC_APB2Periph_USART1, ENABLE );
ADC能工作,但是不能进入中断呀。哪不对呢?
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版