初级会员

- 积分
- 116
- 金钱
- 116
- 注册时间
- 2016-7-20
- 在线时间
- 42 小时
|

楼主 |
发表于 2016-8-3 16:00:39
|
显示全部楼层
#include"stm32f0xx.h"
#include"inputc.h"
uint32_t INPUTC_flag;
uint32_t Frequency;
/***************************TIME143õê¼»ˉoˉêy***************************/
void TIM16_INPUTC_Init(uint16_t czz ,uint16_t psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure ; //¶¨òå¶¨ê±Æ÷ÖD¶Ï½á11ìå
TIM_ICInitTypeDef TIM_ICInitStructure; //¶¨òå¶¨ê±Æ÷ģ꽽á11ìå
GPIO_InitTypeDef GPIO_InitStructure; //¶¨òåGPIO½á11ìå
NVIC_InitTypeDef NVIC_InitStructure ;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM16,ENABLE); //ê1ÄüAPB2×üÏßTIM16ê±Öó
RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA, ENABLE); //ê1ÄüGPIOê±Öó
/************************** ÅäÖÃGPIO1ü½Å¸′óÃ**************************/
GPIO_PinAFConfig(GPIOA,GPIO_PinSource6,GPIO_AF_5);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_5); //PA6¸′óÃíÆíìêä3ö£¬¸′óÃAF5
/****************************3õê¼»ˉTIM16******************************/
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //TIM16·ÖÆμêyÎa1·ÖÆμ£¨2»·ÖÆμ£©
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //TIM16ÏòéϼÆêy
TIM_TimeBaseStructure.TIM_Period=czz; //TIM16CZZ¸öÖüÆú¡¢¶¨ê±Æ÷ÆμÂ꣨ê±ÖóÆμÂê/CZZ£©
TIM_TimeBaseStructure.TIM_Prescaler=psc; //TIM16Ô¤·ÖÆμ£¨2»·ÖÆμ£©
TIM_TimeBaseStructure.TIM_RepetitionCounter=0; //TIM16ÖØ¸′¼ÆêyÖüÆúÎa0£¨2»Öظ′¼Æêy£©
TIM_TimeBaseInit(TIM16,&TIM_TimeBaseStructure); //3õê¼»ˉTIM16
/*************************TIM16 INPUTCÄ£ê½3õê¼»ˉ****************************/
TIM_ICInitStructure.TIM_Channel=TIM_Channel_1;
TIM_ICInitStructure.TIM_ICFilter=0;
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;
TIM_ICInit(TIM16,&TIM_ICInitStructure);
TIM_ITConfig(TIM16,TIM_IT_CC1,ENABLE);
TIM_Cmd(TIM16,ENABLE);
/**********************************************************************/
/************************3õê¼»ˉNVIC¼Ä′æÆ÷2Îêy**************************/
/**********************************************************************/
NVIC_InitStructure.NVIC_IRQChannel=TIM16_IRQn; //ê1Äü′®¿úÖD¶ÏËùÔúμÄí¨μࣨ′æÔúóú"stm32f0xx.h"£©
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //ê1Äü′®¿úÖD¶Ïí¨μà
NVIC_InitStructure.NVIC_IRQChannelPriority=3; //ÖD¶ÏóÅÏè¼¶3
NVIC_Init(&NVIC_InitStructure); //ê1ÄüTIM16ÖD¶Ï
}
void TIM16_IRQHandler(void)
{
if(TIM_GetITStatus(TIM16,TIM_IT_CC1)!=RESET)
{
TIM_ClearITPendingBit(TIM16,TIM_IT_CC1);
INPUTC_flag=TIM_GetCapture1(TIM16);
Frequency=1000000/INPUTC_flag;
}
} |
|