打印
[STM32F4]

从20HZ开始出现异常

[复制链接]
682|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happy_10|  楼主 | 2016-5-29 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在进行脉冲技术计数实验时,选用外部中断计数法:
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开始出现异常,对原因分辨不出来啊,,,菜鸟一枚,希望各位高手不吝赐教。
沙发
冰清玉洁| | 2016-5-29 16:07 | 只看该作者
为什么不用PWM捕获呢;

使用特权

评论回复
板凳
wenfen| | 2016-5-29 16:07 | 只看该作者
用外部中断占用资源啊;

使用特权

评论回复
地板
wenfen| | 2016-5-29 16:08 | 只看该作者
20HZ开始出现异常,也就是频率越高误差越大;

使用特权

评论回复
5
zhuhuis| | 2016-5-29 16:09 | 只看该作者
那就是代码的影响啊;

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

使用特权

评论回复
6
happy_10|  楼主 | 2016-5-29 16:10 | 只看该作者
用外部中断输出,直接记录的是信号个数,是之前想到的定时输出,每隔五秒输出数据一次,直接计数就可以。但是用PWM捕获,计算出的是信号频率,还想用之前的像定时输出,对于如何定时有点想不明白,可能是原理还没搞明白,这段时间也在考虑

使用特权

评论回复
7
tian111| | 2016-5-29 16:11 | 只看该作者
呵呵,多看看就熟了

使用特权

评论回复
8
happy_10|  楼主 | 2016-5-29 16:12 | 只看该作者
呵呵,好的,我尝试下

使用特权

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

本版积分规则

744

主题

7973

帖子

6

粉丝