TMS320F2812外设例程系列之EvTimerPeriod_第1页
TMS320F2812外设例程系列之EvTimerPeriod_第2页
TMS320F2812外设例程系列之EvTimerPeriod_第3页
TMS320F2812外设例程系列之EvTimerPeriod_第4页
TMS320F2812外设例程系列之EvTimerPeriod_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、TMS320F2812外设例程系列之EvTimerPeriod/# #/ 文件 : Example_281xEvTimerPeriod.c/说明:配置EVA定时器1, EVA定时器2, EVB定时器3, 定时器 4 为周期溢出中断。/每进行一次中断响应计数器加1。EVA定时器1的周期最短,EVB定时器4的周期最长/ 测试变量 :/ EvaTimer1InterruptCount;/ EvaTimer2InterruptCount;/ EvbTimer3InterruptCount;/ EvbTimer4InterruptCount;/# #include "DSP281x_D

2、evice.h"#include "DSP281x_Examples.h"/ 功能函数原型interrupt void eva_timer1_isr(void);interrupt void eva_timer2_isr(void);interrupt void evb_timer3_isr(void);interrupt void evb_timer4_isr(void);void init_eva_timer1(void);void init_eva_timer2(void);void init_evb_timer3(void);voi

3、d init_evb_timer4(void);/ 全局变量Uint32 EvaTimer1InterruptCount;Uint32 EvaTimer2InterruptCount;Uint32 EvbTimer3InterruptCount;Uint32 EvbTimer4InterruptCount;/ 主程序void main(void)/ 步骤 1. 初始化系统控制 (PLL ,看门狗,使能外设时 钟)InitSysCtrl();/ 步骤 2. 初始化 GPIO/InitGpio(); /本例中跳过/ 步骤 3. 清除所有中断并初始化 PIE 中断向量表,禁止CPU中断DINT;/

4、初始化 PIE 控制寄存器InitPieCtrl();/禁止CPU中断并清除所有 CPU中断IER = 0x0000;IFR = 0x0000;/ 初始化 PIE 中断向量表InitPieVectTable();/ 本例中用到的中断映射EALLOW;PieVectTable.T1PINT = &eva_timer1_isr;PieVectTable.T2PINT = &eva_timer2_isr;PieVectTable.T3PINT = &evb_timer3_isr;PieVectTable.T4PINT = &evb_timer4_isr;EDIS;/

5、步骤 4. 初始化所有外设/InitPeripherals(); /本例中不需要,可以跳过init_eva_timer1();init_eva_timer2();init_evb_timer3(); init_evb_timer4();/ 步骤 5. 使能中断/ 初始化计数值为 0EvaTimer1InterruptCount = 0;EvaTimer2InterruptCount = 0;EvbTimer3InterruptCount = 0;EvbTimer4InterruptCount = 0;PieCtrlRegs.PIEIER2.all = M_INT4; /使能INT2.4(T1P

6、INT)PieCtrlRegs.PIEIER3.all = M_INT1; /使能INT3.1(T2PINT)PieCtrlRegs.PIEIER4.all = M_INT4; /使能INT4.4(T3PINT)PieCtrlRegs.PIEIER5.all = M_INT1; /使能INT5.1(T4PINT)/ 使能 CPU中断 INT2(T1PINT) 、 INT3(T2PINT)、 INT4(T3PINT) 、 INT5(T4PINT)IER |= (M_INT2 | M_INT3 | M_INT4 | M_INT5);/使能全局中断和全局实时DBGM中断EINT; / 使能全局中断

7、INTMERTM; / 使能全局实时中断 DBGM/ 步骤 6. 空循环for(;);/EVA 定时器 1 初始化程序void init_eva_timer1(void)/ 初始化 EVA 定时器 1: 配置定时器 1 寄存器组 (EVA)EvaRegs.GPTCONA.all = 0;/ 配置通用定时器 1 周期为 0x0200EvaRegs.T1PR = 0x0200; / 周期EvaRegs.T1CMPR = 0x0000; / 比较寄存器值/ 使能通用定时器 1 周期中断位、递增计数、内部时 钟模式、使能比较EvaRegs.EVAIMRA.bit.T1PINT = 1;EvaRegs.

8、EVAIFRA.bit.T1PINT = 1;EvaRegs.T1CNT = 0x0000; / 清除通用定时器 1 的 计数器EvaRegs.T1CON.all = 0x1742;EvaRegs.GPTCONA.bit.T1TOADC = 2; / 定时器 1 周期 中断启动 EVA ADC 转换/EVA 定时器 2 初始化程序void init_eva_timer2(void)/ 初始化 EVA 定时器 2: 设置定时器 2 寄存器组 (EV A)EvaRegs.GPTCONA.all = 0;/ 配置通用定时器 2 的周期为 0x0200;EvaRegs.T2PR = 0x0400; /

9、 周期EvaRegs.T2CMPR = 0x0000; / 比较寄存器/ 使能通用定时器 2 周期中断、递增计数、内部时钟 模式、使能比较EvaRegs.EVAIMRB.bit.T2PINT = 1;EvaRegs.EVAIFRB.bit.T2PINT = 1;EvaRegs.T2CNT = 0x0000; / 清除通用定时器 2 的 计数器EvaRegs.T2CON.all = 0x1742;EvaRegs.GPTCONA.bit.T2TOADC = 2; / 周期中断启动EVA ADC专换/EVB 定时器 3 初始化程序void init_evb_timer3(void)/初始化EVB定时

10、器3:/ 设置定时器 3寄存器组 (EV B)EvbRegs.GPTCONB.all = 0;/ 配置通用定时器 3 的周期为 0x0200;EvbRegs.T3PR = 0x0800; / 周期EvbRegs.T3CMPR = 0x0000; / 比较寄存器/ 使能通用定时器 3 周期中断、递增计数、内部时钟 模式、使能比较EvbRegs.EVBIMRA.bit.T3PINT = 1;EvbRegs.EVBIFRA.bit.T3PINT = 1;EvbRegs.T3CNT = 0x0000; / 清除通用定时器 3 的计 数器EvbRegs.T3CON.all = 0x1742;EvbReg

11、s.GPTCONB.bit.T3TOADC = 2; / 定时器 3 周期 中断启动EVA ADC专换/EVB 定时器 4 初始化程序void init_evb_timer4(void)/初始化EVB定时器4:/ 设置定时器 4寄存器 (EV B)EvbRegs.GPTCONB.all = 0;/ 配置通用定时器 4 的周期为 0x0200;EvbRegs.T4PR = 0x1000; / 周期EvbRegs.T4CMPR = 0x0000; / 比较寄存器/ 使能通用定时器 4 周期中断、递增计数、内部时钟 模式、使能比较EvbRegs.EVBIMRB.bit.T4PINT = 1;EvbR

12、egs.EVBIFRB.bit.T4PINT = 1;EvbRegs.T4CNT = 0x0000; / 清除通用定时器 4 的计 数器EvbRegs.T4CON.all = 0x1742;EvbRegs.GPTCONB.bit.T4TOADC = 2; / 定时器 4 周期 中断启动EVA ADC专换/EVA 定时器 1 中断服务程序interrupt void eva_timer1_isr(void)EvaTimer1InterruptCount+;EvaRegs.EVAIMRA.bit.T1PINT = 1; / 使能来自这个定 时器的更多的中断EvaRegs.EVAIFRA.all =

13、 BIT7; /注意,为了安全,写一个掩码到程序整体PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;/ 应答中断接收更多的来自 PIE 第 2 组的中断/EVA 定时器 2 中断服务程序 interrupt void eva_timer2_isr(void) EvaTimer2InterruptCount+;/ 使能来自这个定时器的更多的中断 EvaRegs.EVAIMRB.bit.T2PINT = 1;EvaRegs.EVAIFRB.all = BIT0; / 注意,为了安全, 写一个掩码到程序整体PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;/ 应答中断接收更多的来自 PIE 第 3 组的中断 /EVB 定时器 3 中断服务程序 interrupt void evb_timer3_isr(void) EvbTimer3InterruptCount+;EvbRegs.EVBIFRA.all = BIT7; / 注意,为了安全, 写一个掩码到程序整体PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;/ 应

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论