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

网站邮件设置电商网站模板

网站邮件设置,电商网站模板,晋州做网站,室内设计平面图手绘1.开发环境 OS: Windows 11开发板:海凌科 HLK-W800-KIT-PROSDK: W80X_SDK_v1.00.10IDE: CSKY Development Kit 2.UART 使用 在 SDK 中创建文件 uart_test.h 和 uart_test.c,然后在 CDK 项目中添加这两个文件,CDK 会自动 include 头文件。 …

1.开发环境

  • OS: Windows 11
  • 开发板:海凌科 HLK-W800-KIT-PRO
  • SDK: W80X_SDK_v1.00.10
  • IDE: CSKY Development Kit

2.UART 使用

在 SDK 中创建文件 uart_test.huart_test.c,然后在 CDK 项目中添加这两个文件,CDK 会自动 include 头文件。
在这里插入图片描述
uart_test.h

#ifndef UART_TEST_H
#define UART_TEST_H#include "wm_include.h"void uart_echo_test(void);#endif // UART_TEST_H

uart_test.c

#include "uart_test.h"
#include "wm_gpio_afsel.h"u8 rx_buf[1024];
u16 rx_buf_len;void uart_test_rx_callback(u16 len, void *priv_data)
{printf("%d\n", len);rx_buf_len += len;
}void uart_echo_test(void)
{wm_uart1_tx_config(WM_IO_PB_06);wm_uart1_rx_config(WM_IO_PB_07);tls_uart_options_t uart_opt;uart_opt.baudrate = TLS_UART_BAUDRATE_115200;uart_opt.charlength = TLS_UART_CHSIZE_8BIT;uart_opt.paritytype = TLS_UART_PMODE_DISABLED;uart_opt.flow_ctrl = TLS_UART_FLOW_CTRL_NONE;uart_opt.stopbits = TLS_UART_ONE_STOPBITS;tls_uart_port_init(TLS_UART_1, &uart_opt, 0);tls_uart_rx_callback_register(TLS_UART_1, (s16(*)(u16, void *))uart_test_rx_callback, NULL);while (1){if (rx_buf_len > 0){u8 rx_cb_len = tls_uart_read(TLS_UART_1, rx_buf, rx_buf_len);tls_uart_write(TLS_UART_1, rx_buf, rx_cb_len);rx_buf_len -= rx_cb_len;}}
}

最后在 UserMain() 中调用 uart_test() 就行了,记得 include。

3. 解释

W800 的 UART 流程图(RX)
在这里插入图片描述
uart fifo 接收不固定,比如一次性接收的数据超过 16 bytes,就会被分成多个,例如 28 bytes 就会被分成 16,8,4 bytes(奇怪的特性)。
如果想要获取接收的数据,就必须通过 tls_uart_read() 从 receive buffer 中读取,它会返回 uart fifo 接收的数据长度。

遇到的问题

SDK 给的 UART API 很奇怪,中断会去调用 callback function,所以你需要先注册。根据源码

// wm_uart.c
......rxlen = rx_fifocnt;while (rx_fifocnt-- > 0){ch = (u8)port->regs->UR_RXW;recv->buf[recv->head] = ch;recv->head = (recv->head + 1) & (TLS_UART_RX_BUF_SIZE - 1);if (port->rx_callback != NULL && rx_byte_cb_flag){port->rx_callback(1, port->priv_data);}}
......

可以看到是 fifo_cnt 递减然后装进 recv->buf 里,但是这里是不会调用 port->rx_callback 的,因为 rx_byte_cb_flag 一直是 0,最后调 callback 的其实是这个

        if (rxlen && port->rx_callback != NULL && !rx_byte_cb_flag){port->rx_callback(rxlen, port->priv_data);}

如果是超过 16 byte,那么每次 callback 的 rxlen 就会出现这种情况
在这里插入图片描述

http://www.ds6.com.cn/news/49906.html

相关文章:

  • php网站上传漏洞免费营销软件网站
  • 作品提示优化要删吗优化营商环境 提升服务效能
  • 旅游网站建设系统免费网上申请注册
  • 企业网站规划书范文游戏搬砖工作室加盟平台
  • 济南网站建设用途站内seo是什么意思
  • 青海网站建设公司湖南网站制作哪家好
  • 各行各业网站建设独立泰州seo平台
  • 宁波自己建网站免费注册网址
  • 黑客怎么攻击网站爱采购seo
  • svn教程图文详解 - 青岛网站建设怎么样建网站
  • 农安建设局网站日本比分预测最新分析
  • 校园网站开发的目的韶关疫情最新消息
  • 佛山微网站建设哪家专业品牌词优化
  • 如何自己做代理网站的想法网络营销的企业有哪些
  • 小程序开发代理杭州seo网站推广
  • 广州美容网站建设长沙建站seo公司
  • 台州手机网站建设seo研究中心vip教程
  • 网站竞价推广都有哪些教育培训机构排名
  • 做导购网站赚钱吗腾讯网qq网站
  • 网站css连线是怎么做的西安百度公司官网
  • 网营中国网站建设淘宝直通车推广怎么做
  • 有和wind一样做用网站seo 工具
  • 食品建设网站前的市场分析海南seo排名优化公司
  • wordpress wiki 整合广州四楚seo顾问
  • 绍兴做团购的网站西地那非能提高硬度吗
  • 云海建设工程有限公司网站英语培训机构前十名
  • 建设的比较好的网站百度学术官网登录入口
  • 太原做手机网站建设对网络营销的理解
  • 做一个在线交易网站需要多少钱seo专员是什么职位
  • 一个简单的网站怎么做的qq引流推广平台