C6748的定时器在32位模式下有两种模式选择,一种是关联模式(chained mode),另一种是非关联模式(unchained mode)。可以通过设置定时器全局寄存器(timer global control register (TGCR))的TIMMODE位来配置定时器的模式。

在关联模式下,高位的32位定时器timer34被用来作为低位的32位定时器timer12的时钟预分频器,timer34对输出定时器的时钟进行分频,然后再提供分频后的时钟给timer12作为计数的时钟。当timer12计数到周期值PRD12时,就会产生可屏蔽中断TINT12以及定时器EDMA事件(TEVT12).Dual 32位定时器关联模式工作框图如图所示:

(指南P1389)

关联模式下的定时器初始化及中断服务函数代码如下:

/****************************************************************************/
/* */
/* 定时器 / 计数器初始化 */
/* */
/****************************************************************************/
voidTimerInit(void)
{// 配置定时器 / 计数器 1 为 32 位模式
TimerConfigure(SOC_TMR_1_REGS, TMR_CFG_32BIT_CH_CLK_INT);// 设置周期
TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER12, TMR_PERIOD12);
TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER34, TMR_Prescale);// 使能定时器 / 计数器 1
TimerEnable(SOC_TMR_1_REGS, TMR_TIMER12, TMR_ENABLE_CONT);
}
/****************************************************************************/
/* */
/* 中断服务函数 */
/* */
/****************************************************************************/
voidTimer12Isr(void)
{
// 禁用定时器 / 计数器中断
TimerIntDisable(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);// 清除中断标志
IntEventClear(SYS_INT_T64P1_TINT12);
TimerIntStatusClear(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);Time12++;// 使能定时器 / 计数器中断
TimerIntEnable(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);
}

在非关联模式下,64位的定时器是作为两个32位的定时器独立运行的。其中,高位的32位定时器timer34的计数时钟是经过预分频的,分频系数装载在PSC34寄存器中,低位的32位寄存器timer12的计数时钟则没有经过分频,非关联模式的工作框图如下所示:

(指南P1391)

非关联模式下的定时器初始化及中断服务函数代码如下:

/****************************************************************************/
/* */
/* 定时器 / 计数器初始化 */
/* */
/****************************************************************************/
voidTimerInit(void)
{// 配置定时器 / 计数器 1 为 32 位模式
TimerConfigure(SOC_TMR_1_REGS, TMR_CFG_32BIT_UNCH_CLK_BOTH_INT);// 设置周期
TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER12, TMR_PERIOD12);
TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER34, TMR_PERIOD34);// 使能定时器 / 计数器 1
TimerEnable(SOC_TMR_1_REGS, TMR_TIMER_BOTH, TMR_ENABLE_CONT);
}
/****************************************************************************/
/* */
/* 中断服务函数 */
/* */
/****************************************************************************/
voidTimer12Isr(void)
{
// 禁用定时器 / 计数器中断
TimerIntDisable(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);// 清除中断标志
IntEventClear(SYS_INT_T64P1_TINT12);
TimerIntStatusClear(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);Time12++;// 使能定时器 / 计数器中断
TimerIntEnable(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);
}voidTimer34Isr(void)
{
// 禁用定时器 / 计数器中断
TimerIntDisable(SOC_TMR_1_REGS, TMR_INT_TMR34_NON_CAPT_MODE);// 清除中断标志
IntEventClear(SYS_INT_T64P1_TINT34);
TimerIntStatusClear(SOC_TMR_1_REGS, TMR_INT_TMR34_NON_CAPT_MODE);Time34++;// 使能定时器 / 计数器中断
TimerIntEnable(SOC_TMR_1_REGS, TMR_INT_TMR34_NON_CAPT_MODE);
}

在非关联模式下,还可以设置定时器高位32位部分timer34的时钟预分频值。Timer34使用TGCR寄存器的TDDR34(timer divide-down ration)字段构建一个4位的预分频计数器寄存器,PSC34装载了预分频的值,对定时器输入时钟internal clock进行预分频后再提供给timer34,则timer34的真正的计数时钟频率是Finternal/(PSC34+1).带预分频非关联模式下的定时器初始化及中断服务函数代码如下:

/****************************************************************************/
/* */
/* 定时器 / 计数器初始化 */
/* */
/****************************************************************************/
voidTimerInit(void)
{// 配置定时器 / 计数器 1 为 32 位模式
TimerConfigure(SOC_TMR_1_REGS, TMR_CFG_32BIT_UNCH_CLK_BOTH_INT);// 设置周期
TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER12, TMR_PERIOD12);
TimerPeriodSet(SOC_TMR_1_REGS, TMR_TIMER34, TMR_PERIOD34);
TimerPreScalarCount34Set(SOC_TMR_1_REGS, TMR_Prescale);// 使能定时器 / 计数器 1
TimerEnable(SOC_TMR_1_REGS, TMR_TIMER_BOTH, TMR_ENABLE_CONT);
}
/****************************************************************************/
/* */
/* 中断服务函数 */
/* */
/****************************************************************************/
voidTimer12Isr(void)
{
// 禁用定时器 / 计数器中断
TimerIntDisable(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);// 清除中断标志
IntEventClear(SYS_INT_T64P1_TINT12);
TimerIntStatusClear(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);Time12++;// 使能定时器 / 计数器中断
TimerIntEnable(SOC_TMR_1_REGS, TMR_INT_TMR12_NON_CAPT_MODE);
}voidTimer34Isr(void)
{
// 禁用定时器 / 计数器中断
TimerIntDisable(SOC_TMR_1_REGS, TMR_INT_TMR34_NON_CAPT_MODE);// 清除中断标志
IntEventClear(SYS_INT_T64P1_TINT34);
TimerIntStatusClear(SOC_TMR_1_REGS, TMR_INT_TMR34_NON_CAPT_MODE);Time34++;// 使能定时器 / 计数器中断
TimerIntEnable(SOC_TMR_1_REGS, TMR_INT_TMR34_NON_CAPT_MODE);
}

TMS320C6748定时器32位模式相关推荐

  1. 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16...

    一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 ...

  2. 16位模式/32位模式下PUSH指令探究——《x86汇编语言:从实模式到保护模式》读书笔记16

    一.Intel 32 位处理器的工作模式 如上图所示,Intel 32 位处理器有3种工作模式. (1)实模式:工作方式相当于一个8086 (2)保护模式:提供支持多任务环境的工作方式,建立保护机制 ...

  3. 2003 64位系统 IIS6 32位模式运行

    要运行 32 位版本的 ASP.NET 2.0,请按照以下步骤操作:  单击"开始",单击"运行",键入 cmd,然后单击"确定". 键入以 ...

  4. 30天自制操作系统:第三天 进入32位模式并导入C语言

    今天的内容稍稍有点多,一起看看吧 1.制作真正的IPL 到昨天为止,讲到的启动区虽然也称为IPL(Initial Program Loader,启动程序装载器),但它实质上并没有装载任何程序. 小节中 ...

  5. 解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException。如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错。

    解决连接oracle报错 尝试加载Oracle客户端库时引发BadImageFomatException.如果在安装64位Oracle客户端组件的情况下以32位模式运行,将出现此问题的报错. 参考文章 ...

  6. 进入32位模式并导入c语言教程,《30天自制操作系统》读书笔记(3) 引入C语言

    这一次的学习相当曲折, 主要是因为粗心, Makefile里面的错误导致了文件生成出现各种奇奇怪怪的问题, 弄得心力交瘁, 因此制作过程还是尽量按着作者的路子来吧. 作者提供的源码的注释在中文系统下是 ...

  7. 如何使用ARM协处理器CP15在32位ARRCH模式下操作64位寄存器)

    1 参考 参考ARM的官方手册ARMv8指令集架构手册和A53技术参考手册 1.DDI0487H_a_a-profile_architecture_reference_manual 2.DDI0500 ...

  8. x86汇编语言从实模式百度云_Intel x86 CPU 32位保护模式杂谈之任务切换 上

    目录: 什么是任务 任务由什么组成 任务门描述符是什么东东?有了TSS描述符为什么要有任务门描述符? 参考文献 什么是任务 任务(task)是处理器可以分配.执行.挂起的工作单位,笔者认为和我们操作系 ...

  9. 如何确定我的Python Shell是在OS X上以32位还是64位模式执行?

    我需要一种方法,从外壳程序中告诉外壳程序处于哪种模式. 我尝试查看平台模块,但似乎只告诉您"有关可执行程序所使用的位架构和链接格式"的信息:尽管二进制文件编译为64位(我在OS X ...

最新文章

  1. HTML 全局属性(global attribute)有哪些?
  2. 金山网盾漏洞已第一时间修复、用户无风险
  3. 我是状态机,有一颗永远骚动的机器引擎
  4. java的mvc实训报告_javaweb实验报告——MVC.docx
  5. 关于printf输出 格式化规定符 的
  6. C# 字符串操作:split、substring、Format
  7. linux下log日志乱码_如何用 Linux 技巧大大提高工作效率?
  8. [html] html5的video如何附带字幕?
  9. C与C++中的extern与static、extern C与__cplusplus的作用
  10. BZOJ1031: [JSOI2007]字符加密Cipher
  11. 初次使用Apache、ip地址、防火墙、域名、DNS、hosts文件、端口、URL介绍、Apache配置文件、配置虚拟主机、请求响应、http协议、
  12. 深度学习入门有多难?这篇带你零基础入行
  13. PickerView的简单介绍
  14. AD/Allegro:0603、0805、1206尺寸封装设计资料
  15. COPRA算法学习笔记
  16. web前端数据可视化框架汇总
  17. python open permission denied_spark-submit python 程序,/home/.python-eggs permission denied 问题解决...
  18. Mac OSX: 有线共享WiFi
  19. 【微信小程序】开发入门篇(一)
  20. The multi-part request contained parameter data (excluding uploaded files)

热门文章

  1. nova-rootwrap笔记
  2. APP加固和脱壳方案总结
  3. 树梅派应用2:全新配置 HiFiBox DAC + Volumio 系统
  4. RabbitMQ的Federation和Shovel的使用
  5. java与数据库综合实训_JAVA数据库学生管理系统实训报告
  6. java数组赋值_JAVA 给数组赋值
  7. 完整电商项目--项目介绍(1)
  8. matlab snr,matlab算adc的snr等动态参数时出错。请懂的帮忙看一下
  9. Python(解非线性方程和线性方程)求水力学法向深度-浪涌高度速度及互连反应器中的浓度和流体分布
  10. 23马原概念提纲速成SCNU