《第7章 TMS320LF2407事件管理器模块.pdf》由会员分享,可在线阅读,更多相关《第7章 TMS320LF2407事件管理器模块.pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 7 章 事件管理器模块(EV)例给出了通用定时器1 在连续增计数模式下的初始化例程。例连续增计数模式的初始化例程LDPSPLKSPLKSPLKSPLKSPLK#DP_EVA;指向7400h7480h单元#41H,GPTCONA#5H,T1PR#3H,T1CMPR#0H,T1CNT;TCOMPOE=1 允许定时器比较输出;设置周期寄存器;设置比较寄存器;设置计数寄存器#0174EH,T1CON;TMODE=10 连续增计数模式,TPS=111 预分频为128;TENABLE=1 定时器计数使能,TCLKS=00 内部时钟;TECMPR=1 定时器1 比较使能,SELT1PR=03定向增/减计
2、数模式例定向增/减计数模式的初始化例程LDPSPLKSPLKSPLKSPLKSPLK#DP_EVA;指向7400h7480h单元#41H,GPTCONA#5H,T1PR#3H,T1CMPR#0H,T1CNT;TCOMPOE=1 允许定时器比较输出;设置周期寄存器;设置比较寄存器;设置计数寄存器#01F4EH,T1CON;TMODE=11 定向增/减计数模式,TPS=111;预分频为128;TENABLE=1 定时器计数使能,TCLKS=0 内部时钟;TECMPR=1 定时器1 比较使能,SELT1PR=04连续增/减计数模式例连续增/减计数模式的初始化例程LDPSPLKSPLKSPLKSPLK
3、SPLK#DP_EVA;指向7400h7480h单元#41H,GPTCONA#5H,T1PR#3H,T1CMPR#0H,T1CNT;TCOMPOE=1 允许定时器比较输出;设置周期寄存器;设置比较寄存器;设置计数寄存器#0F4EH,T1CON;TMODE=01 连续增/减计数模式,TPS=111;预分频为128;TENABLE=1 定时器计数使能,TCLKS=00 内部时钟;TECMPR=1 定时器1 比较使能,SELT1PR=0通用定时器的中断实现.include ;引用头部文件.def _c_int0(1)建立中断向量表.sect.vectors;定义主向量段复位向量467851RSVEC
4、TB _c_int0B PHANTOMB GISR2;PM 0INT1INT2INT3INT4INT5;PM 2中断优先级1;PM 4中断优先级2B PHANTOMB PHANTOMB PHANTOM;PM 6;PM 8;PM A中断优先级3中断优先级4中断优先级5INT6B PHANTOMRESERVEDB PHANTOMSW_INT8B PHANTOMSW_INT31B PHANTOM;中断子向量入口定义pvecs.sect.pvecsPVECTORS BPHANTOMBPHANTOMBPHANTOMBT1PINT_ISRBPHANTOMBPHANTOM(2)主程序 .text_c_int
5、0SETCINTMCLRCSXMCLRCOVMCLRCCNFLDP#0E0HSPLK#81FEH,SCSR1 SPLK#0E8H,WDCR LDP#0SPLK#02H,IMRSPLK#0FFFFh,IFRLDP#DP_EVA;PM C中断优先级69;PM E模拟量输入中断(保留)10;PM 10用户定义软件中断;PM 3E用户定义软件中断;定义子向量段保留向量地址偏移量-0000h;保留向量地址偏移量-0001h;保留向量地址偏移量-0026h;保留向量地址偏移量-0027h T1PINT中断;保留向量地址偏移量-0028h;保留向量地址偏移量-0041h;B0区被配置为数据空间;指向7000
6、h7080h区;时钟4 倍频,CLKIN=6 M,CLKOUT=24 M;不使能WDT;使能中断优先级INT2;清中断标志;指向7400h7480h区;SPLKSPLKSPLKSPLKSPLKSPLK#80H,EVAIMRA#0FFFFh,EVAIFRA#0,GPTCONA#177H,T1PR#0,T1CNT#0164CH,T1CON;使能T1PINT 中断;清 EVA中断标志;使定时器每1ms产生一次中断;TMODE=10 连续增计数模式,TPS=110 预分频为64;TENABLE=1 定时器计数使能,TCLKS=00;内部时钟;TECMPR=1 定时器1 比较使能,SELT1PR=0CL
7、RC INTM;开总中断 WAIT:NOPBWAIT(3)中断程序GISR2:;优先级INT2中断入口保护现场LDP#0E0H;读取外设中断向量寄存器(PIVR),并左移一位;加上外设中断入口地址;跳到相应的中断服务子程序;通用定时器1 中断入口LACC PIVR,1ADDBACC#PVECTORST1PINT_ISR:LDPSPLK#DP_EVA#0,T1CNT;中断返回GISR2_RET:恢复现场CLRC INTMRET;开总中断,因为一进中断就自动关闭总中断(3)假中断程序PHANTOMKICK_DOGRETEND;复位看门狗 PWM波形产生举例.include .def _c_int0
8、;(1)建立中断向量表.sect.vectors;定义主向量段复位向量 1;引用头部文件RSVECTB _c_int0;PM 0INT1INT2INT3INT4INT5INT6RESERVEDSW_INT8B PHANTOMB GISR2;PM 2中断优先级1 467895;PM 4中断优先级2B PHANTOMB PHANTOMB PHANTOMB PHANTOMB PHANTOMB PHANTOM;PM 6;PM 8;PM A;PM C;PM E中断优先级3中断优先级4中断优先级 5中断优先级 6(保留位)10;PM 10用户定义软件中断SW_INT31B PHANTOM;中断子向量入口定
9、义pvecs.sect.pvecsPVECTORS BPHANTOMBPHANTOMBPHANTOMBT3GP_ISRBPHANTOMBPHANTOM;(2)主程序.text_c_int0CALL SYSINIT CALL PWM_INITWAITNOPBWAIT;(3)系统初始化程序SYSINIT:SETC INTMCLRC SXMCLRCOVMCLRCCNFLDP#0E0HSPLK#81FEH,SCSR1 SPLK#0E8H,WDCR LDP#0;PM 3E用户定义软件中断;定义子向量段保留向量地址偏移量0000h;保留向量地址偏移量0001h;保留向量地址偏移量 -002Eh;保留向量地
10、址偏移量 -002Fh T3PINT中断;保留向量地址偏移量0030h;保留向量地址偏移量0041h;系统初始化程序;EVB模块PWM初始化程序;B0区被配置为数据空间;指向7000h7080h区;时钟4 倍频,CLKIN=6 M,CLKOUT=24 M;不使能WDT;SPLKSPLKRET#0002H,IMR;使能中断第2 级 INT2;清全部中断标志#0FFFFH,IFR;(4)EVB模块的PWM初始化程序PWM_INIT:LDPLACL MCRCORSACL MCRCLDPSPLKSPLKSPLKSPLK#DP_EVB;指向7500h7580h区;清 EVB 全部中断标志#007EH;I
11、OPE16被配置为基本功能方式:PWM712#DP_PF2;指向7080h7100h区#0FFFFH,EVBIFRA#0666H,ACTRB#00H,DBTCONB#10H,CMPR4;PWM12,10,8 低有效,PWM11,9,7 高有效;不使能死区控制;设置比较初值 PWM7高电平占50/60,;低电平占10/60SPLKSPLKSPLK#20H,CMPR5#30H,CMPR6#60H,T3PR;设置PWM9,10的比较寄存器;设置PWM11,12的比较寄存器;设置定时器3 周期寄存器,;即 PWM周期为60个 CPU时钟周期SPLKSPLKSPLKSPLKSPLK#0A600H,COM
12、CONB#0,T3CNT#41H,GPTCONB#080H,EVBIMRA#0174EH,T3CON;使能比较操作;TCOMPOE=1,T3PIN=01;通用定时器3 使能;TMODE=10 连续增计数模式,TPS=111 预分频为128;TENABLE=1 定时器计数使能,TCLKS=00;内部时钟;TECMPR=1 定时器3 比较使能,SELT3PR=0CLRC INTMRET;开总中断;(5)定时器3 中断程序GISR2:;优先级INT2中断入口保护现场LDP#0E0H;读取外设中断向量寄存器(PIVR),并左移一位;加上外设中断入口地址;跳到相应的中断服务子程序;通用定时器3 中断入口
13、LACC PIVR,1ADDBACC#PVECTORST3GP_ISR:LDP#DP_EVBSPLK#0,T3CNT;中断返回GISR2_RET:恢复现场CLRC INTMRET;开总中断,因为一进中断就自动关闭总中断;(6)假中断程序PHANTOMKICK_DOGRETEND;复位看门狗捕获单元应用举例CAP4TEMP.usect.data0,1;CAP4 临时寄存器.include;引用头部文件.def _c_int0;(1)建立中断向量表.sect.vectors;定义主向量段复位向量 1456897RSVECTB _c_int0B PHANTOMB PHANTOMB PHANTOMB
14、GISR4;PM 0INT1INT2INT3INT4INT5INT6RESERVEDSW_INT8;PM 2;PM 4;PM 6中断优先级 1中断优先级2中断优先级 3中断优先级4;PM 8B PHANTOMB PHANTOMB PHANTOMB PHANTOM;PM A;PM C;PM E中断优先级 5中断优先级 6(保留位)10;PM 10用户定义软件中断SW_INT31B PHANTOM;PM 3E用户定义软件中断;中断子向量入口定义pvecs.sect.pvecs;定义子向量段PVECTORS BPHANTOMBBBBB;保留向量地址偏移量-0000h;保留向量地址偏移量-0001hP
15、HANTOMPHANTOMCAP4_ISRPHANTOM;保留向量地址偏移量-0035h;保留向量地址偏移量-0036h CAP4中断;保留向量地址偏移量-0037hPHANTOM;保留向量地址偏移量-0041h;(2)主程序.text_c_int0LDPSPLK#5#00H,CAP4TEMPCALL SYSINITCALL CAP_INITWAITNOPBLOOP;(3)系统初始化程序SYSINIT:SETC INTMCLRC SXMCLRCOVMCLRCCNFLDP#0E0HSPLK#81FEH,SCSR1 SPLK#0E8H,WDCR LDP#0SPLK#0008H,IMRSPLK#0F
16、FFFH,IFRRET;(4)捕获单元初始化程序CAP_INIT:LDP#DP_PF2LACL MCRCOR#0380HSACL MCRCSETCINTMLDP#DP_EVBSPLK#049H,GPTCONBSPLK#0,T3CNTSPLK#01742H,T3CON;调 CAP4初始化程序;B0区被配置为数据空间;指向7000h7080h区;时钟4 倍频,CLKIN=6 M,CLKOUT=24 M;不使能WDT;使能中断第4 级 INT4;清全部中断标志;指向7090h7100h;IOPE7,IOPF0,IOPF1 被配置为;特殊功能方式:CAP46;TCOMPOE=1,T4PIN=10,T3
17、PIN=01;TMODE=10 连续向上计数模式,TPS=111;预分频为128;TENABLE=1 定时器计数使能,TCLKS=00;内部时钟;TCLD=00,TECMPR=1 定时器3比较;使能,SELT3PR=0SPLKSPLKSPLKSPLKSPLKSPLKSPLKSPLKCLRCRET;(5)中断程序程序GISR4:#0FFFFH,T3PR#00H,EVBIMRA#00H,EVBIMRB#22C0H,CAPCONB#01H,EVBIMRC;定时器周期比较寄存器设为最大;CAP4 捕获允许,捕获上升沿;CAP4 中断使能;清 EVB 全部中断标志#0FFFFh,EVBIFRA#0FFF
18、Fh,EVBIFRB#0FFFFh,EVBIFRCINTM;开总中断;优先级INT4中断人口;保护现场LDP#0E0H;读取外设中断向量寄存器(PIVR),并左移一位;加上外设中断人口地址;跳到相应的中断服务子程序;捕获单元4 中断程序入口LACC PIVR,1ADDBACC#PVECTORSCAP4_ISR:LDP#DP_EVBLACL CAP4FIFOLDP#5;读出捕获的值SACL CAP4TEMPLDPSPLKGISR2_RET:#DP_EVB#0,T3CNT;清 T3 计数值,使其重新计数;中断返回恢复现场CLRC INTMRET;开总中断,因为一进中断就自动关闭总中断;(6)假中断程序PHANTOMKICK_DOGRETEND;复位看门狗