新手上路
- 积分
- 47
- 金钱
- 47
- 注册时间
- 2016-3-4
- 在线时间
- 10 小时
|
1金钱
如题,应该是500us啊,为啥测出来一直是1000us
void TIM3_IRQHandler(void)
{
if(flag==0) //还未捕获
{
if(TIM3->SR&0x01) //溢出
{
if(i==1)
{
TIM3CH1_CAPTURE_STA++;
}
}
if(TIM3->SR&0x02) //捕获
{
if(i==1)
{ TIM3CH1_CAPTURE_VAL=TIM3->CCR1;
flag=1;
TIM3->CCER|=0<<1; //上升沿捕获
i=0;
}
else if(i==0)
{
TIM3CH1_CAPTURE_STA=0;
TIM3CH1_CAPTURE_VAL=0;
TIM3CH1_CAPTURE_VAL1=TIM3->CCR1;
//TIM3->CNT=0;
TIM3->CCER|=1<<1; //下降沿捕获
i=1;
}
}
}
TIM3->SR=0;
}
int main()
{ u16 i;
u32 temp=0;
Stm32_Clock_Init(9); //系统时钟设置
Usart_init(9600);
TIM3_init(0XFFFF,72-1);
NVIC_Configuration();
Screen_Con(0xF4);
Display_StrChar(0xe9,3,2,"高电平时间:");
Display_StrChar(0xe9,3,22,"us");
while(1)
{
if(flag)
{
temp=(TIM3CH1_CAPTURE_STA&0xff);
temp*=65536;
i=TIM3CH1_CAPTURE_VAL-TIM3CH1_CAPTURE_VAL1;
temp+=i;
Display_Vo(0xe3,3,12,temp);
TIM3CH1_CAPTURE_STA=0;
flag=0;
}
}
}
|
|