ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:585.28KB ,
资源ID:24049750      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24049750.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C6726系列DSP外部中断的实现.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C6726系列DSP外部中断的实现.docx

1、C6726系列DSP外部中断的实现C672x系列中断实现流程TI C6727 没有提供专门的外部中断引脚,使用McASP AMUTEIN引脚作为外部中断引脚,利用McASP的AMUTEiN事件触发dMAX,使dMAX产生相应的中断递交给CPU (可用中断:INT9,INT10,INT11,INT12,INT13,INT15)。以下为配置该中断的步骤及每步所要编的程序,同时又给出了每步所要配置的寄存器在数据手册中的说明。一、配置CFGMCASPx寄存器,选择AMUTEINx引脚#define CFGMCASP0 (int*)0x40000018)#define AXR7 0xFFFFFFF8*

2、CFGMCASP0 = (*CFGMCASP0& AXR7)|0x00000001;二、将上一步选择的相应管脚配置为GPIO 输入引脚#define PFUNC (int*)0x44000010)#define PDIR (int*)0x44000014)#define POUT (int*)0x44000018)#define PDIN (int*)0x4400001C)#define PDSET (int*)0x4400001C)#define PDCLR (int*)0x44000020)#define INTERUPT 0xFFFFFF7F*PDIR = (*PDIR& INTERUP

3、T)|0x0; *PFUNC = (*PFUNC& INTERUPT)|0x00000080; 三、在相应McASP模块中,禁止AMUTEIN信号驱动AMUTE输出,通过将AMUTE寄存器的INEN位清“0”来实现:#define AMUTE (int*)0x44000048)#define INEN 0xFFFFFFFB*AMUTE = (*AMUTE& INEN)|0x0;四、配置dMAX 1) 配置DEPR寄存器,选择上升沿或下降沿触发2) 配置DEHPR或DELPR寄存器,选择高优先级或低优先级3) 配置EVENT ENTRY,选择中断号,将其保存在对应的Param位置4) 配置DEE

4、R寄存器,使能相应的dMAX事件5, 配置中断(SPRU733A)以下为在数据手册中找到的dMAX的各个寄存器的地址,以及各个寄存器内部的说明:. (1)#define DEPR (int*)0x60000008)#define RISEING 0X0 * DEPR = (*DEPR & RISEING |0xFFFFFFFF; (2)#define DEHPR (int*)0x60000014#define PRIORITY 0X0 * DEHPR = (*DEHPR & PRIORITY |0xFFFFFFFF; (3)配置EVENT ENTRY,选择中断号,将其保存在对应的Param位置

5、(4)#define DEPR *(int *)0x60000008 #define DEER *(int *)0x6000000C #define DEDR *(int *)0x60000010 #define DEHPR *(int *)0x60000014 #define DELPR *(int *)0x60000018 #define DEFR *(int *)0x6000001C #define DER0 *(int *)0x60000034 #define DER1 *(int *)0x60000054 #define DER2 *(int *)0x60000074 #define

6、 DER3 *(int *)0x60000094 #define DFSR0 *(int *)0x60000040 #define DFSR1 *(int *)0x60000060 #define DTCR0 *(int *)0x60000080 #define DTCR1 *(int *)0x600000A0 #define MAX0_EVENT_TABLE 0x61008000#define EVENT26 (*(int *)(MAX0_EVENT_TABLE+26*4) #define EVENT26_PARA 0x00060007void initdMAX( void ) EVENT2

7、6 = EVENT26_PARA; DEPR |= 0x04000000; DEHPR |= 0x04000000; DEER |= 0x04000000; 五 配置中断(SPRU733A)修改中断向量表,将相应中断的跳转地址改为对应的中断服务程序(也可通过程序实现),然后使能相应中断:1) 禁止全局中断 CSR.GIE = 02) 使能相应中断 IER.IEn = 13) 使能NMI中断 IER.NMIE=14) 使能全局中断 CSR.GIE=1下表为C672x系列DSP中各个中断的的意义,中断向量表是.asm格式的文件,里面内容如下,根据情况可自行修改 unused .macro id .

8、global unused:id:unused:id: b unused:id: ; nested branches to block interrupts nop 4 b unused:id: nop nop nop nop nop .endm .sect .vectors .align 32*8*4 ; must be aligned on 256 word boundaryRESET: unused 0 ; reset vector unused 1 unused 2 unused 3 unused 4 unused 5 unused 6 unused 7 unused 8 unused

9、 9 unused 10 unused 11 unused 12 ;unused 13 .ref _xint mvkl _xint,b0 ;load destination function address to b0 mvkh _xint,b0 b b0 nop nop nop nop nop unused 14 unused 15而对中断寄存器的操作如下所示:cregister unsigned int ISTP,CSR,IER;void initIntc( void ) CSR &= 1; /GIE = 0,global disable interrupt ISTP=0x10000000

10、; / interrupt vector base address = 0x10000000 if you change it must change xint.cmd .vectors sections IER=0x2002; / interrupt enable INT13 and NMI CSR |=1; /GIE = 1,global enable interrupt 这里的cregister在TI的技术文档中有这样的描述:The compiler extends the C/C+ language by adding the cregister keyword to allow hi

11、gh level language access to control registers.When you use the cregister keyword on an object, the compiler compares the name of the object to a list of standard control registers for the C28x (see Table 6-2 ). If the name matches, the compiler generates the code to reference the control register. I

12、f the name does not match, the compiler issues an error.Table 6-2. Valid Control Registers-Register Description-IER Interrupt enable registerIFR Interrupt flag registerTo use the control registers in Table 6-2 , you must declare each register as follows. The c28x.h include file defines all the control registers through this syntax:extern cregister volatile unsigned int register ;所以ISTP,CSR,IER这三个寄存器是可以用关键字cregister定义的寄存器,定义之后就可以直接调用了并修改了。PS:在DSP62XX系列中有更多这样的寄存器。六 中断服务程序的格式:如下void interrupt xint( void )/*此处加入中断服务程序需要执行的内容*/ 这里interrupt为关键字,xint与中断向量表中的xint是对应的,不要修改,所有的这些都弄完了,就可以进行编译、运行了。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1