LPC804开发(5.PWM使用)

1.前言

早上花了点时间学习了一下官方的例程,总的来说PWM输出还是比较简单的。

2.基本使用

首先在开始前我不建议大家照搬官方的程序,因为官方的程序非常复杂,其实官方自己有更简单的方法但是SDK里没有用,我也不知道为什么,SDK没有更新?

这是程序本体,下面我来一个个介绍

    /* Enables clock for switch matrix.: enable */
    CLOCK_EnableClock(kCLOCK_Swm);

    /* TimerMatchChannel1 connect to P0_12 */
    SWM_SetMovablePinSelect(SWM0, kSWM_T0_MAT_CHN3, kSWM_PortPin_P0_12);

    /* Disable clock for switch matrix. */
    CLOCK_DisableClock(kCLOCK_Swm);

    CTIMER_GetDefaultConfig(&config);

    CTIMER_Init(CTIMER0, &config);

    CTIMER_SetupPwm(CTIMER0,kCTIMER_Match_2,kCTIMER_Match_3,25,1000,CLOCK_GetFreq(kCLOCK_CoreSysClk),0);

//    CTIMER_UpdatePwmDutycycle(CTIMER0,kCTIMER_Match_2,kCTIMER_Match_3,45);

    CTIMER_StartTimer(CTIMER0);

9565441e98eb4dbb84d350f18c773b0d.png 

 首先,前三行是对端口的初始化。我们将ctimer0匹配3与0_12挂钩。两个匹配关系如下

75080094ef1e488a9f1381157b5407e6.png

8a024df9fbb046df9fc37b1f1b809b08.png

因此如果大家要输出管脚,则改的是后面的。

8cca3e529fa24df4b9dd9523f90464a6.png

然后是获取默认配置,将配置投入进定时器,主要设置分频,一般也不用改。

 

 

958fea3858b24bba995d055e54e4061d.png 这一句话是配置PWM的核心,我们来主要来分析一下,先看一下函数原型。

644dafd658db4569b180bd42cc105780.png

第一个参数是定时器,ctimer0,没啥好说的。第二个参数是指定控制PWM周期的通道,然后是指定输出通道。这里注意一下,周期通道与输出通道不能一样,在函数本体里也有这样一句话

1a1b9eae46c0410d89cc0eb0913f6113.png

当两个值一样了,就认为失败了。

我们继续分析函数,第三个是默认占空比0~100,不能有小数。第四个参数是频率,单位是Hz。然后是定时器的时钟频率,我这里是15Mhz。最后一个参数,是否开启中断(0:关闭/1:开启)

我再分析一下我写入的函数。

CTIMER_SetupPwm(CTIMER0,kCTIMER_Match_2,kCTIMER_Match_3,25,1000,CLOCK_GetFreq(kCLOCK_CoreSysClk),0);

首先指定定时器0输出;匹配2作为周期通道;匹配3作为输出通道;默认占空比是25%;输出频率是1Khz;定时器频率是核心时钟,也就是15000000;不用开启中断。

等这都设置完成,开启定时器就可以了。

b013c6f495a74d69a4386635ea4af972.png

下面我们来验证一下

2c13837dc5e243a08b8b77ca1745df00.jpeg

79ab057e629e497b985c1ce4dbc36aac.png

可以看到输出符合我们的预期。

而官方的程序比较复杂,完全不建议大家去研究,效果是相同的。

2.1变占空比

下面我再说一说怎么改变占空比

bee26c994fae40c0ae5c682e7e48eab7.png

官方给我们提供了CTIMER_UpdatePwmDutycycle这个函数,用法也比较简单

eea7ec50cbed4893bd73da722f545e38.png

依然是timer0,中间两个通道照抄初始化时的通道,最后一个是你想输出的占空比。我们再来测试一下。

fd9087048e3d4f05882f5f596b6a46a0.png

可以看到,占空比确实是修改了。

2.2变频

除了占空比,频率也是可变的,但是这个频率变起来比较复杂,会涉及到计算。

首先,我们PWM的频率是怎么来的?PWM的频率是根据匹配2来设置的,这里我借用正点原子的教程来解释。匹配值也就是ctimer频率除以想要的频率,最后记得减一,默认分频是+1的。

75080094ef1e488a9f1381157b5407e6.png

因此的我们的算法就是:(主频/想要频率)-1。写法如下

CTIMER_UpdatePwmPulsePeriod(CTIMER0,kCTIMER_Match_2,(CLOCK_GetFreq(kCLOCK_CoreSysClk) / 2000) - 1U);

 最后我们不仅仅要更新匹配2,还要更新匹配3

5070f48451224d18a0f69f7dc9687aa2.png

我们来实验一下

0cc7023f87314291918d5ad3088b5763.png

可以看到频率和占空比都对了。

3.总结

总的来说804里面只有一个定时器,这极大地限制了使用场景,PWM与基础定时器不能同时使用,我也依然在想办法去拓展功能,后面如果找到了方法可以拓展定时器功能我再发布吧。下面我打算先更新AD/DA的使用,这两天快递太慢了,到现在逻辑分析仪还没到。好了还是那句话,学浅才疏,有事么问题欢迎讨论。

 

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

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

相关文章

Mybatis-Plus基础

typora-copy-images-to: img Mybatis Plus 今日目标: 了解mybatisplus的特点能够掌握mybatisplus快速入门能够掌握mybatisplus常用注解能够掌握mybatisplus常用的增删改查能够掌握mybatisplus自动代码生成 1 MybatisPlus简介 1.1 MybatisPlus概述 ​ MyBatis-…

python3 查询mysql(obmysql)数据库表格并写入txt文件

本文将介绍如何使用Python3查询MySQL(OBmysql)数据库读取表格数据写入本地txt文件。 具体步骤: 连接数据库创建游标对象执行SQL查询语句关闭连接 一、连接数据库 在查询数据库之前,我们首先需要连接到MySQL/OBmysql数据库。使用…

域名解析与nginx配置

dns解析 阿里云服务器dns域名解析配置,记录值就是阿里云服务器的ip nginx配置 远程到阿里云服务器上对nginx进行配置: nginx反向代理配置: 修改配置后,重启nginx服务 进入目录:cd /usr/sbin 强制杀死进程&#xff…

玩转WEB接口之三续篇【HTTPS证书申请 - nginx验证】

文章目录 一, 概述二,nginx下载三,访问域名1. 做域名映射2. 运行nginx并通过域名访问 四,配置SSL证书1. 配置证书文件2. nginx 添加证书文件 五、运行并验证1. 测试、重新加载2. https访问 一, 概述 接上篇 玩转WEB接…

​「商务行政」是品牌高端化必须要迈的槛

发布了几个月之后,高山行政版终于开启了公开试驾,这也是在极氪 009 之后自主品牌里又一个主打行政商务定位的产品。 为什么「行政商务」会被各家主机厂提到一个较高的优先级? 这和目前市场的竞争环境有关系,一方面新能源产品在快…

【已解决】Centos安装不了podman问题(依赖无法安装)

今天安装podman一直安装不了,原因是containernetworking-plugins-1.1.1-1.el7.2.9.x86_64.rpm这个包因为网站的原因下载不了,不管是开启代理还是使用镜像源,都无法解决 最终是手动下载本地后上传至服务器解决,故把文件分享出来避…

C语言——N / 自定义类型:联合和枚举

目录 一、联合体 1、联合体类型的声明 2、联合体的特点 3、相同成员的结构体和联合体对比 4、联合体大小的计算 5、联合的一个练习 二、枚举类型 1、枚举类型的声明 2、枚举类型的优点 3、枚举类型的使用 一、联合体 1、联合体类型的声明 像结构体⼀样,…

springboot快速写增删改查接口

springboot快速写接口 1.建立项目,初步测试接口1. 建proj形式2. 基础包2. 基础依赖3. 配置数据库4.用restcontroller和postmapping来写接口5. 如何使用数据库进行增删改查 2. 写一个简单的增删改查2.1 查询报错汇总:mybatis的application.yml配置错误ins…

【笔试常见编程题03】统计回文、连续最大和、不要二、把字符串转换成整数

1. 统计回文 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串…

新手也能轻松上手!10 款免费平面图设计软件推荐!

从事设计行业的工人或多或少会接触到平面图。例如,在建造新房、办公室、酒店等任何类型的建筑时,都需要使用平面图来保证项目的准确性。因此,掌握绘制平面图软件的技巧也非常重要。在保证效率的同时,结果的准确性也非常高。在本文…

【CMU-自主导航与规划】M-TARE planner 配置与运行

M-TARE docker M-TARE 源码 一、依赖 Docker, Docker Compose, NVIDIA Container Toolkit, Nvidia GPU Driver(需要至少2个,带Nvidia GPU) 1.1 Docker docker -v #查询版本1.2 Docker Compose docker compose version1.3 …

jrt运维命令改造

以前发布网站都是定死网站放置路径的,现在JRT想面向更广范围推广,所以就不能明确确定网站放置目录,为此需要改造一下jrt命令和sh来满足目录不确定情况和多个程序用不同管理命令的要求。 以前是写死的,现在改为调程序运行目录的sh…

Dubbo 3.x源码(16)—Dubbo服务发布导出源码(5)

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了Dubbo 3.x源码(15)—Dubbo服务发布导出源码(4),也就是Dubbo远程服务导出export方法的上半部分,也就是doLocalExport源码,将会得到一个Exporter。 现在我们…

C++类和对象引入以及类的介绍使用

文章目录 一、面向过程和面向对象的初步认识二、类的引入2.2 类的引入 三、类的访问限定符及封装3.3 访问限定符3.4 【面试题】C中struct和class的区别3.5 类的两种定义方式 四、封装【面试题】面向对象的三大特性 五、类的作用域六、类的实例化七、类对象模型7.1 类对象的存储…

(Sping Xml方式整合第三方框架)学习Spring的第十天

Spring整合mybatis 1 . 导入Mybatis整合Spring的相关坐标 <dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.13.RELEASE</version></dependency><dependency><…

基于springboot网上图书商城源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括网上图书商城的网络应用&#xff0c;在外国网上图书商城已经是很普遍的方式&#xff0c;不过国内的管理网站可能还处于起步阶段。网上图书商城具有网上图书信息管理功能的选择…

新建VM虚拟机-安装centOS7-连接finalshell调试

原文 这里有问题 首先进入/etc/sysconfig/network-scripts/目录 cd /etc/sysconfig/network-scripts/ 然后编辑文件 ifcfg-ens33 vi ifcfg-ens33

探索数字经济:从基础到前沿的奇妙旅程

新一轮技术革命方兴未艾&#xff0c;特别是以人工智能、大数据、物联网等为代表的数字技术革命&#xff0c;催生了一系列新技术、新产业、新模式&#xff0c;深刻改变着世界经济面貌。数字经济已成为重组全球要素资源、重塑全球经济结构、改变全球竞争格局的关键力量。预估到20…

OpenCV 5 - 图像混合处理addWeighted()

图像混合 1 理论-线性混合操作 其中α的取值范围为0~1之间,表示图像的所占的权重 2 混合处理函数addWeighted() 3 代码示例 Mat src1, src2, dst;src1 = imread("./1.png");src2 = imread("./2.png");if (!src1.data && src2.empty()) //判断图片…

word文档怎么做成翻页电子书

随着科技的进步&#xff0c;电子书已成为越来越多人阅读的首选。翻页电子书以其独特的翻页效果和丰富的互动功能&#xff0c;更是受到了广大读者的喜爱。那么&#xff0c;如何将传统的Word文档制作成翻页电子书呢&#xff1f; 一、了解翻页电子书的特点 翻页电子书&#xff0c…