打印

NXP LPC1768宝马开发板第八章time定时器

[复制链接]
2569|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第八章    宝马1768——Time定时器
开发环境:集成开发环境μVision4 IDE版本4.60.0.0
主机系统:Microsoft Windows XP
开发平台:旺宝NXP LPC1768开发板


8.1 TIME定时器
8.2 硬件描述
8.3 程序说明
8.4 实验现象
    1Time定时器:
   在一些需要精确延时的场合,我们常常使用定时器来达到准确控制时间的目的。NXPLPC1768配备了TIMER0\TIMER1\TIMER2\TIMER3四个定时器\计数器。我们这次实验用的是TIMER0
2、硬件描述:
在使用定时器之前,我们以定时器0定时0.5秒移动LED灯为例,进行讲解。首先了解一下硬件电路的链接。与MCU链接的IO管脚电路(如下图)
LED的硬件电路(如下图)插上跳线帽JP8
      
  
3、程序说明:  
MCU如何配置定时器0
打开MCU的技术手册,我们可以看到“21 定时器03”,在这儿有一个引路资料,如下图
注意功率,外设时钟,中断这几个地方,依次找到相应的资料。
看过这些以后,就可以整理一下控制的顺序:
第一步:功率。资料说明,复位后,定时器01使能,所以此处我们不用关心定时器0的功率。
第二步:外设时钟。此处,看一下系统初始化,基本上所有的外设时钟都初始化过了。
至于对于计数源,下面也有相应的配置介绍
第三步:中断。此处需要查一个MCR,CCR寄存器做什么用的。
MCR寄存器介绍如下
MCR引出MR0,及TC
上图资料说,MCR用于计数匹配,就是TC是一个一直不停计数的计数器,当TCMCR数值相同时,通过判断MR0来决定产生中断还是做什么其他的事。关于TC,有如下说明
关于MR0有如下说明
3.1程序的编写
程序的分析如下:
由上面硬件总结,软件要依次做到:
第一步:功率。默认定时器0是打开的。
第二步:打开系统时钟;
打开系统时钟,在系统起始文件已经给出,如下截图(srartup_lcp17xx.s文件中)
第三步:中断。
A、中断初始化
在初始化之前,我们算一下时钟源,也就是算一下定时1S如何实现。
TC计数的是CCLK,如果记不住时钟源,我们可以看一下下面这个截图,此图来自于软件调试(可以看一个时钟章节,有专讲时钟源)。
如果我们以TC计数为100MHZ为例(也就是PCLKSEL0PCLKSEL1那两个位为01,不明白的看一下上面提到的计数据PCLKSEL设置)。
如果我要计数1S,那么我就要设置MCR为:100*1000000 - 1 = 1S(为什么减1,想一下TC是从几开始计数的)
MCR就要等于100 000 000 - 1
如果,TC计数4分频
MCR要计数1S就要设置为100/4*1000 000 = 1S
MCR就要等于25000 000 - 1
B、使能计数器TCR,对应查相应资料
第四步:写中断处理函数;
中断的处理函数,可以自行写入自己想做的事,可以设置标志位,比如,例程中的LED的移位。
3.2 程序代码
    有了上面的寄存器讲解,下面的程序,可以自己对手册进行效仿,多练习,很快就能熟练使用。
使能计数器0
uint8_t timer_num  第几个定时器
uint32_t TimerInterval 设置MR计数的个数
中断处理函数
主函数
4、实验现象:
     用定时器定时控制LED闪烁,使用时需将 JP8 跳线冒连接。   下载本程序,将看到开发板上的LED4。。。LED11间隔0.5s按顺序点亮。



沙发
houyue——| | 2015-1-27 12:00 | 只看该作者

使用特权

评论回复
板凳
szopenmcu|  楼主 | 2015-1-28 14:02 | 只看该作者
houyue—— 发表于 2015-1-27 12:00

:handshake:handshake

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专业生产销售STM32开发板,仿真器,http://openmcu.taobao.com/

71

主题

283

帖子

11

粉丝