PSoc62™开发板之PWM呼吸灯

实验目的

利用PWM动态调节输出功率达到控制LED呼吸变化的效果

实验准备

  • PSoc62™开发板(开发板已经板载LED)

板载资源

板载有多少pwm

创建工程例程,在libraries/HAL_Drivers/drv_pwm.h中查看BSP支持的pwm数量及对应的GPIO,可以看到一共有8路pwm

/*
 * Copyright (c) 2006-2023, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2022-07-13     Rbb666       first version
 */

#ifndef __PWM_CONFIG_H__
#define __PWM_CONFIG_H__

#include <rtthread.h>
#include <board.h>

#ifdef __cplusplus
extern "C"
{
#endif

#define MAX_PERIOD 65535

#ifdef BSP_USING_PWM0
#ifndef PWM0_CH0_PORT0_CONFIG
#define PWM0_CH0_PORT0_CONFIG       \
    {                               \
        .name = "pwm0",             \
        .channel = 0,               \
        .gpio = GET_PIN(0, 0),      \
    }
#endif /* PWM0_CH7_PORT2_CONFIG */

#ifndef PWM0_CH7_PORT2_CONFIG
#define PWM0_CH7_PORT2_CONFIG       \
    {                               \
        .name = "pwm0",             \
        .channel = 7,               \
        .gpio = GET_PIN(2, 2),      \
    }
#endif /* PWM0_CH7_PORT2_CONFIG */

#ifndef PWM0_CH7_PORT5_CONFIG
#define PWM0_CH7_PORT5_CONFIG       \
    {                               \
        .name = "pwm0",             \
        .channel = 7,               \
        .gpio = GET_PIN(5, 6),      \
    }
#endif /* PWM0_CH7_PORT5_CONFIG */

#ifndef PWM0_CH7_PORT7_CONFIG
#define PWM0_CH7_PORT7_CONFIG       \
    {                               \
        .name = "pwm0",             \
        .channel = 7,               \
        .gpio = GET_PIN(7, 7),      \
    }
#endif /* PWM0_CH7_PORT7_CONFIG */

#ifndef PWM0_CH7_PORT9_CONFIG
#define PWM0_CH7_PORT9_CONFIG       \
    {                               \
        .name = "pwm0",             \
        .channel = 7,               \
        .gpio = GET_PIN(9, 4),      \
    }
#endif /* PWM0_CH7_PORT9_CONFIG */

#ifndef PWM0_CH7_PORT10_CONFIG
#define PWM0_CH7_PORT10_CONFIG      \
    {                               \
        .name = "pwm0",             \
        .channel = 7,               \
        .gpio = GET_PIN(10, 2),     \
    }
#endif /* PWM0_CH7_PORT10_CONFIG */

#ifndef PWM0_CH7_PORT12_CONFIG
#define PWM0_CH7_PORT12_CONFIG      \
    {                               \
        .name = "pwm0",             \
        .channel = 7,               \
        .gpio = GET_PIN(12, 6),     \
    }
#endif /* PWM0_CH7_PORT12_CONFIG */

#ifndef PWM0_CH3_PORT13_CONFIG
#define PWM0_CH3_PORT13_CONFIG      \
    {                               \
        .name = "pwm0",             \
        .channel = 3,               \
        .gpio = GET_PIN(13, 7),     \
    }
#endif /* PWM0_CH3_PORT13_CONFIG */
#endif /* BSP_USING_PWM0 */

#ifdef __cplusplus
}
#endif

#endif

pwm IO资源

编号channelgpio
pwm00P0.0
pwm07P2.2
pwm07P5.6
pwm07P7.7
pwm07P9.4
pwm07P10.2
pwm07P12.6
pwm03P13.7

电路图

在这里插入图片描述

这次实验用到的是pwm0 channel0,对应P0.0,也就是之前实验用的MCU_USER_LED1

使能PWM

在创建的RT-Thread串口工程中打开RT-Thread Settings,点击右边的箭头<<进入详细页,使用前先使能pwm0,如下图所示

在这里插入图片描述

程序设计

编码实现

#include <rtthread.h>
#include <rtdevice.h>

#include <rtthread.h>
#include "board.h"
#include <rtdevice.h>

#define PWM_LED_DEV     "pwm0"
#define PWM_CHANNEL     0

int main(void)
{
    struct rt_device_pwm *pwm_dev = RT_NULL;
    rt_uint32_t period, pulse, up;

    int gap = 2000;
    int sec = 5;

    period = 500000;
    up = 1;
    pulse = 0;

    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_LED_DEV);
    if (pwm_dev == RT_NULL)
    {
        rt_kprintf("pwm device (%s) not found!\n", PWM_LED_DEV);
        return RT_ERROR;
    }

    rt_pwm_set(pwm_dev, PWM_CHANNEL, period, pulse);
    rt_pwm_enable(pwm_dev, PWM_CHANNEL);

    while (1)
    {
        rt_thread_mdelay(sec);
        if (up)
        {
            pulse += gap;
        }
        else
        {
            pulse -= gap;
        }

        if (pulse >= period)
        {
            up = 0;
        }
        if (0 >= pulse)
        {
            up = 1;
        }

        rt_pwm_set(pwm_dev, PWM_CHANNEL, period, pulse);
    }
}

rt_pwm_set可以设定指定PWM通道的周期和占空参数

rt_pwm_enable用于使能PWM设备

实验效果

运行效果如下,LED灯明亮交替地闪烁,类似于呼吸的效果

PSoc62™开发板之PWM呼吸灯

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

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

相关文章

自动修复vcruntime140.dll丢失的解决办法,快速解决dll文件问题

在使用电脑时也会有不少用户都遇到vcruntime140.dll丢失的情况&#xff0c;那么有什么办法可以解决vcruntime140.dll丢失呢&#xff1f;今天将给大家分享一些关于vcruntime140.dll丢失的解决办法&#xff0c;从自动修复和手动修复两个方向给大家分析希望能够帮助到大家。 一.vc…

基于 Validator 类实现 ParamValidator,用于校验函数参数

目录 一、前置说明1、总体目录2、相关回顾3、本节目标 二、操作步骤1、项目目录2、代码实现3、测试代码4、日志输出 三、后置说明1、要点小结2、下节准备 一、前置说明 1、总体目录 《 pyparamvalidate 参数校验器&#xff0c;从编码到发布全过程》 2、相关回顾 使用 TypeV…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票创建后端实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

系列四十六、idea中安装Tomcat7插件

一、idea中安装Tomcat7插件 1.1、描述 学习SpringMVC开发时&#xff0c;代码写完之后&#xff0c;一般会配置一个外置的Tomcat用于启动容器&#xff0c;其实还可以通过插件的方式进行启动&#xff0c;这样就不用再配置外部的Tomcat了&#xff0c;具体怎么配置的呢&#xff1f;…

Spring Cloud + Vue前后端分离-第11章 用户管理与登录

源代码在GitHub - 629y/course: Spring Cloud Vue前后端分离-在线课程 Spring Cloud Vue前后端分离-第11章 用户管理与登录 11-1 增加用户管理功能 用户表设计与基本代码生成 1.用户管理与登录&#xff1a;用户表设计与基本代码生成 all.sql generatorConfig.xml Server…

网络编程套接字(Socket)

文章目录 1 重点知识2 预备知识2.1 理解源IP地址和目的IP地址2.2 认识端口号2.3 理解 "端口号" 和 "进程ID"2.4 理解源端口号和目的端口号2.5 认识TCP协议2.6 认识UDP协议2.7 网络字节序 3 socket编程接口3.1 socket 常见API3.2 sockaddr结构 4 简单的UDP网…

安卓(雷电)模拟器清除屏幕密码

1、设置磁盘可写 启动模拟器&#xff0c;然后在模拟器的设置界面&#xff0c;设置磁盘共享为可写入&#xff0c;重启模拟器&#xff0c;如下图&#xff1a; 2、找到模拟器目录 返回桌面&#xff0c;右键模拟器图标&#xff0c;打开文件所在目录&#xff0c;如下图&#xff1a…

应用在植物生长照明中的LED照明灯珠

植物照明是指利用LED植物照明灯来促进植物生长。植物照明一般采用LED植物生长灯&#xff0c;是一种以LED&#xff08;发光二极管&#xff09;为发光体&#xff0c;满足植物光合作用所需光照条件的人造光源。LED植物生长灯对植物的生长有很大的好处&#xff0c;能促进壮根、助长…

IPV6学习记录

IPV6的意义 从广义上来看IPV6协议包含的内容很多: IPV6地址的生成与分配 IPV6的报头的功能内容 IPV4网络兼容IPV6的方案 ICMPv6的功能(融合了arp和IGMP功能) IPV6的路由方式 ipv6的诞生除了由于ipv4的地址枯竭外&#xff0c;很大程度上也是因为ipv4多年的发展产生了很多…

Redis 内存淘汰策略有哪些?过期数据如何删除?

Redis 在面试中出现的概率非常大&#xff0c;毕竟后端项目如果用到分布式缓存的话&#xff0c;一般用的都是 Redis。目前&#xff0c;还没有出现一个能够取代 Redis 的分布式缓存解决方案。 这篇文章中&#xff0c;我会分享几道 Redis 内存管理相关的问题&#xff0c;都很常见…

2023年全国职业院校技能大赛(高职组)“云计算应用”赛项赛卷⑤

2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷5 目录 需要竞赛软件包环境以及备赛资源可私信博主&#xff01;&#xff01;&#xff01; 2023年全国职业院校技能大赛&#xff08;高职组&#xff09; “云计算应用”赛项赛卷5 模块一 …

【中国联通协办】第六届下一代数据驱动网络国际学术会议(NGDN 2024)

第六届下一代数据驱动网络国际学术会议&#xff08;NGDN 2024&#xff09; The Sixth International Conference on Next Generation Data-driven Networks 基于前几届在英国埃克塞特 (ISPA 2020) 、中国沈阳 (TrustCom 2021) 和中国武汉(IEEETrustCom-2022)成功举办的经验&a…

TF-IDF(Term Frequency-Inverse Document Frequency)算法详解

目录 概述 术语解释 词频&#xff08;Term Frequency&#xff09; 文档频率&#xff08;Document Frequency&#xff09; 倒排文档频率&#xff08;Inverse Document Frequency&#xff09; 计算&#xff08;Computation&#xff09; 代码语法 代码展示 安装相关包 测…

ChatGPT知名开源项目有哪些

ChatGPT-Next-Web&#xff1a;基于ChatGPT API的私有化部署网页聊天系统 主要功能&#xff1a; 只需在 1 分钟内即可在 Vercel 上一键免费部署&#xff0c;支持私有服务器快速部署&#xff0c;支持使用私有域名支持ChatGPT3.5、4等常见模型Linux/Windows/MacOS 上的紧凑型客户…

vulhub中的Apache HTTPD 多后缀解析漏洞详解

Apache HTTPD 多后缀解析漏洞 1.查看python版本 这里python版本很重要&#xff0c;因为版本过低可能会导致后面的结果运行不成功 这里我就遇到了因为版本过低而执行不了docker-compose up -d的情况 查看python版本 cd /usr/bin ls -al python* 当版本过低时安装高版本的 …

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -创建图文投票实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

论文封面表格制作

原文参考&#xff1a;【【论文排版】论文封面完美对齐 强迫症重度患者的经验分享】https://www.bilibili.com/video/BV18f4y1p7hc?vd_source046491acdcff4b39fed20406b36a93e2 视频里up主介绍很详细。我自己也记录一下。 介绍一下如何完成论文封面信息的填写。 创建一个3列…

C++并发编程实战第2版笔记

文章目录 p19 某个线程只可以join()一次p22 只有当joinable()返回true时才能调用detach()P21 在std::thread对象析构前&#xff0c;必须明确是等待还是分离线程P25 移动语义P25 将类的成员函数设定为线程函数 p19 某个线程只可以join()一次 只要调用了join()&#xff0c;隶属于…

Vue-11、Vue计算属性

Vue计算属性是Vue实例的属性&#xff0c;用来根据已有的数据进行计算得到新的数据。计算属性的值会根据它的依赖缓存起来&#xff0c;在依赖没有发生改变时直接返回缓存的值&#xff0c;提高了性能。 计算属性的定义方式为在Vue实例中使用computed关键字&#xff0c;并将计算属…

次氯酸HClO荧光探针的结构特点-星戈瑞单品

次氯酸荧光探针是一种用于检测次氯酸盐&#xff08;ClO⁻&#xff09;存在的化合物&#xff0c;通常被设计为荧光分子&#xff0c;其荧光性质在与次氯酸反应时发生变化。这类荧光探针的设计通常考虑到以下结构特点&#xff1a; **1.含有感应基团&#xff1a;**探针分子通常包含…