星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 外部中断报错:ValueError: ExtInt Vector 3 is already in used



    • #其他初始化代码...
      
      #中断定义:   来自32单片机的回调函数
      def callback(line):
          global read_flag
          read_flag = 1
      extint = pyb.ExtInt('P9', pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
      
      #主程序
      while(True):
          clock.tick()
      
          if(read_flag ==1): #接收串口数据并置各种标志位...
          elif(read_flag ==0 and mode ==1): #进行口罩检测....
          elif(read_flag == 0 and mode == 2): #进行人脸检测....
          elif(read_flag == 0 and mode == 3): #进行机器学习...
      
          print("read_flag", read_flag)
          clock.fps()
      

      我的程序框架如上,需要打开UART串行端口接受32单片机的数据来进行模式选择,但是每当我第一次运行代码时会报错:
      0_1626856336114_屏幕截图 2021-07-21 163205.jpg
      可是之后再运行就不会报错,而且整个程序运行也很顺畅。请问这个原因是什么呢?
      我能否直接用try...excpet...语句块处理这个错误呢?这样会让这个中断定义生效吗?

      try:
          # 来自32单片机的回调函数
          def callback(line):
              global read_flag
              read_flag = 1
          extint = pyb.ExtInt('P9', pyb.ExtInt.IRQ_FALLING, pyb.Pin.PULL_UP, callback)
      except ValueError:
          pass
      


    • 你需要提供全部代码,这个我没法运行。