NRF51822裸机TIMER学习笔记

2023-11-03

外设TIMER

时钟介绍

HFCLK:
① 又称之为高速时钟, 是 nRF5X SOC 的主时钟, 一般是 16MHZ。
② HFCLK 时钟有 2 个来源: 一个是内部 RC 振荡器(RC Oscillator),另一个是外部石英振荡器(Crystal Oscillator)。
③ 16MHZ 时钟信号通过高速时钟控制单元处理输出 3 个时钟信号:

	1) 1MHZ 频率的外设时钟 PCLK1M,给 SOC 的外设使用。
	2) 16MHZ 频率的外设时钟 PCLK16M,给 SOC 的外设使用。 
	3) 16MHZ 的 HCLK 的时钟, 供给 CPU 使用

LFCLK:
① 又称之为低速时钟, 是用来作 RTC 计时和唤醒的时钟信号, 频率为32.768K.LFCLK 。
②有 3 个时钟源:

	 1)一个是内部 RC 振荡器,
	 2)另外一个是外部石英振荡器,
	 3)还有一个是通过 16MHZ 的主时钟频率分频得到 32.768K 的信号。 

③LFCLK 通过低速时钟控制单元输出 32K 的时钟信号给外设使用。

NRF51822定时器

三个定时器,分别是:TIMER0,TIMER1,TIMER2.
不同位宽决定了计数器的最大溢出时间。

instance bit-width capture/compare registers
TIMER0 8/16/24/32 4
TIMER1 8/16 4
TIMER2 8/16 4
定时器结构

在这里插入图片描述
TIMER 有以下几部分组成:
1) 计数时钟源。 有 1M、 16M 2 种时钟源。
2) 时钟源分频器。 用来设置分频, 范围是 2 的 0-9 次方。
3) 定时/计数模式选择。 用来配置 TIMER 工作在定时器模式还是计数器模式。
4) 定时/计数器位数。 8 位、 16 位、 24 位、 32 位可选择。
5) CC[n]寄存器。 CC 是捕捉、 比较的缩写。 CC 寄存器有 4 个。 当执行 CAPUTURE TASK(捕捉任
务)的时候, 当前内部计数器的值将会立刻被拷贝到 CC 寄存器。
6) 各任务、 事件等。

分频器

计算:
在这里插入图片描述
配置:

注:HFCLK无论哪种时钟源,均为16MHz,PRESCALER为一个4位分频器,分频值为0——15。当PRESCALER大于9后,分频始终为2的9次方,即最小频率f=16mhz / 2^9。

工作模式(MODE)

TIMER 有两种工作模式: 定时模式和计数模式。
当处于定时模式, 我们称之为定时器
当处于计数模式, 我们称之为计数器。
在这里插入图片描述
通过寄存器MODE进行设置,MODE = 0—>定时器;MODE= 1 —>计数器。
3 个任务:

1) START:启动定时/计数器
2) STOP:停止定时/计数器
3) SHUTDOWN:让定时/计数器掉电, 后续无法通过 START 来启动该定时/计数器, 除非重新复位。
定时/计数器位数设定

在这里插入图片描述

比较/捕获

定时器模式下设置比较(COMPARE)/捕获(CAPTURE)寄存器CC[n]的值,可以设置定时时间(Timer value),当定时时间的值和CC[n]寄存器的值相等时,将触发一个比较(COMPARE[n] event)事件。

计数器模式下通过设置一个CAPTURE TASK,当计数器的值和比较/捕获寄存器设定的值(Timer value)相等的时候,将产生一个捕获事件(Capture[n] event)。捕获的值将会存储到寄存器CC[n]中读取。

程序的配置

1) 设定工作模式
2) 设定预分频(计数器不适用)
3) 设定 CC[n]寄存器的值
4) 使能中断(中断模式)
5) 启动 START 任务
6) COMPARE EVENT 到来, 清除内部计数器的值, 清除中断(中断模式)

1s的定时器中断配置:

 NRF_TIMER0->MODE = TIMER_MODE_MODE_Timer;             //计数器模式
 NRF_TIMER0->PRESCALER = 9;                            //9分频   31250HZ的FTIMER
 NRF_TIMER0->BITMODE = TIMER_BITMODE_BITMODE_16Bit;    //16位
 NRF_TIMER0->CC[0]=31250;                              //CC=31250,1S后产生COMPARE EVENT
 
 NRF_TIMER0->INTENSET = TIMER_INTENSET_COMPARE0_Msk ;  //使能COMPARE 中断
 NVIC_SetPriority(TIMER0_IRQn,3);                      //设定TIMER0中断优先级为3
 NVIC_EnableIRQ(TIMER0_IRQn);                          //使能TIMER0中断
 NRF_TIMER0->TASKS_START =1;                           //启动TIMER0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NRF51822裸机TIMER学习笔记 的相关文章

  • Objective-C:在 SpriteKit 中向计时器添加 10 秒

    我使用了别人的代码在 SpriteKit 中编写计时器 并对其进行了一些调整 我的代码如下所示 void createTimerWithDuration NSInteger seconds position CGPoint position
  • JSP/Servlet 中的倒计时器

    我正在使用 servlet jsp 开发在线考试 我需要在问题页面添加一个倒计时 hh mm ss 计时器 该计时器将结束考试并重定向到结果页面 除了计时器功能之外 我已经完成了所有其他功能 有人可以为此提供一些帮助吗 Thanks 您是否
  • 使用 threading.Timer 时 Ctrl-C 不起作用

    我正在 Windows 上编写一个多线程 Python 应用程序 我曾经使用终止应用程序ctrl c 但是一旦我添加了threading Timer实例ctrl c停止工作 或有时需要很长时间 怎么会这样 拥有 Timer 线程和之间有什么
  • java.util.Timer:它是否已弃用?

    我在评论中读到这个答案 https stackoverflow com questions 2212848 how to genarate random numbers 2212887 2212887以及许多其他有关日程安排的问题 抱歉 没
  • 如何在 iOS 7 中让 NSTimer 在后台运行超过 180 秒?

    我已经尝试过 但在 iOS 7 和 Xcode 4 6 2 中工作时间不超过 180 秒 请帮我 UIBackgroundTaskIdentifier bgTask UIBackgroundTaskInvalid UIApplication
  • 为什么 Asp.net 计时器/更新面板会在 Chrome 中泄漏内存?可以修复/解决吗?

    我为我们公司建立了一套内部网站来管理我们的一些流程 我注意到这些页面存在大量内存泄漏 导致页面使用超过 150mb 的内存 这对于由单个表单和 GridView 组成的网页来说是荒谬的 该 GridView 在同一时间显示 7 10 行数据
  • Android:在调用函数之前实现 1 秒间隔定时器

    我试图在重置游戏 resetGame 之前引入 1 秒暂停 按下按钮后 bAnswer1 文本等于 ansewrArray 0 应用程序强制在 newQuestionTimer 中设置的 1 秒延迟后关闭 import java util
  • 如何立即触发timer.Elapsed事件

    我正在使用System Timers Timer类来创建一个计时器Timer Elapsed事件 事情是Timer Elapsed仅在间隔时间过去后才会首次触发事件 有没有办法提高Timer Elapsed启动计时器后立即发生事件 我在中找
  • 如何在运行时更改android中睡眠/定时器线程的延迟?

    我试图做的是每次计数器变为 5 的倍数时减少计时器延迟 但是 一旦代码进入 if 块 它就停止递增计时器 我不明白发生了什么事 这是代码 thread new Thread public void run try if count 5 0
  • 从 Windows 服务中的 OnStart 立即触发计时器_elapsed

    我正在使用一个System Timers Timer我的代码中有如下代码OnStartC Windows 服务中的方法 timer new Timer timer Elapsed timer Elapsed timer Enabled tr
  • 在java中设置按钮点击延迟?

    我有一个保存按钮JFrame 单击 保存 时 保存 文本将设置为 正在保存 我需要在延迟 10 秒后将该文本设置为 已保存 在 java 中这怎么可能 请帮忙 try Thread sleep 4000 catch InterruptedE
  • 如何通过该计时器的回调函数更改 System.Threading.Timer 中的间隔时间?

    如何通过该计时器的回调函数更改 System Threading Timer 中的时间间隔 它是否正确 这样做 没有发生 public class TestTimer private static Timer timer new Timer
  • 互动倒计时增加?

    我有一个表单 如果没有完成任何鼠标交互 我想在 5 秒后关闭它 但如果完成任何鼠标交互 我希望它关闭countdown 5 seconds每次交互都会增加 5 秒 这是我到目前为止想到的 int countdown 5 System Tim
  • .Net 中的计时器和循环准确吗?

    在开发一个程序时 计算555定时器IC产生的脉冲的频率和脉冲宽度 通过PC并行端口传到PC 我注意到每次运行代码时它都会显示不同的值 因此我开始测试循环和计时器的准确性 我运行了以下代码 发现它们不准确 我可能是错的 如果我错了 请纠正我
  • Android 计时器/计时器任务导致我的应用程序崩溃?

    只是在我的 mainActivity 的 onCreate 中测试一个简单的代码块 Timer timer2 new Timer TimerTask testing new TimerTask public void run Toast m
  • 定时器启动/停止参数

    自从加入这个社区以来 我在技能和进步方面取得了突飞猛进的进步 你们都是一个巨大的帮助 我无法提供一个计时器 该计时器已在启动和停止时实现了某些参数 我要么收到错误消息 局部变量计时器可能尚未初始化 要么没有收到错误消息 但什么也没有发生 也
  • 如何实现urllib2.urlopen的超时控制

    如何在Python中实现对urllib2 urlopen的控制 我只是想监控如果5秒内没有xml数据返回 则切断此连接并重新连接 我应该使用一些计时器吗 谢谢 urllib2 urlopen http www example com tim
  • 如何使用 Python 3 正确显示倒计时日期

    我正在尝试获取将显示的倒计时 基本上就像一个世界末日时钟哈哈 有人可以帮忙吗 import os import sys import time import datetime def timer endTime datetime datet
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • 线程睡眠和Windows服务

    我正在开发一个 Windows 服务 该服务存在一些问题Thread Sleep 所以我想我会尝试使用计时器 因为这个问题建议 在 Windows 服务中使用 Thread Sleep https stackoverflow com que

随机推荐

  • TEASER-plusplus 安装

    https github com MIT SPARK TEASER plusplus 下载https codeload github com MIT SPARK TEASER plusplus zip v2 0 下载GoogleTest太慢
  • 测试开发概念篇

    目录 前言 几个常见的名词 需求 什么是BUG 测试用例 软件生命周期 开发模型 瀑布模型 螺旋模型 增量和迭代模型 敏捷模型 前言 什么是软件测试 软件测试就是验证产品特性是否满足用户需求 开发软件是为了盈利 必须满足用户才会盈利 测试和
  • LiunxQT开发篇—QT网络编程TCP实现(三)客户端代码

    需要包含三个头文件 include
  • 操作系统——第2章 操作系统用户界面

    目录 第2章 操作系统用户界面 基本概念 系统调用 基本概念 执行过程 第2章 操作系统用户界面 基本概念 一般将计算机系统的用户分为两类 使用和管理计算机应用程序的用户 包括普通用户与管理员用户 程序开发人员 操作系统为第一类用户提供命令
  • 日本半导体行业衰落的原因分析

    90年代初 半导体市场几乎是日本厂商的天下 在排名前十的半导体公司里曾经有6家是日本公司 日本半导体行业衰落的原因分析 那什么导致了今天日本半导体产业的衰落 来看看一些知名调查机构的分析 罪魁祸首1 高层管理人员的傲慢 我们谈过的许多行业观
  • hyperledger fabric Failed to generate orderer genesis block

    当使用configtxgen工具进行生成创世区块和channel tx等时出现错误 具体如下 Generating Orderer Genesis block
  • 解决:Echarts打包后出现白屏

    Echarts打包后出现白屏 原因 这是由于图表的容器节点被移除导致的 即使之后该节点被重新添加 图表所在的节点也已经不存在了 解决方法 利用钩子函数在页面销毁之前将其销毁即可 import onBeforeUnmount from vue
  • QT学习之经典控件源码(如此强大)

    进来好好学习了QT 研究了很多别人的源码 在绘图方面原来QT也是如此强大 源码下载 Files feiyangqingyun myValueControl zip FROM http www cnblogs com feiyangqingy
  • 自动化测试(四):pytest结合allure生成测试报告

    Allure 报告框架的名称 allure noun U 诱惑 魅力 吸引力 文章目录 1 allure下载 2 pytest框架使用allure 3 生成allure报告 1 allure下载 下载前需要先安装JDK 这里可以参考自动化测
  • 图的常用遍历——广度优先遍历和深度优先遍历

    目录 一 遍历图可能遇到的问题 二 图的常用遍历 三 深度优先遍历 DFS 四 广度优先遍历 BFS 一 遍历图可能遇到的问题 图的特点 图中可能存在回路 且图的任一顶点都可能与其它顶点相通 在访问完某个顶点之后可能会沿着某些边又回到了曾经
  • Qt中嵌入web网页的几种实现方式

    1 背景 Web网页的界面交互相比较Qt客户端而言有着比较大的优势 更加的多样化和更高的使用便捷性使得我们即使在客户端中也可以考虑将web网页嵌入到客户端的界面当中 如此便能将web的优势和客户端进行结合 更加丰富客户端的界面及功能 以下将
  • 小程序项目实战(三)

    此文章用于总结自己的知识点 有这个项目有兴趣的伙伴可以点击下方链接购买学习 小程序音乐项目开发实战 大神coderwhy新课 学习视频教程 腾讯课堂课程简介正在上传 重新上传取消https ke qq com course 4162214h
  • mysql数据库里空值变成0_MySQL数据库 null转为0,及一些case when用法

    1 如果为空返回0 select ifnull null 0 应用情景 如果在进行右连接或者左连接时 有一些为空的字段 可以进行这样的处理 select ifnull B submission time A submission time
  • 互联网时代知识付费如何卖课——Python卖课指南

    Python卖课指南 Python作为一门流行且广泛应用的编程语言 吸引了越来越多的人加入学习Python的行列 因此 通过卖课来教授Python编程技巧成为了许多人的选择 在这篇博客中 我们将详细介绍如何成功地卖出Python课程 以下是
  • 关于STM32WB55一些测评评价

    关于STM32WB55一些测评评价 部分内容转载自http bbs eeworld com cn thread 1076335 1 1 html 简单介绍下 STM32WB系支持无线功能的双核 MCU 内嵌 工作频率为 64 MHz 的 A
  • Docker-compose配置springboot项目

    Docker compose从入门到入土 准备环境 一 在springboot添加docker插件 1 安装docker插件 2 在pom xml中添加配置 二 在项目下创建docker文件 1 Dockerfile 2 docker co
  • java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.util.ByteStringer

    java lang NoClassDefFoundError Could not initialize class org apache hadoop hbase util ByteStringer java lang NoClassDef
  • 【Qt】样式表的使用——设置样式的方法

    Qt 之 样式表的使用 设置样式的方法 一 简述 二 开始总结 1 先谈谈我们设置样式有几种方法 a 最简单 也是最直接 在Qt Designer 中添加样式 b 在代码中添加样式 c 将样式写在文件中 通过读取文件的方式设置样式 2 再谈
  • 在jquery中使用$.each循环数组展示

    定义和用法 jQuery each 函数用于遍历指定的对象和数组 语法 each object callback 参数 描述 object Object类型 指定需要遍历的对象或数组 callback Function类型 指定的用于循环执
  • NRF51822裸机TIMER学习笔记

    外设TIMER 时钟介绍 HFCLK 又称之为高速时钟 是 nRF5X SOC 的主时钟 一般是 16MHZ HFCLK 时钟有 2 个来源 一个是内部 RC 振荡器 RC Oscillator 另一个是外部石英振荡器 Crystal Os