第八章 宝马1768——Time定时器
开发环境:集成开发环境μVision4 IDE版本4.60.0.0 主机系统:Microsoft Windows XP 开发平台:旺宝NXP LPC1768开发板
8.1 TIME定时器 8.2 硬件描述 8.3 程序说明 8.4 实验现象 1、Time定时器: 在一些需要精确延时的场合,我们常常使用定时器来达到准确控制时间的目的。NXP为LPC1768配备了TIMER0\TIMER1\TIMER2\TIMER3四个定时器\计数器。我们这次实验用的是TIMER0。 2、硬件描述:在使用定时器之前,我们以定时器0定时0.5秒移动LED灯为例,进行讲解。首先了解一下硬件电路的链接。与MCU链接的IO管脚电路(如下图) LED的硬件电路(如下图)插上跳线帽JP8。 3、程序说明: MCU如何配置定时器0 打开MCU的技术手册,我们可以看到“21 定时器0~3”,在这儿有一个引路资料,如下图 注意功率,外设时钟,中断这几个地方,依次找到相应的资料。 看过这些以后,就可以整理一下控制的顺序: 第一步:功率。资料说明,复位后,定时器0、1使能,所以此处我们不用关心定时器0的功率。 第二步:外设时钟。此处,看一下系统初始化,基本上所有的外设时钟都初始化过了。 至于对于计数源,下面也有相应的配置介绍 第三步:中断。此处需要查一个MCR,CCR寄存器做什么用的。 MCR寄存器介绍如下 由MCR引出MR0,及TC 上图资料说,MCR用于计数匹配,就是TC是一个一直不停计数的计数器,当TC与MCR数值相同时,通过判断MR0来决定产生中断还是做什么其他的事。关于TC,有如下说明 关于MR0有如下说明 3.1程序的编写 程序的分析如下: 由上面硬件总结,软件要依次做到: 第一步:功率。默认定时器0是打开的。 第二步:打开系统时钟; 打开系统时钟,在系统起始文件已经给出,如下截图(srartup_lcp17xx.s文件中) 第三步:中断。 A、中断初始化 在初始化之前,我们算一下时钟源,也就是算一下定时1S如何实现。 TC计数的是CCLK,如果记不住时钟源,我们可以看一下下面这个截图,此图来自于软件调试(可以看一个时钟章节,有专讲时钟源)。 如果我们以TC计数为100MHZ为例(也就是PCLKSEL0和PCLKSEL1那两个位为0和1,不明白的看一下上面提到的计数据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按顺序点亮。
|