
如下图所示,采集该高电平脉冲的宽度,只需要进入输入捕获上升沿检测,记录当前的发生上升沿时的CNT值,再进行输入捕获下降沿检测,也记录当前发生下降沿时的CNT值,两次CNT值的差值再根据计数的频率就可以算出脉冲的宽度。
上升沿及下降沿捕获的程序具体实现如下:
TIM8_Cap_Init(0XFFFF,72-1) //以1Mhz的频率计数
void TIM8_UP_IRQHandler(void)
{
if((TIM8CH4_CAPTURE_STA&0X80)==0) //还未成功捕获
{
if (TIM_GetITStatus(TIM8,TIM_IT_Update) != RESET)
{
if(TIM8CH4_CAPTURE_STA&0X40) //已经捕获到高电平了
{
if((TIM8CH4_CAPTURE_STA&0X3F)==0X3F) //高电平太长了
{
TIM8CH4_CAPTURE_STA"=0X80 //标记成功捕获了一次
TIM8CH4_CAPTURE_VAL=0XFFFF
}
else
TIM8CH4_CAPTURE_STA++ //捕获高电平后定时器溢出的次数++
}
}
}
TIM_ClearITPendingBit(TIM8,TIM_IT_Update) //清除中断标志位
}
void TIM8_CC_IRQHandler(void)
{
if((TIM8CH4_CAPTURE_STA&0X80)==0)
{
if(TIM_GetITStatus(TIM8,TIM_IT_CC4) != RESET) //捕获1发生捕
硬件部分:轮毂固定磁铁车轮圈安装霍尔传感器,经整形和电平匹配后驳接stm32任意定时器输入引脚。软件部分:将定时器配置成测周模式,设置slave模式当捕捉发生后reset counter,同时使能捕捉和计数溢出中断,当捕捉中断发生时取得周期T,用轮胎直径除以T就是速度,当溢出中断发生时证明速度很低或停止。关键:计算计时器分频,最好状态是在最快时速时霍尔传感每输出一个脉冲计时20个ticks左右。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)