OPEN-EC快速食用指南(三)串口2的使用

概述

串口2主要用于和其他MCU通信,发送识别结果等。
注意!!烧录代码时请断开串口2上的接线。插着串口2的数据线是烧不进代码的。

编写代码

#include "esp_camera.h"
#include "app_led.h"
#include "app_camera.h"
#include "display.h"
#include "app_uart.h"
#include "image.h"

#define U2_RX_IT_EN
void UART2_IRQHandle(char data)
{
    uart_write_bytes(UART_NUM_2, &data, 1);
}



void setup() {  
  app_camera_main();
  app_led_init();
  app_led_set(0);
  uart2_init(115200);
  Lcd_Init();
  Lcd_Clear(WHITE);
}

void loop() {
    Image img=image_read_from_camera();
    display_show_img(img);
    image_free(img);
    app_led_toggle();
}
  1. 在上一次的基础上编写代码。
  2. 首先需要包含头文件 app_uart.h
  3. 然后在setup中初始化串口,参数是波特率,这里设置成115200。
  4. 之后通过函数uart_write_bytes就可以发送数据。第一个参数是串口号,一直填UART_NUM_2就可以了。第二个是数据的首地址,第三个是数据的长度。
  5. 如果需要开启接收中断,则需要在前面定义宏 U2_RX_IT_EX,然后在下面定义UART2_IRQHandle函数,每收到一个字节,就会调用一次这个函数,收到的字节就是data。

这里是把收到的数据直接发回发送方。

如果需要发送多个字节的数据,示例:

char datas[5]={0x01,0x02,0x44,0x55,0xac};   //要发送的数据
uart_write_bytes(UART_NUM_2, datas, 5);     //发送5个字节

注意事项

如果定义了宏U2_RX_IT_EN,但是不定义UART2_IRQHandle函数,编译时会报错,如果不需要接收中断就不要定义该宏。

下载验证

编写完代码之后,可以直接点 -> 上传,他会先编译,如果有Error,会停止上传,没有Error就直接上传。

注意!!烧录代码时请断开串口2上的接线。插着串口2的数据线是烧不进代码的。

烧录完成之后,通过一个USB-TTL模块,将串口2连接到电脑上。这边是接到了USB扩展坞上。

image

之后打开串口调试助手:

image

  1. 修改右边的参数。
  2. 串口号同样可以通过拔插看多了哪一个的方式找到。
  3. 波特率要跟上面代码中的一样,为115200。
  4. 下面先不勾选16进制显示,也不勾选16进制发送。(直接发送字符串)
  5. 然后打开串口
  6. 在发送框内随便输点什么,然后发送。
  7. 如果上面的接收框出现了发送的内容,说明开发板正确的把它接受到的数据传回来了。

上一篇:快速建立第一个工程

下一篇:简单使用类似OpenCV的API实现黑色物体检测

posted @ 2022-04-28 16:48  explorerSZY  阅读(221)  评论(0)    收藏  举报