打印
[DSP编程]

国产嵌入式教学实验箱操作教程:2-13 定时器控制实验

[复制链接]
9254|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
创龙教仪|  楼主 | 2024-2-21 14:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、实验目的
熟悉定时器的基本结构,学习定时器的功能和控制方法,并实现基于定时器中断方式控制程序。
二、实验原理定时器
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与实验箱的连接,最后实验箱断电即可。

使用特权

评论回复

相关帖子

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

本版积分规则

66

主题

71

帖子

1

粉丝