国产嵌入式教学实验箱操作教程: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/402202.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【FreeRTOS基础入门】事件组与同步点

文章目录 前言一、事件组是什么案例1.1 事件组的概念 二、事件组的操作2.1 事件组与其他实现同步与互斥方法的区别2.2 创建事件组2.3 删除事件组2.4 设置事件2.5 等待事件2.6 示例代码 三、同步点3.1 同步点是什么3.2 设置同步点 总结 前言 FreeRTOS是一个广泛应用于嵌入式系统…

我的第一个浏览器插件网页一键上传的开发历史

前言 一键上传选中的网页内容,实现知识快速收藏。如飞书剪存,有道云剪报,MrDoc速记。早在2008年,我参考了有道云一键上传,实现了一个简单的浏览器插件,能方便保存网页内容到个人网站。这些插件目前都很难兼…

Day32 进程Process

文章目录 1.什么是进程1.1 概念1.2 特点1.3 进程段1.4 进程分类1.5 进程状态1.6 进程状态切换图1.7 调度进程 2.进程函数接口2.1 创建进程 fork()2.2 回收资源函数2.3 结束进程2.4 获取进程号 3.exec函数族(了解)4.守护进程 Daemon4.1 守护进程的特点4.2…

提升技术栈的秘诀:Spring Cloud学习网站带你飞跃职业瓶颈!

介绍:Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具集。 Spring Cloud利用Spring Boot的开发便利性简化了分布式系统基础设施的开发。例如,服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等都是其内置的功能。它的优势包括…

LangChain支持哔哩哔哩视频总结

是基于LangChain框架下的开发,所以最开始请先 pip install Langchain pip install bilibili-api-python 技术要点: 使用Langchain框架自带的Document loaders 修改BiliBiliLoader的源码,自带的并不支持当前b站的视频加载 源码文件修改&a…

前端架构: 实现脚手架终端UI样式之ANSI escape code, Chalk, Ora介绍

在脚手架当中实现命令行的UI显示 1 )概述 在命令行中,如果想实现除传统的常规文本以外的内容比如想对字体进行加粗斜体下划线,包括对它改变颜色改变前景色改变后景色等等需要借助一个叫做 ANSI escape code 这样的一个概念它其实是一个标准&…

文献速递:GAN医学影像合成--基于生成对抗网络的肺部图像分类的多域医学图像翻译生成

文献速递:GAN医学影像合成–基于生成对抗网络的肺部图像分类的多域医学图像翻译生成 01 文献速递介绍 在2019年底,一种称为2019冠状病毒病(COVID-19)的新型冠状病毒肺炎出现,迅速成为全球性大流行。感染COVID-19可以…

18.贪心算法

排序贪心 区间贪心 删数贪心 统计二进制下有多少1 int Getbit_1(int n){int cnt0;while(n){nn&(n-1);cnt;}return cnt; }暴力加一维前缀和优化 #include <iostream> #include <climits> using namespace std; #define int long long const int N2e510; in…

热门游泳耳机哪个牌子好,吐血整理全网高口碑机型!

近年来&#xff0c;游泳已经成为众多人们喜爱的运动项目之一。而在游泳过程中&#xff0c;许多人希望能够享受到音乐的陪伴&#xff0c;以增加运动的乐趣。然而&#xff0c;由于阻力、防水和水压等问题&#xff0c;传统的耳机并不能满足游泳者的需求。因此&#xff0c;在市面上…

基于JAVA+SpringBoot+Vue的前后端分离的电子商城

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今数字化时代&…

bat判断vmware 是否已安装

要通过批处理脚本&#xff08;.bat&#xff09;判断VMware是否已安装&#xff0c;您可以尝试以下方法&#xff1a; 检查VMware的进程 您可以检查VMware相关的进程是否在运行。例如&#xff0c;VMware Workstation的进程名通常是vmware-workstation.exe。 echo off tasklist /…

计网 - 域名解析的工作流程

文章目录 Pre引言1. DNS是什么2. 域名结构3. 域名解析的工作流程4. 常见的DNS记录类型5. DNS安全6. 未来的发展趋势 Pre 计网 - DNS 域名解析系统 引言 在我们日常使用互联网时&#xff0c;经常会输入各种域名来访问网站、发送电子邮件或连接其他网络服务。然而&#xff0c;我…

【命令行工具kubectl】

如何在k8s的任意节点使用用kubectl # 正常在node节点上是无法执行kubectl命令 [rootk8s-node-01 ~]# kubectl get pods The connection to the server localhost:8080 was refused - did you specify the right host or port?1、将master节点中/etc/kubernetes/,admin.conf拷…

性能分析5部曲:瓶颈分析与问题定位,如何快速解决瓶颈?

一、引言 很多做性能测试的同学都问过我这样一个问题&#xff1a;鱼哥(Carl_奕然)&#xff0c;你说性能测试的重点是什么? 我的回答很简单&#xff1a;瓶颈分析与问题定位。 在性能项目的整个周期&#xff0c;不管是脚本设计&#xff0c;脚本编写还是脚本执行&#xff0c;都…

fastjson解析自定义get方法导致空指针问题

背景 为了在日志中把出入参打印出来&#xff0c;以便验证链路和排查问题&#xff0c;在日志中将入参用fastjson格式化成字符串输出&#xff0c;结果遇到了NPE。 问题复现 示例代码 public static void main(String[] args) {OrganizationId orgId new OrganizationId();N…

Nginx -2

接着上文写 5.4.7 验证模块 需要输入用户名和密码 模块名称&#xff1a;ngx_http_auth_basic_module 访问控制基于模块 ngx_http_auth_basic_module 实现&#xff0c;可以通过匹配客户端资源进行限制 语法&#xff1a; Syntax: auth_basic string | off; Default: auth_ba…

RK3568平台开发系列讲解(Linux系统篇)编写I2C客户端驱动程序

🚀返回专栏总目录 文章目录 一、定义和注册I2C驱动程序二、在设备树中实例化I2C设备——新方法三、总结沉淀、分享、成长,让自己和他人都能有所收获!😄 配置I2C设备基本上分为两个步骤。 定义并注册I2C驱动程序定义并注册I2C设备在DT中,I2C设备属于非存储器映射设备系列…

MySQL报错:sql_mode=only_full_group_by解决方法

Linux环境 ubuntu 22.04 MySQL是8.0.35版本 问题描述 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column auth_system.t_class_temp_config.id which is not functionally dependent on columns in GROUP BY clause; this is inco…

OOTDiffusion:一个开源可控的虚拟服装试穿工具,效果接近商用!

目录 前言介绍 主要功能 相关链接 安装部署 效果展示 前言介绍 继谷歌推出了Tryon Diffusion,阿里推出了Outfit Anything, 亚马逊也推出了Diffuse to Choose。至此几大头部电商也都在虚拟试衣技术上完成了布局。基于扩散模型的技术基本已经成为现在主流应…

2024最佳住宅代理IP服务商推荐

跨境出海已成为了近几年的最热趋势&#xff0c;大批量的企业开始开拓海外市场&#xff0c;而海外电商领域则是最受欢迎的切入口。新兴的tiktok、Temu&#xff0c;老牌的Amazon、Ebay&#xff0c;热门的Etsy、Mecari等等都是蓝海一片。跨境入门并不难&#xff0c;前期的准备中不…