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

查看: 4449|回复: 2

stm32f0编程,一打开ADC时钟,TIM3的中断就不起作用了

[复制链接]

2

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2013-4-7 19:51:21 | 显示全部楼层 |阅读模式
下面是我的程序,请大神们帮忙看看,新手刚刚开始学。。
 /**************************************************************/
/**
  * @brief  Configure the TIM3 IRQ Handler.
  * @param  None
  * @retval None
  */
static __IO uint16_t PrescalerValue_TIM3=48;
void TIM3_Config(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
 
  /* TIM3 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
 
  /* Enable the TIM3 gloabal Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
       
        /* Configuration of TIM3 */
        TIM_InternalClockConfig(TIM3);      //use internal clock
        TIM_TimeBaseInit(TIM3,TIM_TimeBaseInitStruct);  
        TIM_PrescalerConfig(TIM3,PrescalerValue_TIM3,0);
        TIM_CounterModeConfig(TIM3,TIM_CounterMode_Up);
        TIM_SetCounter(TIM3,0);
        TIM_SetAutoreload(TIM3,1000);
        TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
       
}
/**************************************************************/
/**
  * @brief  Configure the ADC.
  * @param  None
  * @retval None
  */
void ADC_Config(void)
{
        ADC_InitTypeDef ADC_InitStructure;
       
        /* ADC1 Periph clock enable */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
       
        /* Configure the ADC1 in continous mode withe a resolutuion equal to 12 bits*/
  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;    
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
  ADC_Init(ADC1, &ADC_InitStructure); 
  
  /* Convert the ADC1 Channel 11 with 239.5 Cycles as sampling time */ 
  ADC_ChannelConfig(ADC1, ADC_Channel_0 , ADC_SampleTime_239_5Cycles); 
        ADC_ChannelConfig(ADC1, ADC_Channel_1 , ADC_SampleTime_239_5Cycles);   
       
        /* ADC Calibration */
  ADC_GetCalibrationFactor(ADC1);
 
  /* Enable the auto delay feature */    
  ADC_WaitModeCmd(ADC1, ENABLE); 
  
  /* Enable the Auto power off mode */
  ADC_AutoPowerOffCmd(ADC1, ENABLE); 
  
  /* Enable ADCperipheral[PerIdx] */
  ADC_Cmd(ADC1, ENABLE);
       
        /* Wait the ADCEN flag */
  while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN)); 
       
        /* ADC1 regular Software Start Conversion */ 
  ADC_StartOfConversion(ADC1);
}
 
/**************************************************************/
/**
  * @brief  Main program
  * @param  None
  * @retval None
  */
static __IO uint16_t ADC1ConvertedValue = 0;
static __IO float ADC1ConvertedVoltage = 0.0;
int main(void)
{
        /* Initialize Leds mounted on STM32F0-discovery */
        STM_EVAL_LEDInit(LED3);
  STM_EVAL_LEDInit(LED4);
        STM_EVAL_PWMInit(PWM1);
        STM_EVAL_ADInit(AD0);
        STM_EVAL_ADInit(AD1);
 
        /* Initialize User_Button on STM32F0-Discovery */
  STM_EVAL_PBInit(BUTTON_USER, BUTTON_MODE_GPIO);
       
        /* TIM Configuration */
        TIM2_Config();
  TIM3_Config();
       
        /* ADC Configuration */
        ADC_Config();
       
        /* Setup SysTick Timer for 1 msec interrupts */
        if(SysTick_Config(SystemCoreClock / 1000))
  { 
    while (1);
  }
       
        /* Infinite loop */
        while(1)
        {
                key_LED3();
               
                //if(sign_instant[5]==1)
                //{
                        //sign_instant[5]=0;
               
                        /* Get ADC1 converted data */
                        //ADC1ConvertedValue = ADC_GetConversionValue(ADC1);
    
                        /* Compute the voltage */
                        //ADC1ConvertedVoltage = (ADC1ConvertedValue*3.3)/0xFFF;
                //}
        }
}       
 
/**************************************************************/

 
 
 
下面是我ADC的GPIO口初始化的程序
#define ADn                                                2
 
#define AD0_PIN                                        GPIO_Pin_0
#define AD0_GPIO_PORT                GPIOA
#define AD0_GPIO_CLK                    RCC_AHBPeriph_GPIOA
 
#define AD1_PIN                                        GPIO_Pin_1
#define AD1_GPIO_PORT                 GPIOA
#define AD1_GPIO_CLK                     RCC_AHBPeriph_GPIOA
 
 
 
GPIO_TypeDef* AD_PORT[ADn] = {AD0_GPIO_PORT, AD1_GPIO_PORT};
const uint16_t AD_PIN[ADn] = {AD0_PIN, AD1_PIN};
const uint32_t AD_CLK[ADn] = {AD0_GPIO_CLK, AD1_GPIO_CLK};
 
 
 


void STM_EVAL_ADInit(AD_TypeDef ad)
{
        GPIO_InitTypeDef GPIO_InitStructure;
 
  /* GPIOA Clocks enable */
  RCC_AHBPeriphClockCmd(AD_CLK[ad], ENABLE);
  
  /* GPIOA Configuration: Channel 1 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = AD_PIN[ad];
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  GPIO_Init(AD_PORT[ad], &GPIO_InitStructure);
}

 
 
 
 
<
回复

使用道具 举报

2

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2013-4-7 19:55:20 | 显示全部楼层

RE:stm32f0编程,一打开ADC时钟,TIM3的中断就不起作用了

我现在就是把
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
这条指令双斜杠了,就TIM3的中断就正常了
回复 支持 反对

使用道具 举报

2

主题

5

回帖

0

蝴蝶豆

新手上路

最后登录
1970-1-1
 楼主| 发表于 2013-4-9 20:07:33 | 显示全部楼层

RE:stm32f0编程,一打开ADC时钟,TIM3的中断就不起作用了

求解答。。。。。。
回复 支持 反对

使用道具 举报

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