初级会员

- 积分
- 118
- 金钱
- 118
- 注册时间
- 2015-6-24
- 在线时间
- 17 小时
|
5金钱
我现在能够捕获的最低频率大概在 8Hz左右
主函数:
int main(void)
{
float B;
u32 A,temp=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//?è????????????????·?×é0
LED_Init(); //LED??????
GPIO_OUT_Init();
uart_init(256000);
SPI3_Init(); //SPI3??????
keyinput_GPIO_Init();//°??ü??????
//EXTIX_Init(); //??????????????????
TIM2_Int_Init(1000,35999); //??·?????PWM????=72000/(899+1)=80Khz
TIM1_Cap_Init(0XFFFF,71); //??1Mhz??????????
GpuSend("CLS(15);");//??5??????????????
GpuSend("DR2;");//?á??????????
GpuSend("DS48(0,70,'????????:',1);");//????????
GpuSend("DS48(0,118,'????????:',3);");//????????
while (1)
{
if(TIM1CH1_CAPTURE_STA&0X80)//??????????????????????
{
temp=TIM1CH1_CAPTURE_STA&0X3F;
temp*=65536;//?????±??×???
temp+=TIM1CH1_CAPTURE_VAL;//????×??????????±??
B=1/(((float)temp)/1000000);
if(PL==1)
{
sprintf(buf,"BOXF(220,79,480,115,15);");
GpuSend(buf);
sprintf(buf,"DS48(220,70,'%.0fHz',0);",B);
GpuSend(buf);
LED1=!LED1;
PL=0;
TIM1CH1_CAPTURE_STA=0;//??????????????
}
PLX++;
}
}
}
捕获中断处理函数:
//?¨?±?÷1????·??????ò
void TIM1_CC_IRQHandler(void)
{
if((TIM1CH1_CAPTURE_STA&0X80)==0)//????????????
{
if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)
{
if((TIM1CH1_CAPTURE_STA&0X40)==0X40)//??????????????????
{
if((TIM1CH1_CAPTURE_STA&0X3F)==0X3F)//?????????¤??
{
TIM1CH1_CAPTURE_STA|=0X80;//±ê????????????????
TIM1CH1_CAPTURE_VAL=0XFFFF;
}
else
{
TIM1CH1_CAPTURE_STA++;
}
}
}
if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET)//????1·??ú????????
{
if(TIM1CH1_CAPTURE_STA&0X40) //????????????????
{
TIM1CH1_CAPTURE_VAL=TIM1->CNT;
TIM1CH1_CAPTURE_STA|=0X80; //±ê??????????????????????
TIM_OC1PolarityConfig(TIM1,TIM_ICPolarity_Rising); //CC1P=0 ?è??????????????
}
else //????????,????????????????
{
TIM1CH1_CAPTURE_STA=0; //????
TIM1CH1_CAPTURE_VAL=0;
TIM_SetCounter(TIM1,0);
TIM1CH1_CAPTURE_STA|=0X40; //±ê????????????????
TIM_OC1PolarityConfig(TIM1,TIM_ICPolarity_Rising); //CC1P=0 ?è??????????????
}
}
}
TIM_ClearITPendingBit(TIM1, TIM_IT_CC1|TIM_IT_Update); //????????±ê????
}
|
|