stm32f072定时器设置

2019-07-21 08:47发布

void tim3_init(uint16_t time3)  
{  
    TIM_TimeBaseInitTypeDef timer_init_structure;  
    NVIC_InitTypeDef nvic_init_structure;  

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);            //ê1ÄüTIM3ê±Öó
       
    nvic_init_structure.NVIC_IRQChannel = TIM3_IRQn;                //Ñ¡ÔñTIM3ÖD¶Ïí¨μà
    nvic_init_structure.NVIC_IRQChannelCmd = ENABLE;                //TIM3ÖD¶Ïê1Äü
    nvic_init_structure.NVIC_IRQChannelPriority = 1;                //óÅÏ輶Îa1
    NVIC_Init(&nvic_init_structure);  

    TIM_DeInit(TIM3);                                               //¸′λTIM3  
    TIM_TimeBaseStructInit(&timer_init_structure);                  //3õê¼»ˉTIMBASE½á11ìå  

                timer_init_structure.TIM_Prescaler = 80-1;                      //¼Æêyê±ÖóÔ¤·ÖÆ죬f=1M.systick  /  1 us
    timer_init_structure.TIM_CounterMode = TIM_CounterMode_Up;      //ÏòéϼÆêyÄ£ê½
          timer_init_structure.TIM_Period = time3-1;                      //¶¨ê±ÖüÆú
                timer_init_structure.TIM_ClockDivision = TIM_CKD_DIV1;          //Ïμí3ê±Öó,2»·ÖÆμ,48M  
    timer_init_structure.TIM_RepetitionCounter = 0x00;              //·¢éú0+1′Îupdate
    TIM_TimeBaseInit(TIM3, &timer_init_structure);  

    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);                      //ê1ÄüTIM3ÖD¶Ï
    TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);           //ÔËDDTIME3μÄupdateê±¼ä¸üDÂÎa′¥·¢Ô′  
               
                TIM_Cmd(TIM3, ENABLE);                                          //ê1ÄüTIM3
}  

其中,    TIM_DeInit(TIM3);                                               //¸′λTIM3  
    TIM_TimeBaseStructInit(&timer_init_structure);                  //3õê¼»ˉTIMBASE½á11ìå  
这两条语句我看好多例程有的加上了,有的没有加上。两种都可以仿真看到定时器已经在工作了。这两个语句在这里初始化有什么作用吗?请朋友指点一下,想不出来原因了。谢谢!

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