STM32/STM8技术论坛
直播中

冯子文

5年用户 21经验值
私信 关注
[问答]

如何一边指纹识别一边做别的事情,不用实时系统的情况下

现在公司安排了个工作要优化指纹模块的代码,使它能一边做指纹识别又不会卡在这个步骤里面,然后还能进行别的操作。例如:
while(1)
{
   指纹注册();  //注册指纹就连续放下松开手指四次的,要是直接这样调用函数,它就要等你连续做完4次操作后才可以的,但是公司现在就想不让它一直在函数里面,就是说在指纹注册的过程中LED灯依旧可以闪烁。
   LED闪烁();
   指纹识别(); //指纹识别也是一样的,要是手指一放上去调用了函数,然后手指立马拿开,它就会卡在函数里面,等到超时才会退出,现在公司就想在上述的情况下也能继续执行别的函数,不会一直在注册或识别函数里面。
}
公司也不让将LED闪烁()写在中断中,本人一开始是想写个定时器轮询这种形式的,就是每隔一段时间就跑下一个任务这样,但是注册跟识别里面有挺多的延时函数的。

然后公司还给了个模板我,是用switch函数来写的,但是我并不太懂如何解析数据包,所以并不能用上。
有没有大神能帮忙给个方案,我现在刚出来实习,现在这个任务快卡了我3、4天了

    Desktop.rar (2019-11-7 09:54 上传)

    12.72 KB, 下载次数: 25

    公司给的目标

已退回5积分

回帖(10)

冯子文

2019-11-7 10:12:28
附件描述错了,应该是公司给的模板
举报

阿信509

2019-11-7 11:19:34
中断呀,想干多少事都成
1 举报
  • 冯子文: 公司说别用中断。。他想的是在while(1)里面做完

冯子文

2019-11-7 11:51:51
自顶!!有没有大佬给点提示
举报

孙泽文

2019-11-7 12:00:04
指纹注册(),指纹识别()里面的函数拆分为多个步骤,然后使用switch切换步骤,执行不同的功能!
1 举报
  • 冯子文: 那就是公司给的模板了,但是我不太明白怎么拆分?那些数据包不会解析

冯子文

2019-11-7 14:14:02
救救孩子吧!!
举报

冯子文

2019-11-7 16:09:53
自顶!!有没有大佬给点提示
举报

陈林

2019-11-7 19:32:27
状态机:采集 一次,跳至下个状态,之后闪灯,循环回来,下个状态采集,再跳出...以此类推
4 举报
  • 冯子文: 老哥 这是不是就像定时器轮询那样,每隔一定时间跳下个任务并判断状态,才进入。
  • 陈林 回复 冯子文: 不是,这个不是靠时间,是靠在多个状态之间切换完成一整件事,但同时保证不卡在一个点。具体请查阅“有限状态机”相关内容。
  • 冯子文 回复 陈林: 好的,谢谢老哥。我之前也试过这种方式,但是我发现会卡在指纹识别函数里面。因为它里面会有些死循环的,那样除了接收到成功数据或者等超时才能退出那个死循环,我就是不太懂怎么样处理这个死循环问题
  • 陈林 回复 冯子文: 死循环?你 像处理状态机那样先跳走然后计时(也可以是计数,其实二者没区别),等到计时到了再回来查看这个状态。

冯子文

2019-11-8 17:45:30
自顶!!有没有大佬给点提示
举报

薛建强

2019-11-21 18:09:30
等到超时,用变量计数等待,不要死循环
举报

lm12041204a

2019-11-29 09:40:49
1. 中断;
2. 改写 指纹注册(),LED闪烁() 两个函数,在里面不要独占CPU,适当释放控制权,给别的事件一下机会;
3. while(1)里面也是(同第2条);
4. 指纹注册(),LED闪烁() 函数:你说“注册跟识别里面有挺多的延时函数”,这个估计会让你很痛苦!
中断是比较现实可行的方式,否则就在 指纹注册()、LED闪烁() 两函数和while(1)里多花点脑筋吧。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分