LPC系列一个定时器不同频率

1.背景

最近研究的LPC804里只有一个ctimer,很多时候用的捉襟见肘的,官方给了一份双匹配的参考例程,不过实际用处不大。不过我花了一晚上的时间,终于研究出来将一个定时器拆成四个定时器用的办法了。这个方法适用于用回调函数的LPC系列单片机,比如LPC55S69

2.理论

在stm32里面,每个定时器只有一个重装值,当定时器的计数值达到设定值时就会开启中断,就像下图这样(绘画能力有限,还请见谅)

3419fa5f427447529b72cd8c2d1f85d0.png

但是,LPC系列不一样,他每个定时器最少能设置四个匹配值,那么我们可不可以整点花活呢?在单个增加的周期内搞上多个匹配值, 这样输出频率就能增加了!

59a050e10aa3460cb3c491d6be9b5980.png

那么说干就干

3.初始化

我这里以LPC804介绍,其他芯片应该是类似的,首先是程序顺序,核心在这一块。

61a295e24a024b6daacdb907b055b0a8.png

先看第一段,这里设置enableCounterReset开启时,当定时器的值达到这个匹配值时,就会重置定时器,这也就是我们理论那张图里的黑线,所以我们这里也就需要设置这个为长度最长的定时器,比如你需要一个1s和100ms的定时器,那么这里设置的匹配值就应该是1s的定时器。

3534d7222fbd4d1e8383cef648d9fab6.png 接下来我们设置匹配2,首先就是关闭enableCounterReset,我们这里设置的是速度更快的定时器,如果这里将这个打开,定时器的速度就不再是上面的慢速而是这里的快速了。接下来我要将匹配值初始化时设置为0。

8fc2d84bb1fa40b39fb04f425b0c7236.png

有些同学按捺不住性子了,问那我们不就最开始翻转一次吗?这和预期差别很大啊,没错这里只是初始值,我们实际值是要在中断里更新的,下面我就来说说中断里怎么写

4.中断

先说高频的中断

6956ad12000e439c9503fc8d06feb327.png 我们实际中断的时间其实参照的是这里的时间,当我们高频满足翻转第一次时间后,就会将下一次的时间给更新,因此我们这里的时间才是实际输出的时间。

然后是低频或是说基频

f70891c9c3a64d5c933dbe49df7f77a3.png

这里的核心是重置高频的匹配值,因为每一次完成低频的输出后定时器的值是由芯片内部重装,但是我们的匹配值增加后没有被重置,那么这里就必须手动归零了。 

最后给大家放一张图来帮助大家理解

06568088848e4a67a8c54a59260e1113.jpeg

5.实际效果

9b4fea7bd48d459cafbc6c2e283fe3d9.jpeg

1bd1075d1bad4c45993cacee9116af9e.png

 这里我用的是LPC804单片机,只有一个定时器,实现了不同频率的输出一个10ms一个1ms,10倍关系。

6.结语

总的来说,NXP的这种用法与其他芯片的区别还是很大的,大家也可以慢慢探索新的用法,这里建议大家的高频与基频最好是倍数关系,否则输出的波形是非对称的,不是标准的方波。 不过老实说如果需要的定时器不用高级的用法,只是基础的定时,NXP的这种搞法完全可以将一个定时器拆成4个用,速率还可以不一样。好了,大家有问题欢迎在评论区交流,我会尽力为大家解答。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贪吃蛇游戏的实现

一.技术要点: 贪吃蛇需要掌握: c语言函数,枚举,结构体,动态内存管理,预处理指令,链表,Win32 API等 二.Win32 API 1.Win32 API简介 windows可以帮应用程序卡其视窗,描绘图案,使用周边设备,,Win32 API就是windows32位平台上的应用程序编程接口 2.控制台程序 (1).使用cmd命令…

Pycharm连接云算力远程服务器(AutoDL)训练深度学习模型全过程

前言:在上一篇windows搭建深度学习环境中,我试图使用笔记本联想小新air14的mx350显卡训练一个图像检测的深度学习模型,但是训练时长大概需要几天时间远超我的预期,所以我便选择租用GPU进行训练,在对多家平台对比后找到…

练习12.6_横向射击_Python编程:从入门到实践(第3版)

编写一个游戏,将一艘飞船放在屏幕左侧,并允许玩家上下移动飞船。在玩家按空格键时, 让飞船发射一颗在屏幕中向右飞行的子弹,并在子弹从屏幕中消失后将其删除。 ship_shooting.py import pygame import sys from leftship impor…

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

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

Mac下查看、配置和使用环境变量

Mac下查看、配置和使用环境变量 一:Mac怎么查看环境变量命令 printenv一:这个命令会一次性列出所有环境变量的键值对,输出格式为: VAR1value1 VAR2value2 ...二: 也可以通过给这个命令加上环境变量名参数&#xff0…

力扣hot100 每日温度 单调递减栈

Problem: 739. 每日温度 文章目录 思路复杂度💝 单调栈 思路 👩‍🏫 参考题解 复杂度 ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( n ) O(n) O(n) 💝 单调栈 class Solution {public int[] dailyTem…

二叉树--230. 二叉搜索树中第K小的元素/medium 理解度A

230. 二叉搜索树中第K小的元素 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1&#xff1a…

【Linux】动态库和静态库——动态库和静态库的打包和使用、gcc编译、拷贝到系统默认的路径、建立软连接

文章目录 动态库和静态库1.静态库和动态库的介绍2.静态库的打包和使用2.1生成静态库2.2使用静态库的三种方式2.2.1gcc编译2.2.2拷贝到系统默认的路径2.2.3建立软连接 3.动态库的打包和使用3.1生成动态库3.2使用动态库3.3解决加载不到动态库的方法 动态库和静态库 1.静态库和动…

多线程 之 静态代理

什么是静态代理? 静态代理是一种思想,找一个代理负责一些琐事,自己则专注于一件大事。 有哪些具体的表现? 在日常生活中做饭就是这样,会做饭的人需要做饭,那么其他的人就来帮他打杂,这样做饭的…

JavaScript的冒泡与捕获

1.概念。 冒泡事件:微软公司提出的,事件由子元素传递到父元素的过程叫做冒泡(false)。 捕获事件:网景公司提出的,事件由父元素传递到子元素的过程叫做事件捕获(ture)。 2.冒泡事件与…

vscode copilot怎么去掉提示代码(ghost text or incline completion)

原因:最近在刷题,被这个提示烦死了,记录一下怎么关掉,防止将来需要开启找不到了XD. 1.直接ctrlshiftp召唤设置 2.输入preferences: open usr settings找到如图第一个 3.去掉这个方框的勾选 ps直接在extension里disable不行呢 不…

使用宝塔面板部署Node.js+Mysql服务和Vue3-Admin项目到云服务器上

准备工作 一台云服务器,可以先用免费试用一个月的服务器进行练手;我这里选择的是腾讯云的轻量云服务器; 1、在云服务器上安装宝塔面板 宝塔面板官网地址:https://www.kancloud.cn/chudong/bt2017/424209 1.1 安装Xshell脚本工…

你好,C++对象

你好,对象 面向对象开发对象的定义 类与对象类的定义类的访问限定符及封装类的实例化类对象模型结构体内存对齐规则 this指针this指针的引入 this指针的特性 类的默认成员函数构造函数析构函数拷贝构造函数结语 面向对象开发 对象的定义 对象的含义是指具体的某一…

MySQL 聚集与非聚集索引

文章目录 1.聚集索引1.1 介绍1.2 优点1.3 缺点 2.非聚集索引3.区别参考文献 MySQL 中,根据索引树叶结点存放数据行还是数据行的地址,可以将索引分为两类: 存放数据行:聚集索引存放数据行地址:非聚集索引 InnoDB 使用聚…

Keil-C语言小总结

1、 &取地址符,*取地址内容 int *ptr;//声明指针 2、ptr &c; // 将c的地址赋值给指针变量ptr 3、可选参数函数 4、C宏定义 5、 memset:最快的数据清零函数 void *memset(void *s, int ch, size_t n); 分别是 字符串 要值的数据(0…

TensorFlow2实战-系列教程4:数据增强:keras工具包/Data Augmentation

🧡💛💚TensorFlow2实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Jupyter Notebook中进行 本篇文章配套的代码资源已经上传 对于图像数据,将其进行翻转、放缩、平移、旋转操作就可以得到一组新的数据…

分布式ID(3):雪花算法生成ID之UidGenerator(百度开源的分布式唯一ID生成器)

1 UidGenerator官方地址 UidGenerator源码地址: https://github.com/baidu/uid-generator UidGenerator官方说明文档地址: https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md 这边只做简单介绍,详细说明请看官方说明文档。 2 Snowflake算法 Snowfl…

spring boot学习第八篇:操作elastic search的索引和索引中的数据

前提参考&#xff1a;elastic search入门-CSDN博客 前提说明&#xff1a;已经安装好了elastic search 7.x版本&#xff0c;我的es版本是7.11.1 1、 pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns&q…

空间计算时代催生新一波巨大算力市场需求

什么是空间计算&#xff1f; 空间计算是一种整合虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR&#xff09;、混合现实&#xff08;MR&#xff09;等技术的计算模式&#xff0c;旨在将数字信息与真实世界融合在一起。这种融合创造了一个全新的计算环境&#xff…

机房环境动力监控系统:S275远程控制网关助力高效管理

现场问题 1、机房安全隐患 机房存在意外断电、温湿度过高过低、漏水断路等隐患&#xff0c;传统监测手段难以提前发现和预警。 2、机房远程运维困难 因环境改变、非授权活动、设备状态变化等引起的事故&#xff0c;难以满足机房远程运维的可靠管控要求。 3、机房改造成本高…