【XR806开发板试用】2、UDP控制的呼吸灯

【XR806开发板试用】1、UDP通信测试
上篇文章测试了XR806的UDP通信.
控制PWM控制相关的函数在device/xradio/xr806/adapter/hals/iot_hardware/wifiiot_lite文件夹下的iot_pwm.c
.
├── BUILD.gn
├── iot_flash.c
├── iot_gpio.c
├── iot_i2c.c
├── iot_pwm.c
├── iot_uart.c
├── iot_watchdog.c
├── lowpower.c
└── reset.c

//port 指定输出引脚
//duty 指定输出PWM占空比 范围1-99
//freq 指定PWM输出频率
unsigned int IoTPwmInit(unsigned int port);
unsigned int IoTPwmDeinit(unsigned int port);
unsigned int IoTPwmStart(unsigned int port, unsigned short duty,unsigned int freq);
unsigned int IoTPwmStop(unsigned int port);

#include "iot_pwm.h"


#define pwm_channl1         0U
#define pwm_channl2         1U
#define pwm_channl3         2U
#define pwm_channl4         3U

void udp_echoserver_init(void)
{
//略
//在udp初始化结束后初始化PWM输出引脚.
        IoTPwmInit(pwm_channl1);
        IoTPwmInit(pwm_channl2);
        IoTPwmInit(pwm_channl3);
        IoTPwmInit(pwm_channl4);
}

void udp_echoserver_receive_callback(void *arg, struct udp_pcb *upcb,struct pbuf *p, const ip_addr_t *addr, u16_t port)
{
    udp_connect(upcb, addr, UDP_CLIENT_PORT);
    udp_send(upcb, p);
    udpReceiveCallback(p->payload, p->len);        //recave call 
    udp_disconnect(upcb);
    pbuf_free(p);
}
//udp接收回调函数中根据接收到的数据控制PWM占空比.

void udpReceiveCallback(char *p, int len)        //recave call 
{
    if(len<42+5)
        return;
    p+=42;
    //p[0]留作开关量控制.
    if(p[1]<5||p[1]>99)
        IoTPwmStop(pwm_channl1);
    else
        IoTPwmStart(pwm_channl1, p[1], 2000);

    if(p[2]<5||p[2]>99)
        IoTPwmStop(pwm_channl2);
    else
        IoTPwmStart(pwm_channl2, p[2], 2000);

    if(p[3]<5||p[3]>99)
        IoTPwmStop(pwm_channl3);
    else
        IoTPwmStart(pwm_channl3, p[3], 2000);

    if(p[4]<5||p[4]>99)
        IoTPwmStop(pwm_channl4);
    else
        IoTPwmStart(pwm_channl4, p[4], 2000);

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/512453.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

车载以太网AVB交换机 TSN交换机 时间敏感网络 11口 千兆 SW2000TSN

目录 一、TSN时间敏感交换机概述 二、产品介绍 SW2000M/H TSN 1、产品框架 2、产品特点与参数 产品特点 产品参数 3、配置与使用 4、常用连接方式 4.1 双通道作为监控和数据采集器&#xff0c;采集两个设备间的通信数据&#xff08;Bypass功能&#xff09; 4.2 试验搭…

[中级]软考_软件设计_计算机组成与体系结构_05_CISC与RISC

CISC与RISC CISC&RISC的基本概念对比的维度往年真题 CISC&RISC的基本概念 对比的维度 CISC:指令多&#xff0c;使用频率差别大&#xff0c;变长格式&#xff0c;多种寻址方式RISC:指令少&#xff0c;使用频率接近&#xff0c;定长格式&#xff0c;多为寄存器寻址&#…

不锈钢潜水排污泵80WQP40-15-3S

一、产品概述&#xff1a;不锈钢潜水排污泵80WQP40-15-3S是一款专门设计用于污水排放的高性能潜水电泵。该泵采用了高级不锈钢材质&#xff0c;确保了泵体的耐腐蚀性和耐久性&#xff0c;非常适合在恶劣的工作环境中运行。其型号中的“80”指的是泵的出口为80mm&#xff0c;“W…

【竞技宝jjb.lol】LOL:LPL春季常规赛荣誉评选出炉!

北京时间2024年4月3日,英雄联盟LPL2024春季季后赛正在如火如荼的进行之中,常规赛阶段的荣誉评选结果在近日出炉,除三个最佳阵容之外,其中BLG战队的中单选手knight斩获春季赛常规赛MVP,而FPX战队的打野选手milkway则拿到春季赛常规赛的最佳新秀。 春季常规赛最有价值选手:BLG.kn…

Redis 全景图(1)--- 关于 Redis 的6大模块

这是我第一次尝试以长文的形式写一篇 Redis 的总结文章。这篇文章我想写很久了&#xff0c;只是一直碍于我对 Redis 的掌握没有那么的好&#xff0c;因此迟迟未动笔。这几天&#xff0c;我一直在看各种不同类型的 Redis 文章&#xff0c;通过阅读这些文章&#xff0c;引发了我对…

nestjs 全栈进阶--控制器和参数获取

视频教程 06_nest控制器和参数获取1_哔哩哔哩_bilibili nest new argument -p pnpm nest g resource person pnpm start:dev 测试下&#xff1a;http://localhost:3000/person/1 在浏览器中看到图中的内容就是成功了 1. 路由 在Nest.js中&#xff0c;路由是由Controller装…

CTF比赛中JWT漏洞的利用

前言 在最近的ctf比赛中&#xff0c;经常可以碰到一些jwt相关的题目&#xff0c;然后感觉思路挺有意思&#xff0c;拿出来分享一下&#xff0c;后边也总结一下ctf比较常见的集jwt相关题目解题思路 算法混淆漏洞 腾龙杯 web[这又是一个登录页面] 使用zkaq/zkaq登录之后&#…

在编程中使用中文到底该不该??

看到知乎上有个热门问题&#xff0c;为什么很多人反对中文在编程中的使用&#xff1f; 这个问题有几百万的浏览热度&#xff0c;其中排名第一的回答非常简洁&#xff0c;我深以为然&#xff1a; 在国内做开发&#xff0c;用中文写注释、写文档&#xff0c;是非常好的习惯&…

【C+ +初阶】前言篇章---C+ +的广袤

目录 1.C语言到C的过渡 2.C的发展历程 2.1C语言的诞生 2.2 c的历史版本 3.c 的地位 4. c的应用场景 4.1. 操作系统以及大型系统软件开发 所有操作系统几乎都是C/C写的 4.2. 服务器端开发 后台开发&#xff1a; 4.3. 游戏开发 4.4. 嵌入式 4.5. 数字图像处理 4.6. 人工智能 4.7.…

pygame--坦克大战(二)

加载敌方坦克 敌方坦克的方向是随机的&#xff0c;使用随机数生成。 初始化敌方坦克。 class EnemyTank(Tank):def __init__(self,left,top,speed):self.images {U: pygame.image.load(img/enemy1U.gif),D: pygame.image.load(img/enemy1D.gif),L: pygame.image.load(img/e…

IP地址获取不到的原因是什么?

在数字化时代的今天&#xff0c;互联网已成为我们日常生活和工作中不可或缺的一部分。而IP地址&#xff0c;作为互联网通信的基础&#xff0c;其重要性不言而喻。然而&#xff0c;有时我们可能会遇到IP地址获取不到的问题&#xff0c;这会给我们的网络使用带来诸多不便。那么&a…

基于单片机的光伏电量检测系统的设计

**单片机设计介绍&#xff0c;基于单片机的光伏电量检测系统的设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的光伏电量检测系统的设计概要主要围绕实现光伏电量的实时监测与精准测量展开。以下是该设计的主要内…

flutter获取手机中的系统路径信息

https://www.bilibili.com/video/BV1wE421g7sw获取系统中的路径 获取系统中的路径&#xff0c;并在这个路径中创建一个文本文件【str.txt】 然后进行写入【str.txt】 再读取这个文件【str.txt】 手机没有开通root权限无法看到写入到【应用程序文档目录】路径中的文件 用来…

大创项目推荐 深度学习 python opencv 火焰检测识别 火灾检测

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

Node.js介绍

Node.js 是一个开源和跨平台的 JavaScript 运行时环境。它是几乎任何类型的项目的流行工具&#xff01;

剑指Offer题目笔记25(使用回溯法解决其他类型问题)

面试题85&#xff1a; 问题&#xff1a; ​ 输入一个正整数n&#xff0c;输出所有包含n个左括号和n个右括号的组合&#xff0c;要求每个组合的左括号和右括号匹配。 解决方案&#xff1a; ​ 使用回溯法。因为要生成n个左括号和n个右括号&#xff0c;故需要走2n步&#xff0…

LabVIEW专栏三、探针和断点

探针和断点是LabVIEW调试的常用手段&#xff0c;该节以上一节的"测试耗时"为例 探针可以打在有线条的任何地方&#xff0c;打上后&#xff0c;经过这条线的所有最后一次的数值都会显示在探针窗口。断点可以打在程序框图的所有G代码对象&#xff0c;包括结构&#xf…

浅谈通信校验码及 CRC 校验

一、信息论中的 CRC 我上大学的时候,有一门课程叫做信息论,我就是从这个课程中学到的 CRC 校验这个词的,没错,当时学完整个课程后,CRC 对我来说依然只是一个单薄的缩写词语,全称我都不知道是啥。 CRC 全称是循环冗余校验(Cyclic Redundancy Check)。 说到信息论中的…

28. BI - 图论工具和算法, 社区发现以及最短路径

本文为 「茶桁的 AI 秘籍 - BI 篇 第 28 篇」 Hi, 我是茶桁. 咱们已经讲了好几节课的 PageRank, 也了解了 PageRank 的原理就是基于图论. 之前我有给讲过, 在「数学篇」中我们有用四个章节来详细的讲解图论的相关知识。其中包括&#xff1a; 23. 图论 - 图的由来和构成24. 图…

Go实现一个并发下载器

本文将实现一个并发的文件下载器&#xff0c;可以在不重新启动整个下载的情况下处理错误。这将通过分块下载文件来实现。 Idea 首先从发出下载的HTTP请求开始&#xff0c;当采用HEAD option来请求要下载的文件时&#xff0c;在某些服务器上&#xff0c;返回的标头之一是Conte…