新手上路
- 积分
- 26
- 金钱
- 26
- 注册时间
- 2016-7-26
- 在线时间
- 0 小时
|

楼主 |
发表于 2016-7-27 13:55:49
|
显示全部楼层
void Timer3_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
TIM_DeInit(TIM3);
TIM_TimeBaseStructure.TIM_Period = arr;
TIM_TimeBaseStructure.TIM_Prescaler =psc;
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
TIM_ETRClockMode2Config(TIM3, TIM_ExtTRGPSC_OFF, TIM_ExtTRGPolarity_NonInverted, 0);
TIM_SetCounter(TIM3, 0);
TIM_Cmd(TIM3, ENABLE);
}
u16 getspeed()
{
u16 deta;
count0=count1;
delay_ms(50); //deta t=50ms
count1=TIM3->CNT;
if(count1<count0)
{
deta=0xffff-count0+count1;
}
else
deta=count1-count0;
return deta;
}
int main(void)
{
SystemInit();
delay_init(72);
uart_init(9600);
NVIC_Configuration();
Timer3_Init(0xffff,0);
while(1)
{
speed=getspeed();
printf("%d\r\n",speed*17);
}
}
这就是程序了,但是测频率好像不太准,但是还能测到,我只是改了time。c的文件,库我看过但是没改过,另外配置复用那么我另外一个脚和这个定义是一样的脚,都是捕获脉冲,会冲突吗
|
|