STM32F446RCT6 外部时钟计数中断

2019-07-20 08:29发布

今天搞了一天到黑弄STM32F446的外部时钟计数没找到问题,不能计数,不能进入计数中断,用的是定时器T2的通道2,下面我把我代码发在上面请各位大师傅帮我看看问题出在哪里。
/*******************************************
oˉêyÃû3Æ£oTIM2_Int_Init
1|    Äü£o3õê¼»ˉ¶¨ê±Æ÷2£¬1ضϼÆêyÆ÷
2Π   êy£oÎT
·μ»ØÖμ  £oÎT
********************************************/
void TIM2_Int_Init(void)
{
        RCC->APB1ENR|=1<<0;           //TIM2ê±&#214;óê1&#196;ü   
  RCC->AHB1ENR|=1<<0;           //ê1&#196;üPORTAê±&#214;ó          
        GPIO_Set(GPIOA,PIN1,2,0,0,GPIO_PUPD_PU);//PA4,ê&#228;è&#235;&#196;£ê&#189;£&#172;é&#207;à-
        GPIO_AF_Set(GPIOA,PIN1,0X01);
       
        TIM2->ARR=10;               //éè&#182;¨&#188;&#198;êy&#198;÷×&#212;&#182;ˉ&#214;&#216;×°&#214;μ
        TIM2->PSC=0;                //&#212;¤·&#214;&#198;μ&#198;÷       
        TIM2->CCMR1|=0<<12;    //0000&#194;&#203;2¨
        TIM2->CCMR1|=1<<8;     //IC2á&#172;&#189;óμ&#189;TI2é&#207;
        TIM2->CCER|=0<<5;      //é&#207;éy&#209;&#216;′¥·¢
        //TIM2->CCER|=0<<7;      //é&#207;éy&#209;&#216;′¥·¢       
        TIM2->SMCR|=0x06<<4;   //TS=110,TI2&#206;aê&#228;è&#235;&#212;′
        TIM2->SMCR|=0x07;      //SMS=111,&#209;&#161;&#212;&#241;′¥·¢D&#197;o&#197;TRGI&#182;&#212;ó|CH2  
        TIM2->CR1&=~(1<<4);    //&#188;&#198;êy&#198;÷μY&#212;&#246;&#188;&#198;êy
        TIM2->CR1|=0x01;        //ê1&#196;ü&#182;¨ê±&#198;÷2
        TIM2->DIER|=1<<0;          //&#212;êDí&#184;üD&#194;&#214;D&#182;&#207;         
  MY_NVIC_Init(1,2,TIM2_IRQn,3);        //&#199;à&#213;&#188;1£&#172;×óó&#197;&#207;è&#188;&#182;3£&#172;×é2        */
}


int main(void)
{
        u16 test;
  System_Init();
       
        //MOTO_PWM_VAL=10000;
        while(1)
        {
                TIM2->CR1&=0xfe;        //ê1&#196;ü&#182;¨ê±&#198;÷2
                //ADC_ValueFilter();
                //DisWordNum(0xfa,ViValue);
                test=TIM2->CNT;
       
                TIM2->CR1|=0x01;        //ê1&#196;ü&#182;¨ê±&#198;÷2
                DisWordNum(0xfa,ViValue);
        }
}



/*******************************************
oˉêy&#195;&#251;3&#198;£oSystem_Init
1|    &#196;ü£o&#207;μí33&#245;ê&#188;&#187;ˉéè&#214;&#195;
2&#206;    êy£o&#206;T
·μ&#187;&#216;&#214;μ  £o&#206;T
********************************************/
void System_Init(void)
{
          Stm32_Clock_Init(300,8,2,7);//éè&#214;&#195;ê±&#214;ó,168Mhz
          //delay_init(150);        //3&#245;ê&#188;&#187;ˉ&#209;óê±oˉêy
                LED_Init();                             //3&#245;ê&#188;&#187;ˉó&#235;LEDá&#172;&#189;óμ&#196;ó2&#188;t&#189;ó&#191;ú
         // TIM1_PWM_Init(16000,3-1); //168M/3=56Mμ&#196;&#188;&#198;êy&#198;μ&#194;ê£&#172;×&#212;&#182;ˉ&#214;&#216;×°&#212;&#216;&#206;a16000£&#172;&#196;&#199;&#195;′PWM&#198;μ&#194;ê&#206;a56M/16000=3.5kHZ
    uart_init(75,9600);
          //Dac1_Init();       
    //EXTIX_Init();                 //3&#245;ê&#188;&#187;ˉía2&#191;&#214;D&#182;&#207;ê&#228;è&#235;
         // ADC1_Init();
          //MYDMA_Config(DMA2_Stream0,0,(u32)&ADC1->DR,(u32)&AD_Value,ADC_N*ADC_M);
                //CAN_Mode_Init(1,5,9,5,0);//CAN3&#245;ê&#188;&#187;ˉ2¨ì&#216;&#194;ê500Kbps,&#198;&#213;í¨&#196;£ê&#189;
                //TIM4_Int_Init(100-1,750-1);//100Khzμ&#196;&#188;&#198;êy&#198;μ&#194;ê£&#172;&#188;&#198;êyμ&#189;100&#206;a1MS,ó&#195;óúPID2é&#209;ù
        //Run_Init();
                //KEY_Init();
                //TIM3_Int_Init();             //1&#216;&#182;&#207;&#188;&#198;êy&#198;÷3&#245;ê&#188;&#187;ˉ£&#172;1024*1
                //TIM5_Int_Init();             //&#191;aí¨&#188;&#198;êy&#198;÷3&#245;ê&#188;&#187;ˉ£&#172;1024*2
                TIM2_Int_Init();               //1&#216;&#182;&#207;&#188;&#198;êy&#198;÷3&#245;ê&#188;&#187;ˉ£&#172;1024*2

                //TIM8_Cap_Init(0xFFFF,72-1);//ò&#212;1Mhzμ&#196;&#198;μ&#194;ê&#188;&#198;êy
          //EXTI->IMR = 0;
}

/*******************************************
oˉêy&#195;&#251;3&#198;£oTIM2_IRQHandler
1|    &#196;ü£o1&#216;&#182;&#207;&#188;&#198;ê±μ&#189;&#214;D&#182;&#207;
2&#206;    êy£o&#206;T
·μ&#187;&#216;&#214;μ  £o&#206;T
********************************************/
void TIM2_IRQHandler(void)   //TIM2&#214;D&#182;&#207;
{
        TIM2->SR&=~(1<<0);//&#199;&#229;3y&#214;D&#182;&#207;±ê&#214;&#190;&#206;&#187;        
        LED1=!LED1;       
        /*if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)  //&#188;ì2éTIM2&#184;üD&#194;&#214;D&#182;&#207;·¢éúó&#235;·&#241;
                {
            TIM_Cmd(TIM2, DISABLE);  //ê§&#196;üTIM2
                        DoorOut(RunFlag.OFFPOSITION);
                  TIM_ClearITPendingBit(TIM2, TIM_IT_Update);  //&#199;&#229;3yTIM2&#184;üD&#194;&#214;D&#182;&#207;±ê&#214;&#190;
                }*/
}

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