初级会员

- 积分
- 59
- 金钱
- 59
- 注册时间
- 2016-7-20
- 在线时间
- 11 小时
|
1金钱
void TIM1_Time_Init(u16 arr,u16 psc)
{
//TIM1_Init(4999,7199);
//¼ÆÊýƵÂÊ=Tclk/7200=72000000/7200=10000Hz ¼ÆÒ»¸öÊýÓÃʱ1/10000s ¼ÆÊý5000´Î=5000/10000s=500ms
//Tout(Òç³öʱ¼ä)=(arr+1)*(psc+1)/Tclk =5000*7200/72000000s=500ms
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);//ÉèÖÃȱʡֵ,ÕâÒ»²½×îºÃ¼ÓÉÏ
TIM_TimeBaseStructure.TIM_Period = arr; //×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ£¬Òç³öÖµ
TIM_TimeBaseStructure.TIM_Prescaler =psc; //ʱÖÓÆµÂÊÔ¤·ÖƵֵ
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //ÉèÖÃʱÖÓ·Ö¸î:ÊäÈë²¶»ñģʽÓÃÀ´Â˲¨
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIMÏòÉϼÆÊýģʽ
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;//ÉèÖÃÖØ¸´Òç³ö´ÎÊý£¬¾ÍÊǶàÉÙ´ÎÒç³öºó½øÈëÖжϣ¬Ò»°ãΪ0£¬Ö»Óи߼¶¶¨Ê±Æ÷²ÅÓÐÓÃ
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE ); //ÔÊÐí¸üÐÂÖжÏ
NVIC_InitStructure.NVIC_IRQChannel = TIM1_UP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_Cmd(TIM1, ENABLE);
}
void TIM1_InputCapture_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);
//RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE); //ʹÄÜGPIOÍâÉèºÍAFIO¸´Óù¦ÄÜÄ£¿éʱÖÓ
GPIO_PinRemapConfig(GPIO_FullRemap_TIM1 , ENABLE); //Timer3ÍêÈ«ÖØÓ³Éä TIM3
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_13|GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_Init(GPIOE, &GPIO_InitStructure);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);//ÉèÖÃȱʡֵ,ÕâÒ»²½×îºÃ¼ÓÉÏ
TIM_TimeBaseStructure.TIM_Period = arr; //×Ô¶¯ÖØ×°ÔؼĴæÆ÷ÖÜÆÚµÄÖµ£¬Òç³öÖµ
TIM_TimeBaseStructure.TIM_Prescaler =psc; //ʱÖÓÆµÂÊÔ¤·ÖƵֵ
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //ÉèÖÃʱÖÓ·Ö¸î:ÊäÈë²¶»ñģʽÓÃÀ´Â˲¨
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIMÏòÉϼÆÊýģʽ
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;//ÉèÖÃÖØ¸´Òç³ö´ÎÊý£¬¾ÍÊǶàÉÙ´ÎÒç³öºó½øÈëÖжϣ¬Ò»°ãΪ0£¬Ö»Óи߼¶¶¨Ê±Æ÷²ÅÓÐÓÃ
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
TIM_ICStructInit(&TIM_ICInitStructure);//ÉèÖÃȱʡֵ,ÕâÒ»²½×îºÃ¼ÓÉÏ
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; //ÉÏÉýÑØ²¶»ñ
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //Ó³Éäµ½TI1ÉÏ
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //ÅäÖÃÊäÈë·ÖƵ,²»·ÖƵ
TIM_ICInitStructure.TIM_ICFilter = 0x00; //IC1F=0000 ÅäÖÃÊäÈëÂ˲¨Æ÷ 0²»Â˲¨
//²¶»ñͨµÀ1
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; //IC1Ó³Éäµ½TI1ÉÏ£¬ÕâËľ䲻Äܺϲ¢
TIM_ICInit(TIM1, &TIM_ICInitStructure);
//²¶»ñͨµÀ2
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; //IC1Ó³Éäµ½TI1ÉÏ£¬ÕâËľ䲻Äܺϲ¢
TIM_ICInit(TIM1, &TIM_ICInitStructure);
//²¶»ñͨµÀ3
TIM_ICInitStructure.TIM_Channel = TIM_Channel_3; //IC1Ó³Éäµ½TI1ÉÏ£¬ÕâËľ䲻Äܺϲ¢
TIM_ICInit(TIM1, &TIM_ICInitStructure);
//²¶»ñͨµÀ4
TIM_ICInitStructure.TIM_Channel = TIM_Channel_4; //IC4Ó³Éäµ½TI4ÉÏ£¬ÕâËľ䲻Äܺϲ¢
TIM_ICInit(TIM1, &TIM_ICInitStructure);
//ÖжϷÖ×é³õʼ»¯
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM1,TIM_IT_Update|TIM_IT_CC1|TIM_IT_CC4,ENABLE); //ÔÊÐí¸üÐÂÖжϣ¬ÔÊÐíCC1IE,CC2IE,CC3IE,CC4IE²¶»ñÖжÏ
TIM_CtrlPWMOutputs(TIM1,ENABLE); //Ö÷Êä³öʹÄÜ
TIM_Cmd(TIM1, ENABLE); //ʹÄܶ¨Ê±Æ÷4
}
各位大佬看看哪里错了
|
|