报错内容:
提示:当使用openmv定时器功能时,可能会出现如下错误提示-uncaught exception in Timer(2) interrupt handler,程序能正常运行,但会提示定时器中断无法正常工作
报错原因:
导致这种原因,是因为我们在中断回调函数中添加了分配内存的函数,通俗的来说,就是我们在定时器中断中对定时器函数以外(主函数)中其它变量进行了修改或者值改变。
openmv不同于SM32单片机的定时器,无法在定时器中更改影响全局变量和标志位,只能访问输出内存变量。
相当于openmv定时器是一个不同与主函数的新线程,不能打断影响主函数变量和进程,只能输出主函数分配内存的函数,在其中定义的值相当于局部变量,不影响全局变量
其值输出的是5,可见定时器中变量不和主函数冲突
解决方案:
目前回调中不允许分配内存的函数,所以只能在定时器中放置print,串口输出,LED灯变化等输出指令,定时器可用访问全局变量中的数值变化,所以数据可以先在while(1)中处理成所需数据,再在定时器中定时处理数据,达到定时发送,定时向单片机或者其它外设传递数据的效果,使用时尤其注意定时器中无法分配内存,也就无法改变全局变量的值。
有不当之处,请各位大佬批评指正