《第7章TMS320LF2407事件管理器模块24180.pdf》由会员分享,可在线阅读,更多相关《第7章TMS320LF2407事件管理器模块24180.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 7 章 事件管理器模块(EV)例给出了通用定时器 1 在连续增计数模式下的初始化例程。例连续增计数模式的初始化例程 LDP#DP_EVA ;指向7400h7480h 单元 SPLK#41H,GPTCONA ;TCOMPOE=1 允许定时器比较输出 SPLK#5H,T1PR ;设置周期寄存器 SPLK#3H,T1CMPR ;设置比较寄存器 SPLK#0H,T1CNT ;设置计数寄存器 SPLK#0174EH,T1CON ;TMODE=10 连续增计数模式,TPS=111 预分频为 128 ;TENABLE=1 定时器计数使能,TCLKS=00 内部时钟 ;TECMPR=1 定时器 1 比较使
2、能,SELT1PR=0 3 定向增/减计数模式 例定向增/减计数模式的初始化例程 LDP#DP_EVA ;指向7400h7480h 单元 SPLK#41H,GPTCONA ;TCOMPOE=1 允许定时器比较输出 SPLK#5H,T1PR ;设置周期寄存器 SPLK#3H,T1CMPR ;设置比较寄存器 SPLK#0H,T1CNT ;设置计数寄存器 SPLK#01F4EH,T1CON ;TMODE=11 定向增/减计数模式,TPS=111 ;预分频为128 ;TENABLE=1 定时器计数使能,TCLKS=0 内部时钟 ;TECMPR=1 定时器 1 比较使能,SELT1PR=0 4 连续增/
3、减计数模式 例连续增/减计数模式的初始化例程 LDP#DP_EVA ;指向7400h7480h 单元 SPLK#41H,GPTCONA ;TCOMPOE=1 允许定时器比较输出 SPLK#5H,T1PR ;设置周期寄存器 SPLK#3H,T1CMPR ;设置比较寄存器 SPLK#0H,T1CNT ;设置计数寄存器 SPLK#0F4EH,T1CON ;TMODE=01 连续增/减计数模式,TPS=111 ;预分频为128 ;TENABLE=1 定时器计数使能,TCLKS=00 内部时钟 ;TECMPR=1 定时器 1 比较使能,SELT1PR=0 通用定时器的中断实现 .include ;引用头
4、部文件.def _c_int0(1)建立中断向量表 .sect.vectors ;定义主向量段 RSVECT B _c_int0 ;PM 0 复位向量 1 INT1 B PHANTOM ;PM 2 中断优先级1 4 INT2 B GISR2 ;PM 4 中断优先级2 5 INT3 B PHANTOM ;PM 6 中断优先级3 6 INT4 B PHANTOM ;PM 8 中断优先级4 7 INT5 B PHANTOM ;PM A 中断优先级5 8 INT6 B PHANTOM ;PM C 中断优先级6 9 RESERVED B PHANTOM ;PM E 模拟量输入中断(保留)10 SW_IN
5、T8 B PHANTOM ;PM 10 用户定义软件中断 SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 ;中断子向量入口定义pvecs .sect.pvecs ;定义子向量段 PVECTORS B PHANTOM ;保留向量地址偏移量-0000h B PHANTOM ;保留向量地址偏移量-0001h B PHANTOM ;保留向量地址偏移量-0026h B T1PINT_ISR ;保留向量地址偏移量-0027h T1PINT 中断 B PHANTOM ;保留向量地址偏移量-0028h B PHANTOM ;保留向量地址偏移量-0041h (2)主程序 .text _c_
6、int0 SETC INTM CLRC SXM CLRC OVM CLRC CNF ;B0 区被配置为数据空间 LDP#0E0H ;指向7000h7080h 区 SPLK#81FEH,SCSR1 ;时钟4 倍频,CLKIN=6 M,CLKOUT=24 M SPLK#0E8H,WDCR ;不使能 WDT LDP#0 SPLK#02H,IMR ;使能中断优先级 INT2 SPLK#0FFFFh,IFR ;清中断标志 LDP#DP_EVA ;指向7400h7480h 区 SPLK#80H,EVAIMRA ;使能 T1PINT 中断 SPLK#0FFFFh,EVAIFRA ;清 EVA 中断标志 SP
7、LK#0,GPTCONA SPLK#177H,T1PR ;使定时器每1ms 产生一次中断 SPLK#0,T1CNT SPLK#0164CH,T1CON ;TMODE=10 连续增计数模式,TPS=110 预分频为 64 ;TENABLE=1 定时器计数使能,TCLKS=00 ;内部时钟 ;TECMPR=1 定时器 1 比较使能,SELT1PR=0 CLRC INTM ;开总中断 WAIT:NOP B WAIT(3)中断程序 GISR2:;优先级 INT2 中断入口 保护现场 LDP#0E0H LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位 ADD#PVECTORS ;
8、加上外设中断入口地址 BACC ;跳到相应的中断服务子程序 T1PINT_ISR:;通用定时器1 中断入口 LDP#DP_EVA SPLK#0,T1CNT GISR2_RET:;中断返回 恢复现场 CLRC INTM ;开总中断,因为一进中断就自动关闭总中断 RET(3)假中断程序 PHANTOM KICK_DOG ;复位看门狗 RET END PWM 波形产生举例 .include ;引用头部文件.def _c_int0;(1)建立中断向量表 .sect.vectors ;定义主向量段 RSVECT B _c_int0 ;PM 0 复位向量 1 INT1 B PHANTOM ;PM 2 中断
9、优先级1 4 INT2 B GISR2 ;PM 4 中断优先级2 5 INT3 B PHANTOM ;PM 6 中断优先级3 6 INT4 B PHANTOM ;PM 8 中断优先级4 7 INT5 B PHANTOM ;PM A 中断优先级 5 8 INT6 B PHANTOM ;PM C 中断优先级 6 9 RESERVED B PHANTOM ;PM E (保留位)10 SW_INT8 B PHANTOM ;PM 10 用户定义软件中断 SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 ;中断子向量入口定义pvecs .sect.pvecs ;定义子向量段 PVECT
10、ORS B PHANTOM ;保留向量地址偏移量 0000h B PHANTOM ;保留向量地址偏移量 0001h B PHANTOM ;保留向量地址偏移量-002Eh B T3GP_ISR ;保留向量地址偏移量-002Fh T3PINT 中断 B PHANTOM ;保留向量地址偏移量 0030h B PHANTOM ;保留向量地址偏移量 0041h ;(2)主程序.text _c_int0 CALL SYSINIT ;系统初始化程序 CALL PWM_INIT ;EVB 模块 PWM 初始化程序 WAIT NOP B WAIT;(3)系统初始化程序 SYSINIT:SETC INTM CLR
11、C SXM CLRC OVM CLRC CNF ;B0 区被配置为数据空间 LDP#0E0H ;指向7000h7080h 区 SPLK#81FEH,SCSR1 ;时钟4 倍频,CLKIN=6 M,CLKOUT=24 M SPLK#0E8H,WDCR ;不使能 WDT LDP#0 SPLK#0002H,IMR ;使能中断第2 级 INT2 SPLK#0FFFFH,IFR ;清全部中断标志 RET;(4)EVB 模块的PWM 初始化程序 PWM_INIT:LDP#DP_PF2 ;指向7080h7100h 区 LACL MCRC OR#007EH ;IOPE16被配置为基本功能方式:PWM712 S
12、ACL MCRC LDP#DP_EVB ;指向7500h7580h 区 SPLK#0FFFFH,EVBIFRA ;清 EVB 全部中断标志 SPLK#0666H,ACTRB ;PWM12,10,8 低有效,PWM11,9,7 高有效 SPLK#00H,DBTCONB ;不使能死区控制 SPLK#10H,CMPR4 ;设置比较初值 PWM7 高电平占 50/60,;低电平占10/60 SPLK#20H,CMPR5 ;设置PWM9,10 的比较寄存器 SPLK#30H,CMPR6 ;设置PWM11,12 的比较寄存器 SPLK#60H,T3PR ;设置定时器3 周期寄存器,;即 PWM 周期为60
13、 个 CPU 时钟周期 SPLK#0A600H,COMCONB;使能比较操作 SPLK#0,T3CNT SPLK#41H,GPTCONB ;TCOMPOE=1,T3PIN=01 SPLK#080H,EVBIMRA ;通用定时器 3 使能 SPLK#0174EH,T3CON ;TMODE=10 连续增计数模式,TPS=111 预分频为 128 ;TENABLE=1 定时器计数使能,TCLKS=00 ;内部时钟 ;TECMPR=1 定时器 3 比较使能,SELT3PR=0 CLRC INTM ;开总中断 RET;(5)定时器3 中断程序 GISR2:;优先级 INT2 中断入口 保护现场 LDP#
14、0E0H LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位 ADD#PVECTORS ;加上外设中断入口地址 BACC ;跳到相应的中断服务子程序 T3GP_ISR:;通用定时器3 中断入口 LDP#DP_EVB SPLK#0,T3CNT GISR2_RET:;中断返回 恢复现场 CLRC INTM ;开总中断,因为一进中断就自动关闭总中断 RET;(6)假中断程序 PHANTOM KICK_DOG ;复位看门狗 RET END 捕获单元应用举例 CAP4TEMP.usect .data0,1 ;CAP4 临时寄存器 .include ;引用头部文件.def _c_in
15、t0;(1)建立中断向量表 .sect.vectors ;定义主向量段 RSVECT B _c_int0 ;PM 0 复位向量 1 INT1 B PHANTOM ;PM 2 中断优先级 1 4 INT2 B PHANTOM ;PM 4 中断优先级2 5 INT3 B PHANTOM ;PM 6 中断优先级 3 6 INT4 B GISR4 ;PM 8 中断优先级4 7 INT5 B PHANTOM ;PM A 中断优先级 5 8 INT6 B PHANTOM ;PM C 中断优先级 6 9 RESERVED B PHANTOM ;PM E(保留位)10 SW_INT8 B PHANTOM ;P
16、M 10 用户定义软件中断 SW_INT31 B PHANTOM ;PM 3E 用户定义软件中断 ;中断子向量入口定义pvecs .sect.pvecs ;定义子向量段 PVECTORS B PHANTOM ;保留向量地址偏移量-0000h B PHANTOM ;保留向量地址偏移量-0001h B PHANTOM ;保留向量地址偏移量-0035h B CAP4_ISR ;保留向量地址偏移量-0036h CAP4 中断 B PHANTOM ;保留向量地址偏移量-0037h B PHANTOM ;保留向量地址偏移量-0041h ;(2)主程序.text _c_int0 LDP#5 SPLK#00H
17、,CAP4TEMP CALL SYSINIT CALL CAP_INIT ;调 CAP4 初始化程序 WAIT NOP B LOOP;(3)系统初始化程序 SYSINIT:SETC INTM CLRC SXM CLRC OVM CLRC CNF ;B0 区被配置为数据空间 LDP#0E0H ;指向7000h7080h 区 SPLK#81FEH,SCSR1 ;时钟4 倍频,CLKIN=6 M,CLKOUT=24 M SPLK#0E8H,WDCR ;不使能 WDT LDP#0 SPLK#0008H,IMR ;使能中断第4 级 INT4 SPLK#0FFFFH,IFR ;清全部中断标志 RET;(4
18、)捕获单元初始化程序 CAP_INIT:LDP#DP_PF2 ;指向7090h7100h LACL MCRC OR#0380H ;IOPE7,IOPF0,IOPF1 被配置为;特殊功能方式:CAP46 SACL MCRC SETC INTM LDP#DP_EVB SPLK#049H,GPTCONB ;TCOMPOE=1,T4PIN=10,T3PIN=01 SPLK#0,T3CNT SPLK#01742H,T3CON ;TMODE=10 连续向上计数模式,TPS=111 ;预分频为128;TENABLE=1 定时器计数使能,TCLKS=00 ;内部时钟 ;TCLD=00,TECMPR=1 定时器
19、 3比较;使能,SELT3PR=0 SPLK#0FFFFH,T3PR ;定时器周期比较寄存器设为最大 SPLK#00H,EVBIMRA SPLK#00H,EVBIMRB SPLK#22C0H,CAPCONB ;CAP4 捕获允许,捕获上升沿 SPLK#01H,EVBIMRC ;CAP4 中断使能 SPLK#0FFFFh,EVBIFRA ;清 EVB 全部中断标志 SPLK#0FFFFh,EVBIFRB SPLK#0FFFFh,EVBIFRC CLRC INTM ;开总中断 RET ;(5)中断程序程序 GISR4:;优先级 INT4 中断人口 ;保护现场 LDP#0E0H LACC PIVR,1 ;读取外设中断向量寄存器(PIVR),并左移一位 ADD#PVECTORS ;加上外设中断人口地址 BACC ;跳到相应的中断服务子程序 CAP4_ISR:;捕获单元 4 中断程序入口 LDP#DP_EVB LACL CAP4FIFO LDP#5 SACL CAP4TEMP ;读出捕获的值 LDP#DP_EVB SPLK#0,T3CNT ;清 T3 计数值,使其重新计数 GISR2_RET:;中断返回 恢复现场 CLRC INTM ;开总中断,因为一进中断就自动关闭总中断 RET;(6)假中断程序 PHANTOM KICK_DOG ;复位看门狗 RET END
限制150内