3425|0

7

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

TMS320F28035学习记录四 [复制链接]

1、F28035_Device.h

此文件是常用的宏的定义,里面定义了数据类型,包含了必要的头文件,还有所使用器件的定义.如果使用其它器件,可以在这里更改。

2、F 28035_Examples.h

它是为了设置PLL,系统时钟,而定义的常数。

3、F28035_CodeStartBranch.asm

控制启动时转向的。它关闭看门狗并转向程序入口。

4、F28035_DefaultIsr.c

此文件包含外设的ISR例程。在开发过程中,这些ISR例程可以被消除,并与用户自己的ISR例程替换为每个中断。由于这些外设的ISR包含无限循环,他们通常不被使用在最终的程序中。

它是缺省的中断程序,包括了所有中断程序的框架,如:

// Connected to INT13 of CPU (use MINT13 mask):

interrupt void INT13_ISR(void)     // INT13 or CPU-Timer1

{

  // Insert ISR Code here

  // Next two lines for debug only to halt the processor here

  // Remove after inserting ISR Code

  asm ("      ESTOP0");

  for(;;);

}

当进入中断时,将什么也不做,并停留在那里。用户编程时,可以重新定义中

断函数并转向它,如:PieVectTable.XINT1 = &UserInttruptFunction

也可以修改这个文件中的函数。

5、F28035_GlobalVariableDefs.c

这个文件是是定义F28035 内部寄存器的,与CMD 文件一道分配寄存器地址,并定义寄存器文件结构变量。

6、F28035_PieVect.c

这个文件是定义中断矢量表中的结构体中的初始化使用的成员变量为的F2802x_DefaultIsr.c所定义的函数名

const struct PIE_VECT_TABLE PieVectTableInit = {

      PIE_RESERVED,  // 0  Reserved space

      PIE_RESERVED,  // 1  Reserved space

      PIE_RESERVED,  // 2  Reserved space

      PIE_RESERVED,  // 3  Reserved space

      PIE_RESERVED,  // 4  Reserved space

      PIE_RESERVED,  // 5  Reserved space

      PIE_RESERVED,  // 6  Reserved space

      PIE_RESERVED,  // 7  Reserved space

      PIE_RESERVED,  // 8  Reserved space

      PIE_RESERVED,  // 9  Reserved space

      PIE_RESERVED,  // 10 Reserved space

      PIE_RESERVED,  // 11 Reserved space

      PIE_RESERVED,  // 12 Reserved space

// Non-Peripheral Interrupts

      INT13_ISR,     // INT13 or CPU-Timer 1

      INT14_ISR,     // INT14 or CPU-Timer 2

      DATALOG_ISR,   // Datalogging interrupt

      RTOSINT_ISR,   // RTOS interrupt

//---------------------------------------------------------------------------

// InitPieVectTable:

//---------------------------------------------------------------------------

// This function initializes the PIE vector table to a known state.

// This function must be executed after boot time.

void InitPieVectTable(void)

{

    int16    i;

    Uint32 *Source = (void *) &PieVectTableInit;

    Uint32 *Dest = (void *) &PieVectTable;

    // Do not write over first 3 32-bit locations (these locations are

    // initialized by Boot ROM with boot variables)

    Source = Source + 3;

    Dest = Dest + 3;

    EALLOW;

    for(i=0; i < 125; i++)

        *Dest++ = *Source++;

    EDIS;

    // Enable the PIE Vector Table

    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;

}

上面的函数功能是将所有defaultISR.c中定义的中断函数都转化为中断入口地址保存在PieVectTableInit结构体变量的成员中,之后再通过void InitPieVectTable(void)函数将挣够结构体中的变量整体搬迁到以PieVectTable变量首地址为起点处,如下

#pragma DATA_SECTION(PieVectTable,"PieVectTableFile");

#endif

struct PIE_VECT_TABLE PieVectTable;

7、F28035_PieCtrl.c

PIE初始化函数,将PIE初始化到一个确定的位置

8、F28035_SysCtrl.c

系统的时钟控制,在这个文件中完成。

9、F28035_MemCopy.c

这是对于烧写到FLASH 中的程序,拷贝到RAM 中运行时使用的。因为在flash中运行程序,需要插入等待时间,在RAM 中运行不需要等待。

10、F28035_usDelay.asm

这是个延时函数,很简单。这个文件中还有个“ramfuncs”(具体细节将在其它

文章中叙述),这样定义后就可以使用MemCopy()将它拷贝到RAM 中运行:

       .def _DSP28x_usDelay

       .sect "ramfuncs"

        .global  __DSP28x_usDelay

_DSP28x_usDelay:

        SUB    ACC,#1

        BF     _DSP28x_usDelay,GEQ    ;; Loop if ACC >= 0

        LRETR


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表