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();
}
- 在上一次的基础上编写代码。
- 首先需要包含头文件 app_uart.h
- 然后在setup中初始化串口,参数是波特率,这里设置成115200。
- 之后通过函数uart_write_bytes就可以发送数据。第一个参数是串口号,一直填UART_NUM_2就可以了。第二个是数据的首地址,第三个是数据的长度。
- 如果需要开启接收中断,则需要在前面定义宏 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扩展坞上。

之后打开串口调试助手:

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

浙公网安备 33010602011771号