openmv定时器报错——uncaught exception in Timer(2) interrupt handler

6 篇文章 1 订阅
6 篇文章 1 订阅

报错内容:

提示:当使用openmv定时器功能时,可能会出现如下错误提示-uncaught exception in Timer(2) interrupt handler,程序能正常运行,但会提示定时器中断无法正常工作

在这里插入图片描述


报错原因:

导致这种原因,是因为我们在中断回调函数中添加了分配内存的函数,通俗的来说,就是我们在定时器中断中对定时器函数以外(主函数)中其它变量进行了修改或者值改变。
openmv不同于SM32单片机的定时器,无法在定时器中更改影响全局变量和标志位,只能访问输出内存变量。

在这里插入图片描述
相当于openmv定时器是一个不同与主函数的新线程,不能打断影响主函数变量和进程,只能输出主函数分配内存的函数,在其中定义的值相当于局部变量,不影响全局变量

在这里插入图片描述
其值输出的是5,可见定时器中变量不和主函数冲突


解决方案:

目前回调中不允许分配内存的函数,所以只能在定时器中放置print,串口输出,LED灯变化等输出指令,定时器可用访问全局变量中的数值变化,所以数据可以先在while(1)中处理成所需数据,再在定时器中定时处理数据,达到定时发送,定时向单片机或者其它外设传递数据的效果,使用时尤其注意定时器中无法分配内存,也就无法改变全局变量的值。

有不当之处,请各位大佬批评指正

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值