着急!!程序进不了中断!!求大神指点---STM32输入捕获...

2019-07-15 20:38发布

设置tiM3_CH1为捕获输入模式,在中断中测量捕获信号(方波)的频率,不知哪里出了问题???

/****************************
*
*
*
*
*************************/
#include"tim.h"
#include"misc.h"


/**************************************
*函数名 :void TIM3_NVIC_Config(void)
*描述   :配置TIM3的中断
*输入   :无
*输出   :无
*调用   :内部调用
**************************************/
static void TIM3_NVIC_Config(void)
{
         NVIC_InitTypeDef  NVIC_InitStructure;

         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

         NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;                  
         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

         NVIC_Init(&NVIC_InitStructure);
}




/*************************
*函数名   :TIM3_GPIO_Config()
*描述     :  初始化TIM3及GPIO
*输入     :无
*输出     :无
*调用           :内部调用
*************************/
static void TIM3_GPIO_Config(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
//        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
//        TIM_ICInitTypeDef  TIM_ICInitStructure;

//        TIM_DeInit(TIM3);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; // PA6----TIM3_CH1
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
}

/**************************
*函数名   : TIM3_Mode_Config
* 描述  :配置TIM3为捕获输入模式
* 输入  :无
* 输出  :无
* 调用  :内部调用
****************************/
static void TIM3_Mode_Config(void)
{
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_ICInitTypeDef  TIM_ICInitStructure;

        TIM_DeInit(TIM3);

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);


                //初始化TIM3的相关参数
        TIM_TimeBaseStructure.TIM_Period = 999; //1000个数据
        TIM_TimeBaseStructure.TIM_Prescaler = (36-1); //2M
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

        //初始化TM3输入捕获通道        1   TIM3_CH1
       

        TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
        TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //上升沿捕获
        TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //不分频
        TIM_ICInitStructure.TIM_ICSelection =  TIM_ICSelection_DirectTI;  //
        TIM_ICInitStructure.TIM_ICFilter =         0x00;  //

        TIM_ICInit(TIM3,&TIM_ICInitStructure);
        TIM_CCxCmd(TIM3,TIM_Channel_1,TIM_CCx_Enable);

        TIM3_NVIC_Config();

        TIM_ITConfig(TIM3,TIM_IT_CC1,ENABLE);    //配置TIM3的CC1中断并使能
        TIM_Cmd(TIM3,ENABLE);
         

}


/*
* 函数名:TIM3_IC_Init
* 描述  :TIM3 捕获输入初始化
* 输入  :无
* 输出  :无
* 调用  :外部调用
*/
void TIM3_IC_Init(void)
{
        TIM3_GPIO_Config();
        TIM3_Mode_Config();
}




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。