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

做毕业设计的参考文献网站百度网盘app

做毕业设计的参考文献网站,百度网盘app,阿里云oss连wordpress,宁晋网站开发前言 在我们学习嵌入式的过程中,uart算是我们用的非常多的一个外设了,我们可以用串口打印信息,也可以用于设备通信,总之串口的作用非常多,我们也非常有必要熟练地去掌握这个外设。 uart的配置 uart的参数配置 uart_…

前言

在我们学习嵌入式的过程中,uart算是我们用的非常多的一个外设了,我们可以用串口打印信息,也可以用于设备通信,总之串口的作用非常多,我们也非常有必要熟练地去掌握这个外设。

uart的配置

uart的参数配置

    uart_config_t uart_config = {.baud_rate = ECHO_UART_BAUD_RATE, //波特率.data_bits = UART_DATA_8_BITS, //数据传输大小.parity    = UART_PARITY_DISABLE,//奇偶校验.stop_bits = UART_STOP_BITS_1,//停止位.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,//硬件流.source_clk = UART_SCLK_DEFAULT,};

还是和上一篇我们学习SPI一样,首先需要配置uart的基本参数,像这些参数我们在学习STM32或者其他单片机的时候应该都比较熟悉了,只需要根据我们项目的需求进行配置就OK了。

esp_err_t uart_param_config(uart_port_t uart_num, const uart_config_t *uart_config)

配置完成之后使用上面的函数进行设置即可。

安装 uart驱动

esp_err_t uart_driver_install(uart_port_t uart_num, int rx_buffer_size, int tx_buffer_size, int event_queue_size, QueueHandle_t *uart_queue, int intr_alloc_flags)

uart_driver_install 是ESP-IDF中用于安装UART驱动程序的函数,它为UART驱动程序分配所需的内部资源,包括环形缓冲区和事件队列。以下是该函数的作用和使用方法:

作用

  • 分配UART驱动程序所需的内部资源,包括Tx(发送)和Rx(接收)的环形缓冲区。
  • 创建一个事件队列,用于处理UART事件,如数据接收、缓冲区溢出等。
  • 允许UART驱动程序使用中断,提高数据传输的效率和响应性。

使用方法

使用uart_driver_install函数时,需要指定以下参数:

  1. uart_num:指定UART端口号,例如UART_NUM_1UART_NUM_2
  2. rx_buffer_size:接收环形缓冲区的大小。
  3. tx_buffer_size:发送环形缓冲区的大小。
  4. event_queue_size:事件队列的大小,用于存储UART事件。
  5. uart_queue:指向队列句柄的指针,用于存储UART事件。
  6. flags:标志位,用于指定是否需要中断等。

这里我们可以使用他的uart事件,这样更加方便我们编程,这里我使用读取超时的(timeout_flag)的标志,这个就类似触发我们STM32中的空闲接收,代表数据已经接收完成我们可以进行处理。

ESP_ERROR_CHECK(uart_driver_install(ECHO_UART_PORT_NUM, BUF_SIZE * 2, BUF_SIZE * 2, 20, &uart1_queue, intr_alloc_flags));

引脚配置

esp_err_t uart_set_pin(uart_port_t uart_num, int tx_io_num, int rx_io_num, int rts_io_num, int cts_io_num)

最后使用上面的函数配置我们的引脚即可。

完整代码

#define TAG "tx_usart"#define ECHO_TEST_TXD (21)#define ECHO_TEST_RXD (22)#define ECHO_UART_PORT_NUM      (1)#define ECHO_UART_BAUD_RATE     (115200)#define BUF_SIZE (1024)static QueueHandle_t uart1_queue;void tx_usart_init(void){uart_config_t uart_config = {.baud_rate = ECHO_UART_BAUD_RATE,.data_bits = UART_DATA_8_BITS,.parity    = UART_PARITY_DISABLE,.stop_bits = UART_STOP_BITS_1,.flow_ctrl = UART_HW_FLOWCTRL_DISABLE,.source_clk = UART_SCLK_DEFAULT,};int intr_alloc_flags = 0;uint8_t timer_cnt = 0;ESP_ERROR_CHECK(uart_driver_install(ECHO_UART_PORT_NUM, BUF_SIZE * 2, BUF_SIZE * 2, 20, &uart1_queue, intr_alloc_flags));ESP_ERROR_CHECK(uart_param_config(ECHO_UART_PORT_NUM, &uart_config));ESP_ERROR_CHECK(uart_set_pin(ECHO_UART_PORT_NUM, ECHO_TEST_TXD, ECHO_TEST_RXD, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));uart_event_t event;// Configure a temporary buffer for the incoming datauint8_t *data = (uint8_t *) malloc(BUF_SIZE);while (1) {// Read data from the UART//Waiting for UART event.if(xQueueReceive(uart1_queue, (void * )&event, (TickType_t)0)) {/*以此判断一帧数据传输完成*/if(event.timeout_flag){ESP_LOGI(TAG,"Recv TimeOUT");}xQueueReset(uart1_queue);}int len = uart_read_bytes(ECHO_UART_PORT_NUM, data, (BUF_SIZE - 1), 0);// Write data back to the UARTuart_write_bytes(ECHO_UART_PORT_NUM, (const char *) data, len);vTaskDelay(10 / portTICK_PERIOD_MS);}}
http://www.hkea.cn/news/512/

相关文章:

  • 网站扫码怎么做的免费观看行情软件网站下载
  • 西安建设网站的公司哪家好深圳seo网络优化公司
  • 无锡大型网站建设东莞网络优化公司
  • 小男孩做爰网站今日军事新闻头条视频
  • 建设网站后怎么发布seo的目的是什么
  • 衡阳网站推广百度搜索软件
  • wordpress 手机 注册全国seo公司排名
  • 12个优秀的平面设计素材网站的排名企业营销策划及推广
  • 定制网站建设提供商手机刷网站排名软件
  • 广州天河网站建设公司搜索引擎站长平台
  • 查公司备案网站备案信息东莞网站推广优化网站
  • 深圳福田区住房和建设局网站广东网站营销seo费用
  • 网站前端制作费用竞价推广托管公司介绍
  • 静态网站与动态网站区别时事新闻最新消息
  • 抖音做我女朋友网站在线识别图片来源
  • php网站开发与维护职位要求宁波百度seo排名优化
  • 房地产推广方案和推广思路seo培训学院官网
  • wordpress 收款百度seo费用
  • 怎么创建网站 免费滴推广的十种方式
  • 杭州科技网站创意广告
  • 数字展馆公司首页排名优化公司
  • 网站上内容列表怎么做怎么样把广告做在百度上
  • seo网站程序做一个微信小程序需要多少钱
  • cms 网站建设环球网疫情最新消息
  • 网站建设现状友妙招链接怎么弄
  • 连云港网站建设报价怎么创建网页
  • 泵 品牌网站建设优化人员配置
  • 备案网站有哪些资料云南网络营销公司哪家好
  • 郑州做网站hnmaorui代刷网站推广链接免费
  • django怎么做网站商务软文写作300