嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT)

一、定时器

1. 定时器简介

定时器是SoC中最常见的外设
(1)定时器与计数器。计数器是用来计数的(每隔一个固定时间会计一个数);因为计数器的计数时间周期是固定的,因此到了一定时间只要用计数值×计数时间周期,就能得到一个时间段,这个时间段就是我们定的时间(这就是定时器了)。
(2)定时器/计数器作为SoC的外设,主要用来实现定时执行代码的功能。定时器相对于SoC来说,就好象闹钟相对于人来说意义一样。

定时器有什么用
(1)定时器可以让SoC在执行主程序的同时,具有计时功能(通过定时器),到了一定时间(计时结束)后,定时器会产生中断提醒CPU,CPU会去处理中断并执行定时器中断的ISR。从而去执行预先设定好的事件。
(2)定时器就好象是CPU的一个秘书一样,这个秘书专门管帮CPU来计时,并到时间后提醒CPU要做某件事情。所以CPU有了定时器之后,只需预先把自己xx时间之后必须要做的事情绑定到定时器中断ISR即可,到了时间之后定时器就会以中断的方式提醒CPU来处理这个事情。

定时器的原理
(1)定时器计时其实是通过计数来实现的。 定时器内部有一个计数器,这个计数器根据一个时钟(这个时钟源来自于ARM的APB总线,然后经过时钟模块内部的分频器来分频得到)来工作。每隔一个时钟周期,计数器就计数一次,定时器的时间就是计数器计数值×时钟周期。
(2)定时器内部有1个寄存器TCNT,计时开始时我们会把一个总的计数值(初值)放入TCNT寄存器中,然后每隔一个时钟周期(假设为1ms)TCNT中的值会自动减1(硬件自动完成,不需要CPU软件去干预),直到TCNT中减为0的时候,TCNT就会触发定时器中断。
(3)定时时间是由2个东西共同决定的:一个是TCNT中的计数值,一个是时钟周期,两者的乘积即为最终定时的时间

2. 与定时器有关的器件

看门狗
看门狗定时器和普通的定时器并无本质区别。定时器可以设定一个时间,在这个时间完成之前定时器不断计时,时间到的时候定时器会复位CPU(重启系统)。
普通设备重启不是问题,但是有些设备人工重启存在困难。这时候我们希望系统能够自己检验自己是否已经跑飞,并且在意识到自己跑飞的时候,可以很快的(几个ms或者更短)自我重启。这个功能就要靠看门狗定时器来实现。
我们在应用程序中打开看门狗设备,初始化好给它一个时间,然后应用程序使用一个线程来喂狗,这个线程的执行时间安全短于看门狗的复位时间。当系统(或者应用程序)异常后,喂狗线程自然就不工作了,然后到时候看门狗就会复位。
实战中有时候为了绝对的可靠,我们并不会用SoC中自带的看门狗,而是使用专门的外置的看门狗芯片来实现看门狗。

pwm定时器
PWM(pulse wide modulation 脉宽调制):是一个周期性波形,周期为T,在每个周期内波形是完全相同的。每个周期内由一个高电平和一个低电平组成。
PWM波形有2个重要参数:一个是周期T,另一个是占空比duty(占空比就是一个周期内高电平的时间除以周期时间的商)。
对于一个PWM波形,知道了周期T和占空比duty,可以得到高电平时间为Txduty,低电平时间为Tx(1-duty)。 PWM波形其实就是用时间来控制电平高低,所以用定时器来实现PWM波形是天经地义的。
在S5PV210中,PWM波形产生有2个寄存器很关键,一个是TCNTB、一个是TCMPB。其中,TCNTB决定了PWM波形的周期,TCMPB决定了PWM波形的占空比。
最终生成的PWM波形的周期是:TCNTB×时钟周期(PCLK_PSYS经过两极分频后得到的时钟周期)。注意这个周期是PWM中高电平+低电平的总时间,不是其中之一。最终生成的PWM波形的占空比是:TCMPB/TCNTB。

RTC时钟
RTC(real time clock)是实时时钟,它和定时器的差别就好象闹钟(定时器)和钟表(RTC)的差别一样。也就是所谓的年月日时分秒。
RTC是SoC中一个内部外设,RTC有自己独立的晶振提供RTC时钟源(32.768KHz),内部有一些寄存器用来记录时间(年月日时分秒星期)。一般情况下为了在系统关机时时间仍然在走,还会给RTC提供一个电池供电。

二、定时器常见用法

1. PWM定时器驱动蜂鸣器

蜂鸣器简介
蜂鸣器里面有2个金属片,离的很紧但没挨着;没电的时候两个片在弹簧本身张力作用下分开彼此平行;有电的时候两边分别充电,在异性电荷的吸力作用下两个片挨着。我们只要以快速的频率给蜂鸣器的正负极:供电、断电。进行这样的循环,蜂鸣器的两个弹簧片就会挨着分开挨着分开···形成敲击,发出声音。
根据以上的分析,可以看出,只要用PWM波形的电压信号来驱动蜂鸣器,把PWM波形的周期T设置为要发出的声音信号的1/频率即可;PWM的占空比只要确保能驱动蜂鸣器即可。

PWM定时器主要寄存器
(1)TCFG0、TCFG1
这两个寄存器是用来进行预分频和分频的,通过将PCLK进行分频处理的到一个频率较低的时钟信号,用于驱动PWM定时器。
两级分频是串联(级联)的,所以两级分频的分频数是相乘的。预分频器有2个,prescaler0为timer0&timer1共用;prescaler1为timer2、3、4共用;两个prescaler都是8个bit位,因此prescaler value范围为0~255;所以预分频器的分频值范围为1~256(注意实际分频值为prescaler value + 1)。

(2)CON

第一次需要手工将TCNTB中的值刷新到TCNT中去,以后就可以auto-reload了。
自动装载机制就是当定时器初始化好开始计时后再不用管了,他一个周期到了后会自己从TCNTB中再次装载值到TCNT中,再次启动定时器开始下个循环。

(3)TCNTB2、TCMPB2

通过改变TCMPB与TCNTB的比值即可改变PWM波的占空比。

除了TCNTB和TCMPB外,还有个寄存器叫TCNT。 TCNT和TCNTB是相对应的,TCNTB是有地址的寄存器,供程序员操作;TCNT在内部和TCNTB相对应,它没有寄存器地址,程序员不能编程访问这个寄存器。
TCNT寄存器功能就是用来减1的,它是内部的不能读写;我们向TCNT中写要通过TCNTB往进写;读取TCNT寄存器中的值要通过读取相对应的TCNTO寄存器
工作流程就是:我们事先算好TCNT寄存器中开始减的那个数(譬如300),然后将之写入TCNTB寄存器中,在启动timer前,将TCNTB中的值刷到TCNT寄存器中(有一位寄存器专门用来操作刷数据过去的),刷过去后就可以启动定时器开始计时;在计时过程中如果想知道TCNT寄存器中的值减到多少了,可以读取相应的TCNTO寄存器来得知。

2. 看门狗定时器

看门狗主要用到的寄存器
(1)WTCON

在这里要解释一下,如果设置为中断模式的话,即需要写ISR函数,并且在配置中断模式时,要将复位禁止。如果设置为复位模式,如果在规定时间内没有喂狗(重装载初值),系统则会复位,在配置为复位模式时,要将中断模式禁止。

在配置完成的最后,要将WTCON的第5位置1,使能看门狗程序。

(2)WTDAT、WTCNT

(3)WTCLRINT
当看门狗被设置为中断模式时,此寄存器用来清除中断。

补充:当设置看门狗为中断模式时

首先要将看门狗的中断物理号与ISR通过VECTADDR进行绑定:

之后将中断配置好之后使能中断,并且在ISR程序执行的末尾设置清中断和清看门狗中断。

嵌入式知识-ARM裸机-学习笔记(8):SoC定时器与看门狗(WDT)相关推荐

  1. 嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析)

    嵌入式知识-ARM裸机-学习笔记(2):利用GPIO来控制LED(附mkv210_image.c文件解析) 首先声明该博客是针对朱有鹏老师的嵌入式课程进行笔记的总结. 一.通过GPIO控制点亮LED( ...

  2. 嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210)

    嵌入式知识-ARM裸机-学习笔记(9):SD卡启动详解(S5PV210) 一.SD卡介绍 1. SD卡背景知识和特点 SD卡.MMC卡.MicroSD.TF卡:这些卡其实内部就是Flash存储颗粒,比 ...

  3. 嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器

    嵌入式知识-ARM裸机-学习笔记(12):ADC模数转换器 一.ADC 1. 什么是ADC ADC(analog digital converter):模数转换(也就是模拟量转换为数字量).由于CPU ...

  4. (实验6,实验7)单片机,STM32F4学习笔记,代码讲解【看门狗实验】【正点原子】【原创】

    文章目录 其它文章链接,独家吐血整理 实验现象(实验六) 主程序(实验六) 独立看门狗初始化程序(实验六) 代码讲解(实验六) 实验现象(实验七) 主程序(实验七) 窗口看门狗初始化程序(实验七) 代 ...

  5. MSP430F5529 DriverLib 库函数学习笔记(十四)看门狗定时器 (WDT)

    目录 硬知识 看门狗定时计数器 (WDTCNT) 看门狗模式 定时计数模式 看门狗定时器中断 时钟故障保护功能 低功耗模式下的看门狗操作 看门狗定时器控制寄存器 WDT_A API (机翻) 参数 上 ...

  6. 朱老师ARM裸机学习笔记(一):计算机基础知识

    RISC和CISC的区别 CISC(complex instruction-set computer)复杂指令集 特点: 指令较多,较丰富,CISC的CPU 较难设计,Intel是典型的CISC体系C ...

  7. 朱老师ARM裸机学习笔记(四):S5PV210启动过程详解

    常用器件特性 内存: SRAM 静态内存 特点就是容量小.价格高,优点是不需要软件初始化直接上电就能用 DRAM 动态内存 特点就是容量大.价格低,缺点就是上电后不能直接使用,需要软件初始化后才可以使 ...

  8. 我的内核学习笔记9:Intel内部看门狗iTCO_wdt驱动

    本文对Intel e3800内部看门狗驱动源码进行分析. 一.概述 Intel e3800内部看门狗在手册的PCU - Power Management Controller (PMC)章节中介绍-- ...

  9. ESP32学习笔记(40)——Watchdog看门狗使用

    一.简介 看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次.说的复杂一点,看门狗就是能让 ...

最新文章

  1. 道歉无用!被 Linux “拉黑”的明尼苏达大学还在努力重获信任
  2. 咕咚技术总监唐平麟:神策使我们的数据平台成本降低约 75%,迭代效率提升 2~3 倍...
  3. 三百元月薪的小资生活
  4. 修改mysql表的itemId字段为自增长SQL语句
  5. SolrCloud7.4(Jetty容器)+mysql oracle 部署与应用
  6. 非线性动力学_非线性动力学特辑 低维到高维的联通者
  7. vim 配置_一步一步配置vim(4)--与latex进行实时显示
  8. Spring – IoC 容器
  9. 下列网络设备中,能够抑制网络风暴的是( )
  10. 如何编写有效的Bug Report
  11. Oracle 权限管理
  12. 财务分析思维导图模板分享
  13. c语言烟花表白程序代码,C语言实战之浪漫烟花表白程序代码
  14. 555定时器组成的应用之流水灯
  15. 关于token和refresh token
  16. word论文各类对齐终极解决方法——制表符
  17. QT之Excel表格操作
  18. 英语构词法软件wordformation发布全新1.0版本
  19. 畅捷通T+ v2接口 发布IIS报错 RsaUsingSha with PSS
  20. 1.6Excel--查找和引用函数

热门文章

  1. linux系统下下载Python,下载和安装Python
  2. 通过ip远程控制电脑
  3. 抖音开放平台网站应用:用户未绑定应用白名单,请授权trial.whitelist权限
  4. 加密与授权 Oauth2.0
  5. 魔改短线利器DPO指标,频繁交易也能盈利超30倍?手机同花顺可用!
  6. search搜索页面
  7. c语言编写加油站课设题目,城市学院c语言实训题目求答案.doc
  8. 多多情报通:拼多多店铺申请成功以后怎么做?
  9. 转:字符编码笔记:SCII,Unicode和UTF-8
  10. 基于ArcScene的裸眼立体图制作说明