一、实验目的 熟悉定时器的基本结构,学习定时器的功能和控制方法,并实现基于定时器中断方式控制程序。 二、实验原理定时器TMS320CC6748有4个定时器/计数器,均可配置为64位计数器、两个独立32位计数器及自动重装32位计数器,可以产生周期中断DMA事件及外部事件。定时器/计数器还可以用于捕获外部输入信号边缘并计数。此外,定时器1还可以用作64位看门狗计数器。本实验使用的是定时器2。 定时器的功能(1)定时 时钟源一般来源于DSP内部,当然也可以选择来自于外部。 (2)计数
可以利用它的功能来计算外部脉冲在一段时间内到来的次数,所以叫做计数器(记录外部脉冲的次数)。因为内部有一个计数的count,如果用作定时就是先输入一个数字,然后在来了一个时钟之后count自动减一。如果用成计数就是在一个脉冲到来之后count自动加一。 (3)看门狗
一些定时器设计有信号连接到内部器件的复位,因此可用于看门狗定时器模式。 定时器的特性(1)64 位自增计数器 (2)定时器模式: 64 位通用定时器模式(低32位定时器叫Timer12,高32位定时器叫Timer34) 双 32 位非链式通用定时器模式模式 双 32 位链式定时器模式 看门狗定时器模式 (3)2种时钟源: 内部时钟 外部时钟/事件输入定时器的相连引脚 (4)3种工作模式: 一次工作 (定时器运行一个周期然后停止) 持续工作 (定时器在每个周期结束自动清零并继续工作) 持续工作周期性重载(定时器在每个周期自动获取重载寄存器的值并继续工作) (5)产生 CPU 中断 (6)产生输出事件让设备复位(仅看门狗模式) (7)产生 DMA 同步事件 (8)产生输出事件到定时器输出引脚(如果引脚可用) (9)外部事件捕获相连的定时器引脚(如果引脚可用) 定时器的时钟源时钟信号可分为分为内部时钟和外部时钟输入,定时器0和定时器1的时钟为PLL0_AUXCK(旁路时钟,24MHz),定时器2和定时器3默认状态下使用的时钟为PLL0_SYSCLK2(为系统频率的二分之一,228MHz),可通过定时器配置将其时钟设置为PLL1_SYSCLK2(可以避免因CPU主频变化对设备产生的不利影响)。 定时器时钟源由定时器控制寄存器 (TCR) 时钟源 (CLKSRC12) 位选择。复位后,时钟源为内部时钟。两个时钟源都可以驱动定时器时钟:
• 设置 CLKSRC12 = 0 为内部时钟。
• 设置 CLKSRC12 = 1 为输入引脚 TM64P_IN12 外部时钟。 实验中使用的是定时器 2,默认情况下定时器 2 使用 PLL0SYSCLK2,所以时钟固定为 CPU 频率二分频。即时钟为:PLL0_SYSCLK2=CPU 频率/2=456MHz/2=228MHz 所以64位定时器的时间间隔:T=计数周期*(1/PLL0_SYSCLK2) =0x0D970100/228000000s=1s
其中0x0D970100 是程序中设定的计数周期,在main.c的宏定义中设定。 程序流程程序流程设计中首先要进行外设使能配置,接着进行管脚复用配置和定时器初始化,然后进行DSP中断初始化,接着初始化定时器中断,触发中断后在中断中控制LED闪烁。 源码管脚复用源码 基于StarterWare控制外设时可调用对应的API接口,无需配置复杂的寄存器。GPIO管脚复用配置的函数源码可以查看GPIO.c。 管脚复用配置。 GPIO复用配置操作直接封装成了函数,使用时,直接包含“TL6748.h”文件 即可。 StarterWare API 接口。 GPIOBank0Pin0PinMuxSetup(); 定时器配置源码 配置定时器的函数源码和函数使用说明可以查看timer.c。其中,第一个参数是定时器模块寄存器的基地址,第二个参数是用于配置定时器模块。 定时器配置 使用 StarterWare 的库来配置定时器。 使用时,直接包含“timer.h”文件 即可。 StarterWare API 接口。 void TimerConfigure(unsigned int baseAddr, unsigned int config) 周期配置源码 配置定时器周期的函数源码和函数使用说明可以查看timer.c。其中,第一个参数是定时器模块寄存器的基地址,第二个参数是要设置周期的定时器,第三个参数是设置的周期大小。 定时器周期配置。 使用 StarterWare 的库来配置定时器周期。 使用时,直接包含“timer.h”文件 即可。 StarterWare API 接口。 void TimerPeriodSet(unsigned int baseAddr, unsigned int timer, unsigned int period) 定时器使能源码 配置使能定时器的函数源码和函数使用说明可以查看timer.c。其中,第一个参数是定时器模块寄存器的基地址,第二个参数是要使能的定时器,第三个参数是配置使能定时器的模式。 定时器使能配置。 使用 StarterWare 的库来使能定时器。 使用时,直接包含“timer.h”文件 即可。 StarterWare API 接口。 void TimerEnable(unsigned int baseAddr, unsigned int timer, unsigned int enaMode) 三、操作现象实验设备本实验使用的硬件接口为LED,所需硬件为实验板、仿真器和电源。 硬件连接(1)连接仿真器和电脑的USB接口, (2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。 软件操作导入工程,选择Demo文件夹下的对应工程 编译工程 将CCS连接实验箱并加载程序 点击运行程序,底板4个LED会同时闪烁 实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。
|