当前位置: 首页 > news >正文

阿里云服务器开源做几个网站想找公司做网站

阿里云服务器开源做几个网站,想找公司做网站,做网站要会哪些技术,国内校园网站建设ESP32-S3 IDF USART详解 USART简介 USART是一种串行通信协议#xff0c;广泛应用于微控制器和计算机之间的通信。USART支持异步和同步模式#xff0c;因此它可以在没有时钟信号的情况下#xff08;异步模式#xff09;或有时钟信号的情况下#xff08;同步模式#xff…ESP32-S3 IDF USART详解 USART简介 USART是一种串行通信协议广泛应用于微控制器和计算机之间的通信。USART支持异步和同步模式因此它可以在没有时钟信号的情况下异步模式或有时钟信号的情况下同步模式进行通信。 ESP32-S3的USART ESP32-S3有两个全功能的USART通道USART0和USART1USART2支持异步通信RS232 和 RS485和 IrDA通信速率可达到 5 Mbps。 UART 基本架构图 UART 模块工作在两个时钟域APB_CLK 时钟域和 Core 时钟域。UART Core 有三个时钟源80-MHz APB_CLK、RC_FAST_CLK 以及晶振时钟 XTAL_CLK 可以通过配置 UART_SCLK_SEL 来选择时钟源。分频器用于对时钟源进行分频然后产生时钟信号来驱动 UARTCore 模块。 更加详细的介绍可以去看看官方的文档 ESP32S3官方文档 需要注意一点 ESP32-S3的USART引脚映射是可配置的这是因为ESP32-S3使用了一个称为GPIO矩阵的特性。GPIO矩阵是ESP32-S3硬件的一部分它允许将内部信号路由到任何GPIO引脚。这意味着我们可以将USART的发送TX和接收RX信号连接到你选择的任何可用GPIO引脚。 ESP32-S3 UART的默认引脚 发送TX接收RXUART0IO43IO44UART1IO17 / 任意IOIO18 / 任意IOUART2任意IO任意IO printf()函数 在ESP-IDF中printf()函数默认使用的是USART0。这是因为在ESP32-S3的启动代码中USART0被初始化为默认的调试控制台。因此当我们在代码中使用printf()函数来打印信息时这些信息将会被发送到USART0并且可以通过串行接口如USB转串口适配器在计算机的串行监视器上看到。 使用ESP-IDF配置USART 在ESP32-S3上使用USART的基本步骤 设置 UART 参数、分配引脚可选不配置则使用默认引脚初始化UART安装 UART 驱动收发数据使用中断卸载 UART 中断驱动释放资源当 UART 不再使用时 #include driver/uart.hvoid app_main(void) {// -------------1. 配置USART选项-----------------------uart_config_t uart_config {.baud_rate 115200, // 波特率.data_bits UART_DATA_8_BITS, // 数据位.parity UART_PARITY_DISABLE, // 奇偶校验.stop_bits UART_STOP_BITS_1, // 停止位.flow_ctrl UART_HW_FLOWCTRL_DISABLE // 流控};// --------------2. 初始化USART------------------------// UART_NUM_1UART端口号// uart_config指向uart_config_t结构体的指针uart_param_config(UART_NUM_1, uart_config);// --------------3. 安装驱动程序------------------------// UART_NUM_1UART端口号// 1024 * 2接收缓冲区大小// 0发送缓冲区大小// 0队列长度// NULL队列句柄如果不使用队列可以设置为NULL// 0中断分配标志通常设置为0uart_driver_install(UART_NUM_1, 1024 * 2, 0, 0, NULL, 0);// 4.---------------4. 发送数据--------------------------// UART_NUM_1UART端口号// Hello, world!要发送的数据// 13要发送的数据的长度uart_write_bytes(UART_NUM_1, Hello, world!, 13);// ------------------5. 读取数据-----------------------uint8_t data[128]; // 数据缓冲区int length 0; // 读取的数据长度// UART_NUM_1UART端口号// data数据缓冲区// sizeof(data)要读取的最大数据长度// 1000 / portTICK_RATE_MS读取超时时间以RTOS tick为单位length uart_read_bytes(UART_NUM_1, data, sizeof(data), 1000 / portTICK_RATE_MS);if (length 0) {// 如果读取到数据处理数据// ...}}前面提到过ESP32-S3的USART引脚映射是可配置的所以我们可以使用uart_set_pin()来自定义TX和RX #include driver/uart.hvoid app_main(void) {// 设置UART1的TX引脚为GPIO10RX引脚为GPIO9uart_set_pin(UART_NUM_1, 10, 9, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE); } 这里uart_set_pin()函数的最后两个参数是RTS请求发送和CTS清除发送我没有使用所以将它们设置为UART_PIN_NO_CHANGE USART实验 串口UART_NUM_1接收数据并分别在串口UART_NUM_0和串口UART_NUM_1返回 这次我们依旧使用面向对象的方法来编写驱动驱动API接口参考Arduino的格式 USART.h /*** file USART.h* author 宁子希 (1589326497qq.com)* brief 串口初始化类* version 0.1* date 2024-03-12* * copyright Copyright (c) 2024* */#ifndef _USART_H_ #define _USART_H_#include string.h #include freertos/FreeRTOS.h #include freertos/task.h #include driver/uart.h #include driver/uart_select.h #include driver/gpio.h#ifdef __cplusplusextern C { #endifclass Uart { public:// 构造函数接收UART端口号和TX、RX引脚作为参数Uart(uart_port_t uart_num, int tx_pin, int rx_pin);// 发送数据接收一个字符数组和长度作为参数void write(const char* data, int len);// 接收数据接收一个字符数组和长度作为参数返回实际接收的长度int read(uint8_t* buf, int len);private:uart_port_t _uart_num; // UART端口号int _tx_pin; // TX引脚int _rx_pin; // RX引脚 };#ifdef __cplusplus} #endif#endifUSART.cpp /*** file USART.cpp* author 宁子希 (1589326497qq.com)* brief 串口初始化类* version 0.1* date 2024-03-12* * copyright Copyright (c) 2024* */ #include USART.h// 构造函数 Uart::Uart(uart_port_t uart_num, int tx_pin, int rx_pin): _uart_num(uart_num), _tx_pin(tx_pin), _rx_pin(rx_pin) {// 配置UART参数uart_config_t uart_config {.baud_rate 115200, // 波特率.data_bits UART_DATA_8_BITS, // 数据位.parity UART_PARITY_DISABLE, // 奇偶校验.stop_bits UART_STOP_BITS_1, // 停止位.flow_ctrl UART_HW_FLOWCTRL_DISABLE, // 流控制};// 配置UART参数uart_param_config(uart_num, uart_config);// 设置UART引脚// 设置UART的TX和RX引脚uart_set_pin(uart_num, tx_pin, rx_pin, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE);// 安装UART驱动程序// 安装UART驱动程序uart_driver_install(uart_num, 1024 * 2, 0, 0, NULL, 0); }// 发送数据 void Uart::write(const char* data, int len) {// 调用ESP-IDF库函数来发送数据uart_write_bytes(_uart_num, data, len); }// 接收数据 int Uart::read(uint8_t* buf, int len) {// 调用ESP-IDF库函数来接收数据return uart_read_bytes(_uart_num, buf, len, 1000 / portTICK_PERIOD_MS); }main.cpp /*** file main.cpp* author 宁子希 (1589326497qq.com)* brief 串口通信实验* version 0.1* date 2024-03-13* * copyright Copyright (c) 2024* */#include iostream #include string #include USART.h using namespace std;extern C void app_main(void){// 创建一个Uart对象使用UART_NUM_1 TX:8 RX:9Uart uart1(UART_NUM_1, 8, 9);// 发送数据uart1.write(Hello, ESP32!, 13);while(true){// 接收数据uint8_t buf[128];int len uart1.read(buf, sizeof(buf));// 处理接收到的数据if (len 0) {// 假设我们只是简单地将接收到的数据打印出来for (int i 0; i len; i) {printf(%c, buf[i]);}printf(\n);// 然后我们可以再次发送处理后的数据uart1.write((const char*)buf, len);}} }总结 更加详细的内容可以去看看官方的资料 ESP32S3 USART 官方手册
http://www.w-s-a.com/news/192549/

相关文章:

  • 一般做网站是用什么语言开发的域名查询 查询网
  • 地方门户网站源码下载揭阳专业网站建设
  • 网站做优化好还是推广好wordpress百家号模版
  • 淘宝网网站建设的的意见校园微网站建设
  • 小说网站建设之前需求分析免费下载京东购物
  • 园林景观设计案例网站wordpress 文章内容页
  • 网站什么做才会更吸引客户楚雄网站开发rewlkj
  • 电商网站构建预算方案视频制作网站怎么做
  • 包装设计灵感网站ps软件下载电脑版多少钱
  • 手机网站图片做多大原网站开发新功能
  • 网站设计培训成都陕西网站建设公司哪有
  • expedia电子商务网站建设辽宁网站设计
  • 深圳网站建设网站运营绥芬河市建设局网站
  • 家政服务网站做推广有效果吗做图软件ps下载网站有哪些
  • 北京市建设教育协会网站flash网站制作单选框和复选框ui组件
  • 国外有没有做问卷调查的网站网站网页怎么做
  • 简单个人网站模板下载网站建设整体情况介绍
  • 网站建设做到哪些内容荆门网站建设电话咨询
  • 玉树网站建设公司双11主机 wordpress 2015
  • dw做网站背景图片设置汕头seo管理
  • 个人又什么办法做企业网站唐山哪里建轻轨和地铁
  • 手机网站404页面室内设计公司排名前100
  • 做民宿需要和多家网站合作吗创建软件的步骤
  • 网站导航栏设计要求辽宁省住房和城乡建设厅
  • 海外网站平台腾讯营销平台
  • 东道网站建设良品铺子网络营销案例
  • 免费企业查询软件优化模型
  • 兰亭集势的网站平台建设凡科网站免费版怎么做
  • 在网站做推广要钱吗网站根目录是哪个文件夹
  • 网站建设如何弄链接海外vps一键配置WordPress