定时器中断实验.ppt_第1页
定时器中断实验.ppt_第2页
定时器中断实验.ppt_第3页
定时器中断实验.ppt_第4页
定时器中断实验.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、定时器中断实验 目的: 了解时钟系统 熟悉ARM定时器中断 会使用定时器中断产生PWM波形,每当程序需要延时时,我们是利用循环语句来实现。 这种方法的延时简单,但不是很精确,就是说不能得到确切的一段时间的延时。 因此当需要精确延时时,就不能采用这种方法了。一般是利用定时器来实现。,MCU的主时钟源主要是外部晶振或外部时钟,而用的最多的是外部晶振,系统内所使用的时钟都是外部时钟源经过一定的处理得到的。 由于外部时钟源的频率一般不能满足系统所需要的高频条件,所以往往需要PLL(锁相环)进行倍频处理。,在s3c2440中,有2个不同的PLL,一个是MPLL,另一个是UPLL。 UPLL是给USB提供

2、48MHz。 MPLL处理后能够得到三个不同的系统时钟: FCLK、HCLK和PCLK FCLK是主频时钟,用于ARM920T内核; HCLK用于AHB总线设备,如ARM920T,内存控制,中断控制,LCD控制,DMA以及USB主模块;PCLK用于APB总线设备, 如外围设备的看门狗,IIS,I2C,PWM,MMC接口,ADC,UART,GPIO,RTC以及SPI。,三个系统时钟(FCLK、HCLK和PCLK)是有一定的比例关系 这种关系是通过寄存器CLKDIVN中的HDIVN位和PDIVN位来控制的 因此我们只要知道了FCLK,再通过这两位的控制,就能确定HCLK和PCLK,而FCLK是如何

3、得到的呢? 它是通过输入时钟(即外部时钟源)的频率,经过一个计算公式得到的,这个计算公式(查阅数据手册)还需要三个参数(MDIV、PDIV、SDIV),而这三个参数是经过寄存器MPLLCON配置得到的,最后,我们用最清晰的线路来绘制一下时钟的产生过程: 外部时钟源通过寄存器MPLLCON得到FCLK再通过寄存器CLKDIVN得到HCLK和PCLK。,在本开发板上,外部晶振为12MHz,进过MPLL倍频以后得到400MHz的FCLK, 而FCLK、HCLK、PCLK之间的比例关系为1:4:8, 因此HCLK为100MHz,PCLK为50MHz,启动文件中,定时器中断,定时器输出时钟频率= PCL

4、K (prescaler+1) divider 其中prescaler值由TCFG0决定,divider值由TCFG1决定,而prescaler只能取0255之间的整数,divider只能取2、4、8和16。,比如已知PCLK为50MHz,而我们想得到某一定时器的输出时钟频率为25kHz,则依据公式可以使 PCLK (prescaler+1) divider prescaler等于249,divider等于8。,25kHz 这个频率用来给计数器TCNTB0用。 假如:我们设置TCNTB0=1000, TCNTB0从1000减到0需要(1000/25000)秒 如果我们要定1秒钟的时间,怎么设置

5、TCNTB0 ?,当TCNTB0 减到0的时候,就会产生TIMER0中断,也就是定时器0中断, 当然在程序前要先把中断相关的屏弊打开, 和定义TIMER0中断服务程序. 当设置了频率和计数值之后,还要在TCON寄存器中来更新你设置的TCNTB0值,并可以启动定时器。,TCON 定时器控制寄存器,是用来设置自动重载,更新TCNTB0,和启动,停止定时器用的,/中断服务程序 void _irq Timer4_ISR(void) rSRCPND = rSRCPND | (0 x114); rINTPND = rINTPND | (0 x114); . . ,注意: 中断服务程序要以 _irq 开头,

6、一般在中断服务程序中,清除本中断标志,练习: 用TIMER4中断来控制,蜂鸣器的响声,每0.5秒响一次。,PWM(Pulse Width Modulation) 脉宽调制, 它是利用微控制器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用于测量、通信、功率控制与变换等许多领域。,s3c2440芯片中一共有5个16位的定时器,其中有4个定时器(定时器0定时器3)具有脉宽调制功能, 因此用s3c2440可以很容易地实现PWM功能。,PWM是通过引脚TOUT0TOUT3输出的,而这4个引脚是与GPB0GPB3复用的, 因此要实现PWM功能首先要把相应的引脚配置成TOUT输出。,再设置定时

7、器的输出时钟频率,它是以PCLK为基准,再除以用寄存器TCFG0配置的prescaler参数,和用寄存器TCFG1配置的divider参数。,然后设置脉冲的具体宽度,它的基本原理是通过寄存器TCNTBn来对寄存器TCNTn(内部寄存器)进行配置计数,TCNTn是递减的,如果减到零,则它又会重新装载TCNTBn里的数,重新开始计数,而寄存器TCMPBn作为比较寄存器与计数值进行比较,当TCNTn=TCMPBn时,TOUTn输出的电平会翻转,而当TCNTn减为零时,电平会又翻转过来,就这样周而复始。,因此这一步的关键是设置寄存器TCNTBn和TCMPBn, 前者可以确定一个计数周期的时间长度, 而后者可以确定方波的占空比。,从上面的图来看, 谁来确定周期? 谁来确实占空比?,最后就是对PWM的控制,它是通过寄存器TCON来实现的 启动/终止位,用于启动和终止定时器 手动更新位,用于手动更新TCNTBn和TCMPBn 输出反转位,用于改变输出的电平方向,使原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论