4298|6

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

有个问题请教大家 [复制链接]

本帖最后由 dontium 于 2015-1-23 13:35 编辑

我现在要用2812作产品,这就意味着要烧写flash,除了编写相应的cmd文件以外,在主程序里还需要加些什么吗?

最新回复

不好意思,看不出有什么问题.  详情 回复 发表于 2008-7-5 09:57
点赞 关注

回复
举报

78

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我不知道开发的步骤阿,大家给个意见吧,谢谢了。
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
建立工程,编写源程序,添加源文件,头文件,库文件,CMD文件到工程里,
调试,烧写.
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
可我现在出现了一个问题,我烧写进去以后程序无法进外部中断,而且会终止,不知道是不是有什么需要设置的阿,请指点一下,谢谢了。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果程序不长的话,把你的程序和CMD文件贴出来.
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

6
 
void main(void)
{



        InitSysCtrl();

        // Disable and clear all CPU interrupts:
        DINT;
        IER = 0x0000;
        IFR = 0x0000;

        // Initialize Pie Control Registers To Default State:
        InitPieCtrl();

        InitPieVectTable();
        InitGpio();               

        GpioDataRegs.GPFDAT.bit.GPIOF10=0; //传感器选择,\"0\"为速度传感器
//        GpioDataRegs.GPFDAT.bit.GPIOF10=1;  //\"1\"为涡流传感器
        GpioDataRegs.GPBDAT.bit.GPIOB15=1;  //采样脉冲选择,\"1\"为内部脉冲触发。\"0\"为键相信号触发
       
        init_rtc();                       //初始化实时时钟
        Set_Rtc(1,0x07,0x07,0x04,0x12+0x80,0x59,0x59);
       
        resetlcd();                       //lcd复位
        delay(1000);
        LCD_Init_Controler();             //lcd初始化
//        delay(1000);
//        Point2(0,0,1);
        GpioDataRegs.GPADAT.bit.GPIOA2=0;
        GpioDataRegs.GPADAT.bit.GPIOA3=0;
        GpioDataRegs.GPADAT.bit.GPIOA4=0;
        GpioDataRegs.GPADAT.bit.GPIOA5=0;
        for(i=0;i<9600;i++) *(showram+i)=0;
        for(i=0;i<20;i++)key=0;

        EALLOW;
        PieVectTable.XINT1=&INT1_ISR;
        PieVectTable.XINT2=&INT2_ISR;
        EDIS;
       
        XIntruptRegs.XINT1CR.all=0x0001;
       
        XIntruptRegs.XINT2CR.all=0x0001;
        IER |= M_INT1;

        EINT;   // Enable Global interrupt INTM
        ERTM;        // Enable Global realtime interrupt DBGM

        pwm();
       
               
    for(;
        {       
                showtime();       
                }
interrupt void INT2_ISR(void)
{
        XIntruptRegs.XINT2CR.all=0x0000;
        XIntruptRegs.XINT1CR.all=0x0000;
        PieCtrl.PIEACK.all=0xffff;
        ad[0]=* addata&0xfff;
        ad[1]=* addata&0xfff;
        ad[2]=* addata&0xfff;
        ad[3]=* addata&0xfff;

        if (ad[0]>=0x800)
        d=-(((~ad[0])+1)&0xfff);
        else
        d=(ad[0]&0xfff);
       
        if (ad[0]>=0x800)
        a[0]=-(float)(((~ad[0])+1)&0xfff)*10.0/4096.0;
        else
        a[0]=(((float)(ad[0]&0xfff)))*10.0/4096.0;
       
       
        if (ad[1]>=0x800)
        a[1]=-(float)(((~ad[1])+1)&0xfff)*10.0/4096.0;
        else
        a[1]=(((float)(ad[1]&0xfff)))*10.0/4096.0;
       
        if (ad[2]>=0x800)
        a[2]=-(float)(((~ad[2])+1)&0xfff)*10.0/4096.0;
        else
        a[2]=(((float)(ad[2]&0xfff)))*10.0/4096.0;
               
        if (ad[3]>=0x800)
        a[3]=-(float)(((~ad[3])+1)&0xfff)*10.0/4096.0;
        else
        a[3]=(((float)(ad[3]&0xfff)))*10.0/4096.0;
        *(ch2+dot)=d;
        ipcb[dot]=a[0]*100000000;
        EINT;
        dot++;
       
        if(dot==1024)
        XIntruptRegs.XINT2CR.all=0x0000;
        else XIntruptRegs.XINT2CR.all=0x0001;
        XIntruptRegs.XINT1CR.all=0x0001;       
}
cmd文件是:
MEMORY
{
PAGE 0:    /* Program Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */

   ZONE0       : origin = 0x002000, length = 0x002000     /* XINTF zone 0 */
   ZONE1       : origin = 0x004000, length = 0x002000     /* XINTF zone 1 */
   RAML0       : origin = 0x008000, length = 0x001000     /* on-chip RAM block L0 */
   ZONE2       : origin = 0x080000, length = 0x080000     /* XINTF zone 2 */
   ZONE6       : origin = 0x100000, length = 0x080000     /* XINTF zone 6 */
   OTP         : origin = 0x3D7800, length = 0x000800     /* on-chip OTP */
   FLASHJ      : origin = 0x3D8000, length = 0x002000     /* on-chip FLASH */
   FLASHI      : origin = 0x3DA000, length = 0x002000     /* on-chip FLASH */
   FLASHH      : origin = 0x3DC000, length = 0x004000     /* on-chip FLASH */
   FLASHG      : origin = 0x3E0000, length = 0x004000     /* on-chip FLASH */
   FLASHF      : origin = 0x3E4000, length = 0x004000     /* on-chip FLASH */
   FLASHE      : origin = 0x3E8000, length = 0x004000     /* on-chip FLASH */
   FLASHD      : origin = 0x3EC000, length = 0x004000     /* on-chip FLASH */
   FLASHC      : origin = 0x3F0000, length = 0x004000     /* on-chip FLASH */
   FLASHA      : origin = 0x3F6000, length = 0x001F80     /* on-chip FLASH */
   CSM_RSVD    : origin = 0x3F7F80, length = 0x000076     /* Part of FLASHA.  Program with all 0x0000 when CSM is in use. */
   BEGIN       : origin = 0x3F7FF6, length = 0x000002     /* Part of FLASHA.  Used for \"boot to Flash\" bootloader mode. */
   CSM_PWL     : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations in FLASHA */
   
/* ZONE7       : origin = 0x3FC000, length = 0x003FC0     /* XINTF zone 7 available if MP/MCn=1 */
   ROM         : origin = 0x3FF000, length = 0x000FC0     /* Boot ROM available if MP/MCn=0 */
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */

PAGE 1 :   /* Data Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
           /* Registers remain on PAGE1                                                  */

   RAMM0       : origin = 0x000000, length = 0x000400     /* on-chip RAM block M0 */
   RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   RAML0L1     : origin = 0x008000, length = 0x002000     /* on-chip RAM block L1 */
   FLASHB      : origin = 0x3F4000, length = 0x002000     /* on-chip FLASH */
   RAMH0       : origin = 0x3F8000, length = 0x002000     /* on-chip RAM block H0 */
}

/* Allocate sections to memory blocks.
   Note:
         codestart user defined section in DSP28_CodeStartBranch.asm used to redirect code
                   execution when booting to flash
         ramfuncs  user defined section to store functions that will be copied from Flash into RAM
*/

SECTIONS
{

   /* Allocate program areas: */
   .cinit              : > FLASHA      PAGE = 0
   .pinit              : > FLASHA      PAGE = 0
   .text               : > FLASHD      PAGE = 0
   codestart           : > BEGIN       PAGE = 0
   ramfuncs            : LOAD = FLASHD,
                         RUN = RAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0

   csmpasswds          : > CSM_PWL     PAGE = 0
   csm_rsvd            : > CSM_RSVD    PAGE = 0
   
   
   FFTtf > FLASHJ, PAGE = 0
   FFTipcb ALIGN(2048): {}> RAML0L1, PAGE = 1
   FFTmag > RAML0L1, PAGE = 1
       
   /* Allocate uninitalized data sections: */
   .stack              : > RAMM0       PAGE = 1
   .bss                : > RAML0L1     PAGE = 1
   .ebss               : > RAML0L1     PAGE = 1
   .esysmem            : > RAMH0       PAGE = 1
   .sysmem             : > RAMH0       PAGE = 1
   /* Initalized sections go in Flash */
   /* For SDFlash to program these, they must be allocated to page 0 */
   .const              : > FLASHC      PAGE = 0
   .econst             : > FLASHC      PAGE = 0
   .switch             : > FLASHC      PAGE = 0      

   /* Allocate IQ math areas: */
   IQmath              : > FLASHC      PAGE = 0                  /* Math Code */
   IQmathTables        : > ROM         PAGE = 0, TYPE = NOLOAD   /* Math Tables In ROM */

   /* .reset is a standard section used by the compiler.  It contains the */
   /* the address of the start of _c_int00 for C Code.   /*
   /* When using the boot ROM this section and the CPU vector */
   /* table is not needed.  Thus the default type is set here to  */
   /* DSECT  */
   .reset              : > RESET       PAGE = 0, TYPE = DSECT
   vectors             : > VECTORS     PAGE = 0, TYPE = DSECT

}
这就是我写的程序,帮忙看一下,应该怎么改写阿?谢谢了。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
不好意思,看不出有什么问题.
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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