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

本文主要是介绍国产嵌入式教学实验箱操作教程:2-13 定时器控制实验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、实验目的

熟悉定时器的基本结构,学习定时器的功能和控制方法,并实现基于定时器中断方式控制程序。

二、实验原理

定时器

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)外部事件捕获相连的定时器引脚(如果引脚可用)

image.png

定时器的时钟源

时钟信号可分为分为内部时钟和外部时钟输入,定时器0和定时器1的时钟为PLL0_AUXCK(旁路时钟,24MHz),定时器2和定时器3默认状态下使用的时钟为PLL0_SYSCLK2(为系统频率的二分之一,228MHz),可通过定时器配置将其时钟设置为PLL1_SYSCLK2(可以避免因CPU主频变化对设备产生的不利影响)。

定时器时钟源由定时器控制寄存器 (TCR) 时钟源 (CLKSRC12) 位选择。复位后,时钟源为内部时钟。两个时钟源都可以驱动定时器时钟:
• 设置 CLKSRC12 = 0 为内部时钟。
• 设置 CLKSRC12 = 1 为输入引脚 TM64P_IN12 外部时钟。

image.png

实验中使用的是定时器 2,默认情况下定时器 2 使用 PLL0SYSCLK2,所以时钟固定为 CPU 频率二分频。即时钟为:PLL0_SYSCLK2=CPU 频率/2=456MHz/2=228MHz

所以64位定时器的时间间隔:T=计数周期*(1/PLL0_SYSCLK2) =0x0D970100/228000000s=1s
其中0x0D970100 是程序中设定的计数周期,在main.c的宏定义中设定。

image.png

程序流程

程序流程设计中首先要进行外设使能配置,接着进行管脚复用配置和定时器初始化,然后进行DSP中断初始化,接着初始化定时器中断,触发中断后在中断中控制LED闪烁。

image.png

源码

管脚复用源码

基于StarterWare控制外设时可调用对应的API接口,无需配置复杂的寄存器。GPIO管脚复用配置的函数源码可以查看GPIO.c。

管脚复用配置。

GPIO复用配置操作直接封装成了函数,使用时,直接包含“TL6748.h”文件 即可。

StarterWare API 接口。

GPIOBank0Pin0PinMuxSetup();

image.png

定时器配置源码

配置定时器的函数源码和函数使用说明可以查看timer.c。其中,第一个参数是定时器模块寄存器的基地址,第二个参数是用于配置定时器模块。

定时器配置

使用 StarterWare 的库来配置定时器。

使用时,直接包含“timer.h”文件 即可。

StarterWare API 接口。

void TimerConfigure(unsigned int baseAddr, unsigned int config)

image.png

周期配置源码

配置定时器周期的函数源码和函数使用说明可以查看timer.c。其中,第一个参数是定时器模块寄存器的基地址,第二个参数是要设置周期的定时器,第三个参数是设置的周期大小。

定时器周期配置。

使用 StarterWare 的库来配置定时器周期。

使用时,直接包含“timer.h”文件 即可。

StarterWare API 接口。

void TimerPeriodSet(unsigned int baseAddr, unsigned int timer, unsigned int period)

image.png

定时器使能源码

配置使能定时器的函数源码和函数使用说明可以查看timer.c。其中,第一个参数是定时器模块寄存器的基地址,第二个参数是要使能的定时器,第三个参数是配置使能定时器的模式。

定时器使能配置。

使用 StarterWare 的库来使能定时器。

使用时,直接包含“timer.h”文件 即可。

StarterWare API 接口。

void TimerEnable(unsigned int baseAddr, unsigned int timer, unsigned int enaMode)

image.png

三、操作现象

实验设备

本实验使用的硬件接口为LED,所需硬件为实验板、仿真器和电源。

image.png

硬件连接

(1)连接仿真器和电脑的USB接口,

(2)将拨码开关拨到DEBUG模式01111,连接实验箱电源,拨动电源开关上电。

image.png

软件操作

导入工程,选择Demo文件夹下的对应工程

编译工程

将CCS连接实验箱并加载程序

点击运行程序,底板4个LED会同时闪烁

实验结束后,先点击黄色按钮暂停程序运行,再点击红色按钮退出CCS与实验箱的连接,最后实验箱断电即可。

image.png

这篇关于国产嵌入式教学实验箱操作教程:2-13 定时器控制实验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/732138

相关文章

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE

SQLite3 在嵌入式C环境中存储音频/视频文件的最优方案

《SQLite3在嵌入式C环境中存储音频/视频文件的最优方案》本文探讨了SQLite3在嵌入式C环境中存储音视频文件的优化方案,推荐采用文件路径存储结合元数据管理,兼顾效率与资源限制,小文件可使用B... 目录SQLite3 在嵌入式C环境中存储音频/视频文件的专业方案一、存储策略选择1. 直接存储 vs

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺