• OpenMV VSCode 扩展发布了,在插件市场直接搜索OpenMV就可以安装
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 如何在定时器中断函数里面接收串口的数据



    • 我尝试令stm32f1的板子和openmv通信
      下面是我的代码

      # Hello World Example
      #
      # Welcome to the OpenMV IDE! Click on the green run arrow button below to run the script!
      
      import sensor, image, time, pyb, struct
      
      sensor.reset()                      # Reset and initialize the sensor.
      sensor.set_pixformat(sensor.RGB565) # Set pixel format to RGB565 (or GRAYSCALE)
      sensor.set_framesize(sensor.QVGA)   # Set frame size to QVGA (320x240)
      sensor.skip_frames(time = 2000)     # Wait for settings take effect.
      clock = time.clock()                # Create a clock object to track the FPS.
      
      
      ##初始化串口
      uart = pyb.UART(1, 115200, timeout_char=1000)                         # i使用给定波特率初始化
      uart.init(115200, bits=8, parity=None, stop=1, timeout_char=1000) # 使用给定参数初始化
      
      res=1
      
      def uart_call_back_(t):
          global uart
          if uart.any():
              res=uart.read()
              res = struct.unpack('B', res)
              res = hex(res)
              res = int(res)
              if res == 0xaf:
                  pyb.LED(1).toggle()
                  print('succes')
          return
      
      tim = pyb.Timer(4)              # create a timer object using timer 4  使用定时器4创建一个定时器对象
      tim.init(freq=1000)                # trigger at 2Hz 以2Hz触发
      tim.callback(uart_call_back_)
      
      def snshot():
          #clock.tick()                    # Update the FPS clock.
          img = sensor.snapshot()         # Take a picture and return the image.
          
          #print(clock.fps())              # Note: OpenMV Cam runs about half as fast when connected
                                          # to the IDE. The FPS should increase once disconnected.
      
      while(True):
          snshot()
      
      

      我得到了这样的错误:
      uncaught exception in Timer(4) interrupt handler
      MemoryError:
      我尝试在while的主循环里面调用这个uart_call_back_这个函数而不是把它当成定时器的中断函数,可以运行,但是缺点就是,主循环里每一次循环都要拍照以及后续还要做图像的处理,这意味着可能不能及时的处理串口发来的信息。我想知道有什么方法可以解决这个error。



    • 不要使用中断接收串口数据。

      串口有缓冲的,只要缓冲不满,就不会丢。只需要在主循环里读取就行了。



    • 了解了,谢谢大佬😄 😄