打印
[STM32F4]

外部中断检测脉冲信号的异常问题

[复制链接]
1464|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
温暖小窝|  楼主 | 2015-7-30 17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在进行脉冲技术计数实验时,选用外部中断计数法:
void EXIT_Config(void)
{
        EXTI_InitStructure.EXTI_Line = EXTI_Line15;      //线路15
        EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;            //触发模式为中断
        EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  //上升沿触发
        EXTI_InitStructure.EXTI_LineCmd = ENABLE;                              //开外部中断
        EXTI_Init(&EXTI_InitStructure);
}

void EXTI15_10_IRQHandler(void)
{
         if(EXTI_GetITStatus(EXTI_Line15) != RESET)           //发动机转速
        {
                EXTI_ClearITPendingBit(EXTI_Line15);
                Speed_NumberOfPulse++;                //脉冲个数+1                                                                                                         
        }
}
累加五秒内的计数,然后Speed_NumberOfPulse*12,作为每分钟的个数进行输出;实验结果如下,
1Hz     60
2Hz     120
5Hz     300
10Hz    600
20Hz    12000
50Hz    30000
100Hz   60000
200Hz   11980
500Hz   29950
1kHz    59890
2kHz    54230
10kHz   90000
50kHz   44980/44970
从20HZ开始出现异常,对原因分辨不出来啊,,,菜鸟一枚,希望各位高手不吝赐教。

沙发
mmuuss586| | 2015-7-30 20:18 | 只看该作者
为什么不用PWM捕获呢;
用外部中断占用资源啊;

使用特权

评论回复
板凳
mmuuss586| | 2015-7-30 20:18 | 只看该作者
20HZ开始出现异常,也就是频率越高误差越大;

那就是代码的影响啊;

减少中断代码量看看,尽量操作寄存器;

使用特权

评论回复
地板
温暖小窝|  楼主 | 2015-8-1 16:51 | 只看该作者
mmuuss586 发表于 2015-7-30 20:18
为什么不用PWM捕获呢;
用外部中断占用资源啊;

用外部中断输出,直接记录的是信号个数,是之前想到的定时输出,每隔五秒输出数据一次,直接计数就可以。但是用PWM捕获,计算出的是信号频率,还想用之前的像定时输出,对于如何定时有点想不明白,可能是原理还没搞明白,这段时间也在考虑,版主方便的话可以提示下,非常感谢。

使用特权

评论回复
5
温暖小窝|  楼主 | 2015-8-1 16:52 | 只看该作者
mmuuss586 发表于 2015-7-30 20:18
20HZ开始出现异常,也就是频率越高误差越大;

那就是代码的影响啊;

非常感谢版主指导,我尝试下。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝