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

SWM181按键控制双通道PWM固定占空比输出

SWM181按键控制双通道PWM固定占空比输出


  • 📌SDK固件包:https://www.synwit.cn/kuhanshu_amp_licheng/

  • 🌼开发板如下图:
    在这里插入图片描述

  • ✨注意新手谨慎选择作为入门单片机学习。目前只有一个简易的数据手册和SDK包,又没有参考手册,就目前的资料来看,数据手册虽然可以帮助到你了解该芯片的外设功能以及相关寄存器介绍,但是SDK包又是使用的库函数,关键是很多都没有注释,也没有相关的库函数手册,一些被定义的结构体参数都不知道控制什么的。

typedef struct {__IO uint32_t CLKDIV;uint32_t RESERVED[3];__IO uint32_t FORCEH;__IO uint32_t ADTRG0A;__IO uint32_t ADTRG0B;__IO uint32_t ADTRG1A;__IO uint32_t ADTRG1B;__IO uint32_t ADTRG2A;__IO uint32_t ADTRG2B;__IO uint32_t ADTRG3A;__IO uint32_t ADTRG3B;uint32_t RESERVED2[7];__IO uint32_t HALT;						//刹车控制__IO uint32_t CHEN;__IO uint32_t IE;__IO uint32_t IF;__IO uint32_t IMSK;__IO uint32_t IRAWST;
} PWMG_TypeDef;

🎉面对上面的PWMG_TypeDef结构体,除了一个刹车成员参数注明了,我不知道有多少人知道其它参数具体的意思,更别说使用了,这可能是编写代码的人自需要自己知道就可以了。这样的芯片怎么让开发者深入的展开学习和探索。😪,大家都说支持国产芯片,拿什么来支持你,这毕竟不能买来当饭吃,而是要开发才能使用的。 吐槽贵吐槽,既然展开了一页,就自己去翻阅数据手册慢慢找。

📋本案例基于官方SDK案例中的PWM案例和按键控制案例相结合,采用双按键控制:一个按键控制PWM刹车,另一个按键负责启动PWM。

📑SWM181 PWM介绍

  • 4 组 16 位宽 PWM 控制,最多可产生 8 路 PWM 信号
    ⚫ 支持互补、中心对称、单步模式
    ⚫ 提供高电平起始中断及周期结束中断
    ⚫ 支持硬件死区设置
    ⚫ 可选择初始输出电平选择
    ⚫ 支持刹车功能 。
  • PWM 模块提供了 8 路(4 组)输出,支持独立、互补、中心对称等模式,支持死区生
    成及初始电平配置。

📜PWM 模块建议按照如下顺序配置

  • 注意:分频寄存器需要在初始电平设置完成后进行配置。
  • PWM 模块建议按照如下顺序配置:
  1. 配置初始电平
  2. 配置周期及中断相关寄存器
  3. 初始化时钟分频
  4. 引脚功能切换
  5. PWM 使能

刹车与暂停功能

  • PWM 发生器模块支持外部信号输入与内部软件操作对输出进行暂停。
    软件可以通过配置 FORCEH 寄存器,使对应 PWM 通道引脚输出为 1。此时,PWM 模块计数依然继续进行,当禁能该寄存器对应位时,PWM 可继续输出。波形如下图所示:
    在这里插入图片描述
    外部信号可通过 PWM_BREAK 引脚输入指定电平对 PWM 模块进行刹车操作,使用前
  • 🛠配置如下:
    • 配置 PORTCON 模块中 INEN 寄存器使能引脚输入功能
    • 通过 PORT_SEL 寄存器将引脚切换为数字功能
    • 通过 FUNMUX 寄存器将引脚配置为 PWM_BREAK 功能
    • 对 HALT 寄存器进行设置,配置刹车输入有效电平、刹车过程中输出电平、刹车后 PWM 是否继续计数、该功能影响的通道
    • 配置 HALT 寄存器 BIT[0]进行使能。使能后,当外部输入指定电平时,对应通道执行刹车功能
    • 刹车电平恢复后,将根据 HALT 寄存器配置决定 PWM 波形是否继续输出.

寄存器映射

在这里插入图片描述
在这里插入图片描述

📝测试代码

/*
功能说明:在PA4上产生频率600Hz占空比为25%的方波;
在PA5上产生频率600Hz占空比为50%的方波,
PA6为PWM刹车,PA14为重新启动PWM输出*/#include "SWM181.h"int main(void)
{PWM_InitStructure  PWM_initStruct;SystemInit();PWM_initStruct.clk_div = PWM_CLKDIV_4;		//时钟周期配置F_PWM = 24M/4 = 6MPWM_initStruct.mode = PWM_MODE_INDEP;		//配置 PWM 输出模式:A路和B路独立输出					PWM_initStruct.cycleA = 10000;				//6M/10000 = 600Hz			PWM_initStruct.hdutyA =  2500;				//2500/10000 = 25%PWM_initStruct.deadzoneA = 10;		//死区PWM_initStruct.initLevelA = 1;PWM_initStruct.cycleB = 10000;//B路周期PWM_initStruct.hdutyB =  5000;				//5000/10000 = 50%PWM_initStruct.deadzoneB = 10;//B路死区时长,取值0--63PWM_initStruct.initLevelB = 1;//B路初始输出电平,0 低电平    1 高电平PWM_initStruct.HEndAIEn = 0;//A路高电平结束中断使能PWM_initStruct.NCycleAIEn = 0;//A路新周期开始中断使能PWM_initStruct.HEndBIEn = 0;//B路高电平结束中断使能PWM_initStruct.NCycleBIEn = 0;//B路新周期开始中断使能PWM_Init(PWM1, &PWM_initStruct);PORT_Init(PORTA, PIN4, FUNMUX_PWM1A_OUT, 0);//端口引脚功能选择PORT_Init(PORTA, PIN5, FUNMUX_PWM1B_OUT, 0);PWM_Start(PWM1, 1, 1);//启动PWM输出GPIO_Init(GPIOA, PIN14, 0, 1, 0, 0);			//输入,上拉使能,接KEY/* 刹车功能测试 */
#if 1PORT_Init(PORTA, PIN6, FUNMUX_PWM_BREAK, 1);//PA6输入使能	PWMG->HALT =(1 << PWMG_HALT_EN_Pos) |(1 << PWMG_HALT_PWM1_Pos)    |(1 << PWMG_HALT_STOPCNT_Pos) |(0 << PWMG_HALT_VALIDI_Pos)  |(0 << PWMG_HALT_VALIDO_Pos);	// PWM_BREAK电平位低时,PWM1输出变成低
#endifwhile(1){if(GPIO_GetBit(GPIOA, PIN14) == 0)		//按键被按下{PWM_Start(PWM1, 1, 1);}}
}

相关文章:

SWM181按键控制双通道PWM固定占空比输出

SWM181按键控制双通道PWM固定占空比输出&#x1f4cc;SDK固件包&#xff1a;https://www.synwit.cn/kuhanshu_amp_licheng/ &#x1f33c;开发板如下图&#xff1a; ✨注意新手谨慎选择作为入门单片机学习。目前只有一个简易的数据手册和SDK包&#xff0c;又没有参考手册&am…...

pygame函数命令

pygame.mixer.music.load() —— 载入一个音乐文件用于播放 pygame.mixer.music.play() —— 开始播放音乐流 pygame.mixer.music.rewind() —— 重新开始播放音乐 pygame.mixer.music.stop() —— 结束音乐播放 pygame.mixer.music.pause() —— 暂停音乐播放 pygame.mixer.mu…...

异步循环

业务 &#xff1a; 批量处理照片 &#xff0c; 批量拆建 &#xff0c; 裁剪一张照片需要异步执行等待 &#xff0c; 并且是批量 所以需要用到异步循环 裁剪图片异步代码 &#xff1a; 异步循环 循环可以是 普通 for 、 for of 、 for in 不能使用forEach ,这里推荐 for…...

Vue表单提交与数据存储

学习内容来源&#xff1a;视频p5 书接目录对页面重新命名选择组件后端对接测试接口设置接口前端调用对页面重新命名 将之前的 Page1 Page2 进行重新命名&#xff0c;使其具有实际意义 Page1 → BookManage &#xff1b; Page2 → AddBook 并且 /router/index.js 中配置页面信息…...

API网关(接入层之上业务层之上)以及业务网关(后端服务网关)设计思路(二)

文章目录 流量网关业务网关常见网关对比1. OpenResty2. KongKong解决了什么问题Kong的优点以及性能Kong架构3. Zuul1.0过滤器IncomingEndpointOutgoing过滤器类型Zuul 1.0 请求生命周期4. Zuul2.0Zuul 与 Zuul 2 性能对比5. Spring Cloud GatewaySpring Cloud Gateway 底层使用…...

有些笑话,外行人根本看不懂,只有程序员看了会狂笑不止

我一直都觉得我们写代码的程序员与众不同&#xff0c;就连笑话都跟别人不一样。 如果让外行人来看我们一些我们觉得好笑的东西&#xff0c;他们根本不知道笑点在哪里。 不信你来瞧瞧&#xff0c;但凡有看不懂的地方&#xff0c;说明你的道行还不够深。 1.大多数人开始学编程时…...

企业电子招投标采购系统——功能模块功能描述

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…...

Presto 在美图的实践

导读&#xff1a;本文的主题是Presto高性能引擎在美图的实践&#xff0c;首先将介绍美图在处理ad-hoc场景下为何选择Presto&#xff0c;其次我们如何通过外部组件对Presto高可用与稳定性的增强。然后介绍在美图业务中如何做到合理与高效的利用集群资源&#xff0c;最后如何利用…...

Molecule:使用Jetpack Compose构建StateFlow流

Molecule:使用Jetpack Compose构建StateFlow流 看下面的jetpack compose片段&#xff1a; Composable fun MessageCard(message: Message) {Column {Text(text message.author)Text(text message.body)} }这段代码最有趣的部分是它实际上是reactive。其反应性为 通过Composa…...

计算机组成原理(2.2)--系统总线

目录 一、总线结构 1.单总线结构 1.1单总线结构框图 ​编辑1.2单总线性能下降的原因 2.多总线结构 2.1双总线结构 2.2三总线结构 2.3四总线结构 ​编辑 二、总线结构举例 1. 传统微型机总线结构 2. VL-BUS局部总线结构 3. PCI 总线结构 4. 多层 PCI 总线结构 …...

如何使用dlinject将一个代码库实时注入到Linux进程中

关于dlinject dlinject是一款针对Linux进程安全的注入测试工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以在不使用ptrace的情况下&#xff0c;轻松向正在运行的Linux进程中注入一个共享代码库&#xff08;比如说任意代码&#xff09;。之所以开发该工具&#…...

Docker安装Cassandra数据库,在SpringBoot中连接Cassandra

简介 Apache Cassandra是一个高度可扩展的高性能分布式数据库&#xff0c;旨在处理许多商用服务器上的大量数据&#xff0c;提供高可用性而没有单点故障。它是NoSQL数据库的一种。首先让我们了解一下NoSQL数据库的作用。 NoSQL 数据库 NoSQL数据库&#xff08;有时称为“Not …...

Linux常用命令总结(建议收藏)

Linux常用命令总结(建议收藏) 这里收集了一些常用命令以便需要时查看&#xff0c;欢迎作补充。&#xff08;这里的提到操作都默认以CentOS系统为基础&#xff09; 文件管理 目录操作 切换目录 cd 查看目录 ls -l 列出文件详细信息 或者直接ll-a 列出当前目录下所有文件及…...

【Java】P1 基础知识与碎碎念

Java 基础知识 碎碎念安装 Intellij IDEAJDK 与 JREJava 运行过程Java 系统配置Java 运行过程Java的三大分类前言 本节内容主要围绕Java基础内容&#xff0c;从Java的安装到helloworld&#xff0c;什么是JDK与什么是JRE&#xff0c;系统环境配置&#xff0c;不深入Java代码知识…...

Jackson CVE-2017-7525 反序列化漏洞

0x00 前言 Jackson 相对应fastjson来说利用方面要求更加苛刻&#xff0c;默认情况下无法进行利用。 同样本次的调用链也可以参考fastjson内容&#xff1a;Java代码审计——Fastjson TemplatesImpl调用链 相关原理&#xff0c;可以参考&#xff1a;Jackson 反序列化漏洞原理 …...

【2023】DevOps、SRE、运维开发面试宝典之Kubernetes相关面试题

文章目录 1、Kubernetes集群的特点?2、Kubernetes集群各节点的组件有那些?分别有什么作用?3、简述Kubernetes集群的工作原理4、什么是Pod资源5、Label标签的作用?6、Deployment控制器与Statfulset控制器的区别?7、Pod拉取镜像的三种策略?8、简述Pod的生命周期9、Pod的生命…...

【算法】PatchMatch立体匹配算法_原理解析

目录 前言 原理解析 1.倾斜支持窗口&#xff08;Slanted Support Windows&#xff09; 什么是视差平面&#xff1f; 为什么视差和像素坐标点之间的关系可以解释为平面方程&#xff1f; 视差平面的通用参数方程和点加法向量方程 什么是倾斜支持窗口&#xff1f; 2.基于倾…...

【同步工具类:CyclicBarrier】

同步工具类:CyclicBarrier介绍源码分析CyclicBarrier 基于ReetrantLock Condition实现。构造函数await() 函数业务场景方案一:代码实现测试截图方案二代码实现测试打印总结介绍 官方介绍: 一种同步辅助工具&#xff0c;允许一组线程都等待对方到达共同的障碍点。CyclicBarrie…...

Android 12.0 Settings 去掉打开开发者模式和USB调试模式的广播

1.概述 在12.0的系统产品rom定制化开发中,在系统Settings的开发者模式中,打开开发者模式和usb调试模式都会发出开发者模式改变广播和usb调试模式改变广播, 项目开发功能需要要求去掉这两个广播以免影响其他功能,所以就要看哪里发出广播来屏蔽掉就可以了,这样就可以去掉开发…...

OSI七层网络模型和TCP/IP四层网络模型的异同

文章目录前言一、什么是OSI&#xff1f;二、什么是TCP/IP四层模型&#xff1f;三、OSI七层网络模型和TCP/IP四层网络模型的关系&#xff1a;四、 OSI七层和TCP/IP的区别&#xff1a;前言 本节系统总结&#xff1a; 一、什么是OSI&#xff1f;二、什么是TCP/IP四层模型&#xf…...

告别重复点击!淘金币自动化脚本让你每天多出20分钟自由时间

告别重复点击&#xff01;淘金币自动化脚本让你每天多出20分钟自由时间 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/gh_mirrors/ta/taojinbi …...

Dify数据库查询插件:让AI应用轻松连接业务数据的实战指南

1. 项目概述与核心价值 如果你正在使用 Dify 构建企业级 AI 应用&#xff0c;并且经常需要让 AI 助手去查询数据库里的数据——比如让 LLM 帮你分析销售报表、查找用户信息或者生成业务洞察——那么你很可能遇到过这样的痛点&#xff1a;Dify 本身并不直接支持数据库连接。你需…...

毕业设计:基于SpringBoot+Vue大学生租房平台 (源码)

目录 一、项目背景 二、技术介绍 三、功能介绍 四、代码设计 五、系统实现 一、项目背景 近年来&#xff0c;随着我国高等教育事业的持续发展&#xff0c;在校大学生及刚步入社会的毕业生数量逐年攀升。据统计&#xff0c;2024年全国高校毕业生规模已突破1100万人&#x…...

3步免费获取公式识别神器:img2latex-mathpix本地部署终极指南

3步免费获取公式识别神器&#xff1a;img2latex-mathpix本地部署终极指南 【免费下载链接】img2latex-mathpix Mathpix has changed their billing policy and no longer has free monthly API requests. This repo is now archived and will not receive any updates for the …...

3步在Windows上安装APK应用:告别安卓模拟器的轻量级解决方案

3步在Windows上安装APK应用&#xff1a;告别安卓模拟器的轻量级解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 想在Windows电脑上直接运行Android应用却不想安…...

如何做谷歌SEO排名优化?搞定高质量外链的4种高成功率技巧

很多刚接触谷歌SEO的朋友发现&#xff0c;自己的网站内容写了不少&#xff0c;可排名始终在搜索结果的五六页开外晃悠。排除掉网站技术层面的小毛病&#xff0c;最让大家头疼的往往就是外链。你可以把外链看作是其他网站给你的“信任投票”&#xff0c;如果投给你的都是些街边的…...

长期使用Taotoken Token Plan套餐带来的成本控制感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 长期使用Taotoken Token Plan套餐带来的成本控制感受 1. 从按需付费到预算规划 对于个人开发者或小型团队而言&#xff0c;大模型…...

STM32实战:用HAL库搞定RS485 Modbus液压传感器数据采集(附自动收发电路避坑)

STM32实战&#xff1a;HAL库驱动RS485 Modbus液压传感器全流程解析 液压系统压力监测的稳定性往往取决于传感器数据采集的可靠性。在工业现场&#xff0c;RS485总线搭配Modbus RTU协议已成为液压传感器数据传输的黄金标准。本文将深入探讨基于STM32 HAL库的完整解决方案&#x…...

Guitar Pro 8.1.5作为吉他爱好者的练琴神器,其跨平台支持与强大功能值得重点关注。本评测聚焦其核心优势与操作要点,为吉他学习者与原创音乐人提供高效解决方案。跨系统兼容性Guit

Guitar Pro 8.1.5作为吉他爱好者的练琴神器&#xff0c;其跨平台支持与强大功能值得重点关注。本评测聚焦其核心优势与操作要点&#xff0c;为吉他学习者与原创音乐人提供高效解决方案。跨系统兼容性 Guitar Pro 8.1.5同时支持macOS与Windows系统&#xff0c;mac用户无需转战Wi…...

基于OpenClaw的GitHub趋势智能监控器:自动化追踪与AI摘要推送

1. 项目概述&#xff1a;一个为开发者打造的GitHub趋势智能监控器 作为一名长期泡在GitHub上的开发者&#xff0c;我深知每天手动刷“Trending”页面有多低效。热门项目层出不穷&#xff0c;但真正值得关注的往往就那么几个&#xff0c;而且很容易被淹没在信息流里。直到我遇到…...