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

news/2024/5/18 13:17:24 标签: 单片机, udp, stm32

【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);

在这里插入图片描述


http://www.niftyadmin.cn/n/5468242.html

相关文章

linux虚拟机上安装,使用以及远程连接mysql

1. 安装mysql 5.7 1) 首先更新软件源 sudo apt-get update 2) 安装MySQL数据库软件 ​ sudo apt-get install mysql-server 3) 安装MySQL数据库管理软件​ sudo apt-get install mysql-client 4) 安装MySQL数据库客户端&#xff0c;用户访问数据库 sudo apt-get install…

Flink SQL系列之:解析Debezium数据格式时间字段常用的函数

Flink SQL系列之:解析Debezium数据格式时间字段常用的函数 一、FROM_UNIXTIME二、DATE_FORMAT三、TO_DATE四、CAST五、TO_TIMESTAMP_LTZ六、CONVERT_TZ七、FROM_UNIXTIME八、TO_TIMESTAMP九、常见用法案例1.案例一2.案例二3.案例三4.案例四5.案例五

24 个Intellij IDEA好用插件

24 个Intellij IDEA好用插件 一. 安装插件 Codota 代码智能提示插件 只要打出首字母就能联想出一整条语句&#xff0c;这也太智能了&#xff0c;还显示了每条语句使用频率。 原因是它学习了我的项目代码&#xff0c;总结出了我的代码偏好。 Key Promoter X 快捷键提示插件 …

阿里云语音合成TTS nodejs sdk接入示例

npm i alicloud/pop-core -S实例化客户端 // 官方文档&#xff1a;SDK方式获取Token_智能语音交互(ISI)-阿里云帮助中心 const RPCClient require(alicloud/pop-core).RPCClient const ttsClient new RPCClient({accessKeyId: xxx, // 阿里云申请accessKeySecret: xxx, // 阿…

unity shader学习练笔日记(二)

1、逐顶点的漫反射光照&#xff08;兰伯特光照模型&#xff09; Shader "Unity Shaders Study/Day Two/DiffuseVertexLevel" {Properties{_Diffuse("Diffuse", Color) (1, 1, 1, 1)}SubShader{Pass{//LightMode Pass标签中的一种&#xff0c;用于定义改P…

Go语言如何处理整数溢出

如果不了解在Go语言中如何处理整数溢出问题,可能会导致非常严重的错误。下面我们来讨论这个主题。在讨论之前,我们需要记住一些与整数有关的概念。 1. 概念 Go总共提供了10种整数类型。有4种有符号整数类型和4种无符号整数类型,具体如下表所示。 有符号整数无符号整数int8 …

下载页面上的视频

引言&#xff1a;有些页面上的视频可以直接右键另存为或者F12检索元素找到视频地址打开后保存&#xff0c;但有些视频页面是转码后的视频&#xff0c;不能直接另存为视频格式&#xff0c;可以参考下本方法 以该页面视频为例&#xff1a;加载中...点击查看详情https://wx.vzan.c…

Spring Cloud Gateway使用K8S (Kubernetes)的云原生服务发现

Spring Cloud Gateway通常使用注册中心作为服务发现&#xff0c;但在Kubernetes里面&#xff0c;由于K8S已经集成了服务注册与发现功能&#xff0c;不必要再另外使用注册中心了&#xff0c;而且&#xff0c;还可以使用K8S的服务监控对服务进行监控。 本来按照网上教程&#xff…