智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 4588|回复: 12
打印 上一主题 下一主题

[单片机] CMD文件配置谁能解释下

[复制链接]

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
跳转到指定楼层
1#
发表于 2017-7-2 16:17:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*
//###########################################################################
//
// FILE:    DSP2803x_Headers_BIOS.cmd
//
// TITLE:   DSP2803x Peripheral registers linker command file
//
// DESCRIPTION:
//
//          This file is for use in BIOS applications.
//
//          Linker command file to place the peripheral structures
//          used within the DSP2803x headerfiles into the correct memory
//          mapped locations.
//
//          This version of the file does not include the PieVectorTable structure.
//          For non-BIOS applications, please use the DSP2803x_Headers_nonBIOS.cmd
//          file which does not include the PieVectorTable structure.
//
//###########################################################################
// $TI Release: F2803x C/C++ Header Files and Peripheral Examples V130 $
// $Release Date: May  8, 2015 $
// $Copyright: Copyright (C) 2009-2015 Texas Instruments Incorporated -
//             http://www.ti.com/ ALL RIGHTS RESERVED $
//###########################################################################
*/
MEMORY
{
PAGE 0:    /* Program Memory */
    /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE1 for data allocation */
   BOOT_RSVD   : origin = 0x000000, length = 0x000040     /* Part of M0, BOOT rom will use this for stack */
   RAMM0      : origin = 0x000040, length = 0x0003C0
   RAML0   : origin = 0x008000, length = 0x000800  /* on-chip RAM block L0 */
   OTP         : origin = 0x3D7800, length = 0x000400     /* on-chip OTP */
   FLASHA      : origin = 0x3E8000, length = 0x008000     /* 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 */
   
   IQTABLES   : origin = 0x3FE000, length = 0x000B50     /* IQ Math Tables in Boot ROM */
   IQTABLES2  : origin = 0x3FEB50, length = 0x00008C     /* IQ Math Tables in Boot ROM */
   IQTABLES3  : origin = 0x3FEBDC, length = 0x0000AA  /* IQ Math Tables in Boot ROM */
   BOOTROM     : origin = 0x3FF27C, length = 0x000D44     /* Boot ROM */        
   RESET       : origin = 0x3FFFC0, length = 0x000002     /* part of boot ROM  */
   VECTORS     : origin = 0x3FFFC2, length = 0x00003E     /* part of boot ROM  */
PAGE 1:    /* Data Memory */
           /* Memory (RAM/FLASH/OTP) blocks can be moved to PAGE0 for program allocation */
           /* Registers remain on PAGE1                                                  */
//   BOOT_RSVD   : origin = 0x000002, length = 0x00004E     /* Part of M0, BOOT rom will use this for stack */
   RAMM1       : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */
   
   RAML1       : origin = 0x008800, length = 0x000400  /* on-chip RAM block L1 */
   RAML2       : origin = 0x008C00, length = 0x000400
   RAML3       : origin = 0x009000, length = 0x001000
   
   FLASHB      : origin = 0x3F0000, length = 0x007C00     /* on-chip FLASH */
   DEV_EMU     : origin = 0x000880, length = 0x000105     /* device emulation registers */
   SYS_PWR_CTL : origin = 0x000985, length = 0x000003     /* System power control registers */
   FLASH_REGS  : origin = 0x000A80, length = 0x000060     /* FLASH registers */
   CSM         : origin = 0x000AE0, length = 0x000010     /* code security module registers */
   ADC_RESULT  : origin = 0x000B00, length = 0x000020     /* ADC Results register mirror */
   CPU_TIMER0  : origin = 0x000C00, length = 0x000008     /* CPU Timer0 registers */
   CPU_TIMER1  : origin = 0x000C08, length = 0x000008     /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/
   CPU_TIMER2  : origin = 0x000C10, length = 0x000008     /* CPU Timer0 registers (CPU Timer1 & Timer2 reserved TI use)*/
   PIE_CTRL    : origin = 0x000CE0, length = 0x000020     /* PIE control registers */
   PIE_VECT    : origin = 0x000D00, length = 0x000100     /* PIE Vector Table */
   CLA1        : origin = 0x001400, length = 0x000080     /* CLA registers */
   ECANA       : origin = 0x006000, length = 0x000040     /* eCAN-A control and status registers */
   ECANA_LAM   : origin = 0x006040, length = 0x000040     /* eCAN-A local acceptance masks */
   ECANA_MOTS  : origin = 0x006080, length = 0x000040     /* eCAN-A message object time stamps */
   ECANA_MOTO  : origin = 0x0060C0, length = 0x000040     /* eCAN-A object time-out registers */
   ECANA_MBOX  : origin = 0x006100, length = 0x000100     /* eCAN-A mailboxes */
   COMP1       : origin = 0x006400, length = 0x000020     /* Comparator + DAC 1 registers */
   COMP2       : origin = 0x006420, length = 0x000020     /* Comparator + DAC 2 registers */
   COMP3       : origin = 0x006440, length = 0x000020     /* Comparator + DAC 3 registers */
   EPWM1       : origin = 0x006800, length = 0x000040     /* Enhanced PWM 1 registers */
   EPWM2       : origin = 0x006840, length = 0x000040     /* Enhanced PWM 2 registers */
   EPWM3       : origin = 0x006880, length = 0x000040     /* Enhanced PWM 3 registers */
   EPWM4       : origin = 0x0068C0, length = 0x000040     /* Enhanced PWM 4 registers */
   EPWM5       : origin = 0x006900, length = 0x000040     /* Enhanced PWM 5 registers */
   EPWM6       : origin = 0x006940, length = 0x000040     /* Enhanced PWM 6 registers */
   EPWM7       : origin = 0x006980, length = 0x000040     /* Enhanced PWM 7 registers */
   ECAP1       : origin = 0x006A00, length = 0x000020     /* Enhanced Capture 1 registers */
   HRCAP1      : origin = 0x006AC0, length = 0x000020     /* High Resolution Capture 1 registers */
   HRCAP2      : origin = 0x006AE0, length = 0x000020     /* High Resolution Capture 2 registers */
   EQEP1       : origin = 0x006B00, length = 0x000040     /* Enhanced QEP 1 registers */
   LINA        : origin = 0x006C00, length = 0x000080     /* LIN-A registers */
   GPIOCTRL    : origin = 0x006F80, length = 0x000040     /* GPIO control registers */
   GPIODAT     : origin = 0x006FC0, length = 0x000020     /* GPIO data registers */
   GPIOINT     : origin = 0x006FE0, length = 0x000020     /* GPIO interrupt/LPM registers */
   SYSTEM      : origin = 0x007010, length = 0x000020     /* System control registers */
   SPIA        : origin = 0x007040, length = 0x000010     /* SPI-A registers */
   SPIB        : origin = 0x007740, length = 0x000010     /* SPI-B registers */
   SCIA        : origin = 0x007050, length = 0x000010     /* SCI-A registers */
   NMIINTRUPT  : origin = 0x007060, length = 0x000010     /* NMI Watchdog Interrupt Registers */
   XINTRUPT    : origin = 0x007070, length = 0x000010     /* external interrupt registers */
   ADC         : origin = 0x007100, length = 0x000080     /* ADC registers */
   I2CA        : origin = 0x007900, length = 0x000040     /* I2C-A registers */
   PARTID      : origin = 0x3D7E80, length = 0x000001     /* Part ID register location */
   CSM_PWL     : origin = 0x3F7FF8, length = 0x000008     /* Part of FLASHA.  CSM password locations. */
}
/* 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
{
  /* Setup for "boot to SARAM" mode:
      The codestart section (found in DSP28_CodeStartBranch.asm)
      re-directs execution to the start of user code.  */
/* Allocate program areas: */
      
    codestart        : > BEGIN,     PAGE = 0
//在线升级
   .cinit              : > FLASHA       PAGE = 0
   .pinit              : > FLASHA,      PAGE = 0
   .text               : > FLASHA       PAGE = 0
   
   .ramfuncs            : LOAD = FLASHA,
                         RUN = RAML0,
                         LOAD_START(_RamfuncsLoadStart),
                         LOAD_END(_RamfuncsLoadEnd),
                         RUN_START(_RamfuncsRunStart),
                         PAGE = 0                          
   csmpasswds          : > CSM_PWL      PAGE = 0
   csm_rsvd            : > CSM_RSVD     PAGE = 0
   

/* Allocate uninitalized data sections: */
   .stack           : > RAMM1,     PAGE = 1  
   .ebss            : > RAML3,     PAGE = 1
   .esysmem         : > RAML3,     PAGE = 1
  //自定义  
   .softOSC      : > RAML1       PAGE = 1
   .classpart       : > RAML2       PAGE = 1
   .cancommu   : > RAML2       PAGE = 1
   
  /* Initalized sections go in Flash */
   /* For SDFlash to program these, they must be allocated to page 0 */
   .econst             : > FLASHA       PAGE = 0
   .switch             : > FLASHA       PAGE = 0   

   
/* Allocate IQ math areas: */
   IQmath           : > FLASHA,   PAGE = 0
   IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD
   /* Uncomment the section below if calling the IQNexp() or IQexp()
      functions from the IQMath.lib library in order to utilize the
      relevant IQ Math table in Boot ROM (This saves space and Boot ROM
      is 1 wait-state). If this section is not uncommented, IQmathTables2
      will be loaded into other memory (SARAM, Flash, etc.) and will take
      up space, but 0 wait-state is possible.
   */
   /*
   IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD
   {
   
              IQmath.lib<IQNexpTable.obj> (IQmathTablesRam)
   
   }
   */
   /* Uncomment the section below if calling the IQNasin() or IQasin()
      functions from the IQMath.lib library in order to utilize the
      relevant IQ Math table in Boot ROM (This saves space and Boot ROM
      is 1 wait-state). If this section is not uncommented, IQmathTables2
      will be loaded into other memory (SARAM, Flash, etc.) and will take
      up space, but 0 wait-state is possible.
   */
   /*
   IQmathTables3    : > IQTABLES3, PAGE = 0, TYPE = NOLOAD
   {
   
              IQmath.lib<IQNasinTable.obj> (IQmathTablesRam)
   
   }   
   */

   
/* .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/* not used, */
   vectors             : > VECTORS     PAGE = 0, TYPE = DSECT
  
/*** PIE Vect Table and Boot ROM Variables Structures ***/
/*** The PIE Vector table is called PIEVECT by DSP/BIOS ***/
/*
  UNION run = PIEVECT,                PAGE = 1
   {
      PieVectTableFile     : TYPE=DSECT
      GROUP
      {
         EmuKeyVar         : TYPE=DSECT
         EmuBModeVar       : TYPE=DSECT
         FlashCallbackVar  : TYPE=DSECT
         FlashScalingVar   : TYPE=DSECT
      }
   }
  */
   PieVectTableFile : > PIE_VECT,   PAGE = 1
/*** Peripheral Frame 0 Register Structures ***/
   DevEmuRegsFile    : > DEV_EMU,     PAGE = 1
  SysPwrCtrlRegsFile: > SYS_PWR_CTL, PAGE = 1
   FlashRegsFile     : > FLASH_REGS,  PAGE = 1
   CsmRegsFile       : > CSM,         PAGE = 1
   AdcResultFile     : > ADC_RESULT,  PAGE = 1
   CpuTimer0RegsFile : > CPU_TIMER0,  PAGE = 1
   CpuTimer1RegsFile : > CPU_TIMER1,  PAGE = 1
   CpuTimer2RegsFile : > CPU_TIMER2,  PAGE = 1
   PieCtrlRegsFile   : > PIE_CTRL,    PAGE = 1
   Cla1RegsFile      : > CLA1,        PAGE = 1
/*** Peripheral Frame 1 Register Structures ***/
   ECanaRegsFile     : > ECANA,       PAGE = 1
   ECanaLAMRegsFile  : > ECANA_LAM,   PAGE = 1
   ECanaMboxesFile   : > ECANA_MBOX,  PAGE = 1
   ECanaMOTSRegsFile : > ECANA_MOTS,  PAGE = 1
   ECanaMOTORegsFile : > ECANA_MOTO,  PAGE = 1
   ECap1RegsFile     : > ECAP1,       PAGE = 1
   HRCap1RegsFile    : > HRCAP1,      PAGE = 1
   HRCap2RegsFile    : > HRCAP2,      PAGE = 1
   EQep1RegsFile     : > EQEP1,       PAGE = 1
   LinaRegsFile      : > LINA,        PAGE = 1
   GpioCtrlRegsFile  : > GPIOCTRL,    PAGE = 1
   GpioDataRegsFile  : > GPIODAT,     PAGE = 1
   GpioIntRegsFile   : > GPIOINT,     PAGE = 1
/*** Peripheral Frame 2 Register Structures ***/
   SysCtrlRegsFile   : > SYSTEM,      PAGE = 1
   SpiaRegsFile      : > SPIA,        PAGE = 1
   SpibRegsFile      : > SPIB,        PAGE = 1
   SciaRegsFile      : > SCIA,        PAGE = 1
   NmiIntruptRegsFile: > NMIINTRUPT,  PAGE = 1
   XIntruptRegsFile  : > XINTRUPT,    PAGE = 1
   AdcRegsFile       : > ADC,         PAGE = 1
   I2caRegsFile      : > I2CA,        PAGE = 1
/*** Peripheral Frame 3 Register Structures ***/
   Comp1RegsFile     : > COMP1,    PAGE = 1
   Comp2RegsFile     : > COMP2,    PAGE = 1
   Comp3RegsFile     : > COMP3,    PAGE = 1
   EPwm1RegsFile     : > EPWM1,    PAGE = 1
   EPwm2RegsFile     : > EPWM2,    PAGE = 1
   EPwm3RegsFile     : > EPWM3,    PAGE = 1
   EPwm4RegsFile     : > EPWM4,    PAGE = 1
   EPwm5RegsFile     : > EPWM5,    PAGE = 1
   EPwm6RegsFile     : > EPWM6,    PAGE = 1
   EPwm7RegsFile     : > EPWM7,    PAGE = 1
/*** Code Security Module Register Structures ***/
   CsmPwlFile        : > CSM_PWL,  PAGE = 1
/*** Device Part ID Register Structures ***/
   PartIdRegsFile    : > PARTID,   PAGE = 1
}
/*
//===========================================================================
// End of file.
//===========================================================================
*/

回复

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
2#
 楼主| 发表于 2017-7-2 22:00:27 | 只看该作者
本帖最后由 15282600864 于 2017-7-2 22:44 编辑

/*
* Abs_SCI.cpp
*
*  Created on: 2016年3月30日
*      Author: js062
*/
#include "Abs_SCI.h"
/************************************************************************************
函数名称: Abs_SCIInit()
功能描述: SCI初始化
函数参数:无
函数返回:无
************************************************************************************/
void  Class_SCIAbs::Abs_SCIInit(void)
{
//objSCIDrv.Drv_SCI_GPIOConfig();
objSCIDrv.Drv_SCIInit();        //初始化
}

/************************************************************************************
函数名称: Abs_SciFramePackForTx(void)
功能描述: 打包发送
函数参数:无
函数返回:无
************************************************************************************/
void Class_SCIAbs::Abs_SciFramePackForTx(void)
{
    UINT16 i;
    UINT16 uChksumTemp;
    uChksumTemp = 0;
/*<===装载发送帧信息===>*/
    objSCIDrv.uSCIDataBuff[0] = objSCIDrv.tagSCIData[1].uSoi;
    objSCIDrv.uSCIDataBuff[1] = objSCIDrv.tagSCIData[1].cid1.uCid1;
    objSCIDrv.uSCIDataBuff[2] = objSCIDrv.tagSCIData[1].cid2.uCid2;
    for(i = 0;i < objSCIDrv.tagSCIData[1].cid1.cids1.bLength;i ++)
    {
     objSCIDrv.uSCIDataBuff[3 + i] = objSCIDrv.tagSCIData[1].SciInfo;
     uChksumTemp = uChksumTemp + objSCIDrv.tagSCIData[1].SciInfo;
    }
    //objSCIDrv.Drv_SCIASendData(objSCIDrv.tagSCIData[1].uChksum);
    objSCIDrv.tagSCIData[1].uChksum = (uChksumTemp + objSCIDrv.tagSCIData[1].cid1.uCid1 + objSCIDrv.tagSCIData[1].cid2.uCid2)%256;
    objSCIDrv.uSCIDataBuff[3 + objSCIDrv.tagSCIData[1].cid1.cids1.bLength] = objSCIDrv.tagSCIData[1].uChksum;
    objSCIDrv.uSCIDataBuff[4 + objSCIDrv.tagSCIData[1].cid1.cids1.bLength] = objSCIDrv.tagSCIData[1].uEoi;
    objSCIDrv.uTxaCount = 5 + objSCIDrv.tagSCIData[1].cid1.cids1.bLength;
    objSCIDrv.tagSCI.bSendOrReceive = bSEND;   //置开始发送数据标志

}

回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
3#
 楼主| 发表于 2017-7-2 22:01:27 | 只看该作者
本帖最后由 15282600864 于 2017-7-2 22:45 编辑

/*
* Abs_SCI.h
*
*  Created on: 2016年3月30日
*      Author: js062
*/
#include "..\Driver\Driver.h"
#include "..\Common\Calculate.h"
#ifndef ABSTRACTION_ABS_SCI_H_
#define ABSTRACTION_ABS_SCI_H_

class Class_SCIAbs
{
private:
public:
void Abs_SCIInit(void);        //初始化
void  Abs_SciFramePackForTx(void);
};

#endif /* ABSTRACTION_ABS_SCI_H_ */



补充内容 (2017-7-2 22:57):
/*
* GlbDataPool.cpp
*
*  Created on: 2016年3月29日
*      Author: js062
*/

#include "GlbDataPool.h"

GBL_CONF_T tConfBuffEntry;              //配置参蕐入口
GBL_CTRL_T tCtrlBuffEntr...
回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
4#
 楼主| 发表于 2017-7-2 22:01:50 | 只看该作者
本帖最后由 15282600864 于 2017-7-2 22:12 编辑

请问这是C++编程还是C  怎么看不明白
回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
5#
 楼主| 发表于 2017-7-2 22:51:35 | 只看该作者
本帖最后由 15282600864 于 2017-7-2 23:36 编辑

#if 0
void Class_Charger::App_ChgSoftStart(void)
{
INT16 m_i16_Vset_TEMP1;
INT16 m_i16_Iset_TEMP1;
//软启结束判断,需接收到BMS下发电流后切入电流环
m_i16_Iset_TEMP1 = tCtrlBuffEntry.tChgCtrl.u16TargetCurrent; //获取CAN下发目标电流
if((m_st_FlagCharger.bVChgReady == 1)//输出软启阶段结束
  &&(m_i16_ChargerOnOffCmd == 0)//bosmode 未发波期间切换
  &&(m_i16_Iset_TEMP1 != 0))
//if(1)
{
//debug
  objChgAlg.m_i16_EdgeDelay = PWM1_MINDB;
  m_st_FlagCharger.bChgRelay = CHG_ON;
  //m_st_FlagCharger.bCharger = 3;
}
else
{
  m_st_FlagCharger.bChgRelay = CHG_OFF;
}
}
#endif
/******************************************************************
** 函 数 名:void App_ChgBorstModeCtrl(void)
** 函数功能:borst mode 控制
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_ChgBorstModeCtrl(void)
{
UINT16 u16VoltageTemp_0;

if(objCharger.m_st_FlagCharger1.bChgAlgMode == 0)
{
  m_u16_BorstModeVol = tCtrlBuffEntry.tChgCtrl.u16TargetVoltage;
}
else
{
  m_u16_BorstModeVol = VCHGREFRUN_MAX;
}
UPDNLMT32(m_u16_BorstModeVol,VCHGREFRUN_MAX,VCHGREFRUN_MIN);//目标电压限幅范围
if(objCharger.m_st_FlagCharger1.bChgAlgMode == 0)
{
  u16VoltageTemp_0 =  m_u16_BorstModeVol - 442;//40V
  if((objAnalog.m_un_VChg.half.hword < u16VoltageTemp_0)
   ||(objChgAlg.m_i16_VChgToIChgEnFlag == 1))//IChg>2A
  {
   m_st_FlagCharger.bCharger = 3;
   objCharger.m_i16_VChgrefRunM_0 = tCtrlBuffEntry.tChgCtrl.u16TargetVoltage;
   if(tCtrlBuffEntry.tChgCtrl.u16TargetCurrent > 918)
   {
    objCharger.m_i16_IChgrefRunM_0 = 459;//2A
   }
   else
   {
    objCharger.m_i16_IChgrefRunM_0 = tCtrlBuffEntry.tChgCtrl.u16TargetCurrent;//>>1;
   }
  }
}
}
/******************************************************************
** 函 数 名:void App_ChgTurnOffSet(void)
** 函数功能:充电控制给定
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_ChgTurnOffSet(void)
{
m_i16_IChgrefRunM_0 = 0;
//电压给定
   if(m_i16_VChgrefRunM_0 > VCHGREFRUN_MIN)
{
  m_i16_VChgrefRunM_0-=50;
}
UPDNLMT32(m_i16_VChgrefRunM_0,VCHGREFRUN_MAX,VCHGREFRUN_MIN);//目标电压限幅范围
}
/******************************************************************
** 函 数 名:void App_ChgCtrlSet(void)
** 函数功能:充电控制给定
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_ChgCtrlSet(void)
{
INT16 m_i16_Vset_TEMP;
INT16 m_i16_Iset_TEMP;
m_i16_Vset_TEMP = tCtrlBuffEntry.tChgCtrl.u16TargetVoltage;
if(objTimer.m_st_TimerFlag.u16_b10ms == 1)
{
  if(m_i16_VChgrefRunM_0 < m_i16_Vset_TEMP)
  {
   m_i16_VChgrefRunM_0++;
  }
  else if(m_i16_VChgrefRunM_0 > m_i16_Vset_TEMP)
  {
   m_i16_VChgrefRunM_0--;
  }
}
UPDNLMT32(m_i16_VChgrefRunM_0,VCHGREFRUN_MAX,VCHGREFRUN_MIN);//目标电压限幅范围
m_i16_Iset_TEMP = tCtrlBuffEntry.tChgCtrl.u16TargetCurrent;
if(objTimer.m_st_TimerFlag.u16_b10ms == 1)
{
  if((objChgAlg.m_i16_VChgToIChgEnFlag != 1)//空载无电流,解决突加载问题
   &&(m_i16_Iset_TEMP > 1379))
  {
   if(m_i16_IChgrefRunM_0 < 1379)//3A
   {
    m_i16_IChgrefRunM_0 ++;
   }
   else if(m_i16_IChgrefRunM_0 > 1379)
   {
    m_i16_IChgrefRunM_0 --;
   }
  }
  else
  {
   if(m_i16_IChgrefRunM_0 < m_i16_Iset_TEMP)
   {
    m_i16_IChgrefRunM_0 ++;
   }
   else if(m_i16_IChgrefRunM_0 > m_i16_Iset_TEMP)
   {
    m_i16_IChgrefRunM_0 --;
   }
  }
}
UPDNLMT32(m_i16_IChgrefRunM_0,ICHGREFRUN_MAX,ICHGREFRUN_MIN);//目标电流限幅范围
}

/******************************************************************
** 函 数 名:UINT16 App_ChgPMaxGet(void)
** 函数功能:充电最大功率获取
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
INT16 Class_Charger::App_ChgPMaxGet(void)
{
INT16 u16_ChgPMax_Vin;
//INT16 u16_ChgPMax_Temp;
//INT16 u16_IinMax_Temp;
// INT16 u16_TempErr;
//输入电压降额
u16_ChgPMax_Vin = ((INT32)objAnalog.m_un_VinRms.half.hword * tCtrlBuffEntry.tPfcCtrl.u16InputMaxCurrent)>>8;//例:16A充电抢-最大输入电流12.5A*Vin  注:Iin定标15A-1024定标3300w-4096
if(u16_ChgPMax_Vin > 4335*2)//6.6kw-4096*2
{
  u16_ChgPMax_Vin = 4335*2;//额定功率:4096*2/94.5%
}
//u16_ChgPMax_Vin = ((INT32)u16_ChgPMax_Vin * 921)>>10;//满载降额
/*
//温度降额
if(objTemp.m_st_FlagTemp.bTempHighWarn == 1)
{
  u16_TempErr = objAnalog.m_un_Temp.half.hword - TEMP_HIGH_WARN;//超过降额限多少度
  u16_ChgPMax_Temp = u16_ChgPMax_Vin - ((INT32)u16_TempErr * 248);//1度降额200W-248
}
else
{
  u16_ChgPMax_Temp = u16_ChgPMax_Vin;//输入电压降额值
}
*/
return u16_ChgPMax_Vin;
}
/******************************************************************
** 函 数 名:void App_ChgTurnOFF(void)
** 函数功能:充电器关闭
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_ChgTurnOFF(void)
{
m_i16_ChargerOnOffCmd = 0;
m_st_FlagCharger.bCharger = 0;
m_st_FlagCharger.bChgPWMEN = LOWOUT_OFF;
objChgAlg.Alg_ChgForceLow(PWM1);
objChgAlg.Alg_ChgOffReset();
}
/******************************************************************
** 函 数 名:void App_ChgTurnON(void)
** 函数功能:充电器开启
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_ChgTurnON(void)
{
objChgAlg.Alg_ChgAlgorithmInit();
//限幅初始化
m_i16_ChgPwm_P_Up_RunM = PWM1_TIMER_MAXTBPRD;
m_i16_ChgPwm_P_Down_RunM = PWM1_TIMER_MINTBPRD;
if((objRectifier.m_st_FlagDCBus.bDcBusSoftStOver == 1)//母线充电软启完成
  &&(tCtrlBuffEntry.tBatCtrl.u16BatIntVoltage != 0))//接收到电池电压
{
  m_st_FlagCharger.bCharger = 1;
}
else
{
  m_st_FlagCharger.bCharger = 0;
}
}

/******************************************************************
** 函 数 名:void App_ChgHWFaultChk(void)
** 函数功能:输出电压异常硬件判断
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
/*
void Class_Charger::App_ChgHWFaultChk(void)
{
if(objFailMag.App_Sign_FaultGet(VCHGHIGH,1,10,10) == 1)
{
  m_st_FlagCharger.bVChgFault = 1;
}
else
{
  m_st_FlagCharger.bVChgFault = 0;
}
}
*/
/******************************************************************
** 函 数 名:void App_Dat_VChgFlag(void)
** 函数功能:充电输出故障标志
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_Dat_VChgFlag(void)
{
INT16 u16_Tmp_VBatt,u16_Tmp_VChgTarget;
//INT16 u16_ChgHighTemp;
if(objCharger.m_st_FlagCharger.bCharger == 0)
{
  m_i16_ChgSoftStartFailCntPerMs = 0;
  m_st_FlagCharger.bVChgSoftFault = 0;
  
  m_i16_ChgSoftStartCntPerMs = 0;
  m_st_FlagCharger.bVChgReady = 0;
  m_i16_DcChgLowVoltCntPerMs = 0;
  m_i16_DcChgHighVoltCntPerMs = 0;
  m_i16_DcChgNoCurFaultCnt = 0;
  m_st_FlagCharger.bVChgHighFault =0;
  m_st_FlagCharger.bVChgLowFault = 0;
  m_st_FlagCharger.bVChgFault = 0;

}
else if(objCharger.m_st_FlagCharger.bCharger == 1)//软启阶段
{
  //软启失败判断,软启时间超过20s
  m_i16_ChgSoftStartFailCntPerMs += objTimer.m_st_TimerFlag.u16_b100ms;
  if(m_i16_ChgSoftStartFailCntPerMs >= 200)
  {
   m_i16_ChgSoftStartFailCntPerMs = 200;
  
   m_st_FlagCharger.bVChgSoftFault = 1;
  }
  if(objCharger.m_st_FlagCharger1.bChgAlgMode == 0)//充电模式
  {
   u16_Tmp_VBatt = tCtrlBuffEntry.tBatCtrl.u16BatIntVoltage - 220;
  }
  else if(objCharger.m_st_FlagCharger1.bChgAlgMode == 1)//加热模式
  {
   u16_Tmp_VBatt = 3099;//280V
   //debug
   u16_Tmp_VBatt = 3874;//350
  }
  u16_Tmp_VChgTarget = abs(u16_Tmp_VBatt - objAnalog.m_un_VChg.half.hword);
  //输出软启判断
  if(u16_Tmp_VChgTarget  < 223)//20V
  {
   m_i16_ChgSoftStartCntPerMs += objTimer.m_st_TimerFlag.u16_b10ms;
   if(m_i16_ChgSoftStartCntPerMs >= 200)
   {
    m_i16_ChgSoftStartCntPerMs = 200;
   
    m_st_FlagCharger.bVChgReady = 1;
   }
  }
  else
  {
   m_i16_ChgSoftStartCntPerMs -= objTimer.m_st_TimerFlag.u16_b10ms;
   if(m_i16_ChgSoftStartCntPerMs <= 0)
   {
    m_i16_ChgSoftStartCntPerMs = 0;
    m_st_FlagCharger.bVChgReady = 0;  
   }  
  }
}
//else if(objCharger.m_st_FlagCharger.bCharger == 2)//间歇带载
//{
//
//}
else if((objCharger.m_st_FlagCharger.bCharger == 3)||(objCharger.m_st_FlagCharger.bCharger == 2))//充电阶段
{
  // 电池包充电截止电压有效性
  //debug
  if(1)//(BMS7_OBC.BatChrgVolCplV == 1)
  {
   //u16_ChgHighTemp = tCtrlBuffEntry.tBatCtrl.u16BatChrgVolCp;
  //电池高压判断    电池包充电截止电压
   if(objAnalog.m_un_VChg.half.hword > DCBATT_HIGH_VOLT)
   {
    m_i16_DcChgHighVoltCntPerMs += objTimer.m_st_TimerFlag.u16_b10ms;
    if(m_i16_DcChgHighVoltCntPerMs >= 200)
    {
     m_i16_DcChgHighVoltCntPerMs = 200;
   
     m_st_FlagCharger.bVChgHighFault = 1;
    }
   }
   else if(objAnalog.m_un_VChg.half.hword  < DCBATT_HIGH_VOLT-DCBATT_REAREA)
   {
    m_i16_DcChgHighVoltCntPerMs -= objTimer.m_st_TimerFlag.u16_b10ms;
    if(m_i16_DcChgHighVoltCntPerMs <= 0)
    {
     m_i16_DcChgHighVoltCntPerMs = 0;
     m_st_FlagCharger.bVChgHighFault = 0;
   
    }
   }
  }
  else
  {
   m_i16_DcChgHighVoltCntPerMs = 0;
   m_st_FlagCharger.bVChgHighFault = 0;
  }
  //电池低压判断
   if(objAnalog.m_un_VChg.half.hword < DCBATT_LOW_VOLT)
   {
    m_i16_DcChgLowVoltCntPerMs += objTimer.m_st_TimerFlag.u16_b10ms;
    if(m_i16_DcChgLowVoltCntPerMs >= 200)
    {
     m_i16_DcChgLowVoltCntPerMs = 200;
   
     m_st_FlagCharger.bVChgLowFault = 1;
    }
   }
   else if(objAnalog.m_un_VChg.half.hword  > DCBATT_LOW_VOLT + DCBATT_REAREA)
   {
    m_i16_DcChgLowVoltCntPerMs -= objTimer.m_st_TimerFlag.u16_b10ms;
    if(m_i16_DcChgLowVoltCntPerMs <= 0)
    {
     m_i16_DcChgLowVoltCntPerMs = 0;
     m_st_FlagCharger.bVChgLowFault = 0;
   
    }
   }
     
   if((m_st_FlagCharger.bVChgHighFault == 1)
   ||(m_st_FlagCharger.bVChgLowFault == 1))
   {
    m_st_FlagCharger.bVChgFault = 1;
   }
   else
   {
    m_st_FlagCharger.bVChgFault = 0;
   }
//充电电流故障
  //debug
  if(0)//(BMS1_OBC.BMS1_BatChrgSts != 1)//BMS下发未充电状态   0x1: Normal charge mode
  {
   if(m_i16_DcChgNoCurFaultCnt < 100)//确认10s
   {
    m_i16_DcChgNoCurFaultCnt += objTimer.m_st_TimerFlag.u16_b100ms;
   }
   else
   {
    m_st_FlagCharger1.bChargerNoCurrentFlag = 1;
   }
  }
}
}
/******************************************************************
** 函 数 名:void App_Dat_VChgReSet(void)
** 函数功能:充电标志恢复
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_Dat_VChgReSet(void)
{
if((m_st_FlagCharger1.bChargerNoCurrentFlag == 1)//BMS下发未充电状态
  ||(m_st_FlagCharger1.bChgVoltLimitOffFlag == 1))
{
  if(m_i16_DcChgNoCurFaultReSetCnt < 200)//确认20s
  {
   m_i16_DcChgNoCurFaultReSetCnt += objTimer.m_st_TimerFlag.u16_b100ms;
  }
  else
  {
   m_st_FlagCharger1.bChargerNoCurrentFlag = 0;
   //m_st_FlagCharger1.bChgVoltLimitOffFlag = 0;
   m_i16_DcChgNoCurFaultReSetCnt = 0;
  }
}
}
/******************************************************************
** 函 数 名:void App_INT_ChgVHighFastChk(void)
** 函数功能:充电输出超高压快检
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
#pragma CODE_SECTION(".ramfuncs")
void Class_Charger::App_INT_ChgVHighFastChk(void)
{
if((objCharger.m_st_FlagCharger.bCharger == 2)
||(objCharger.m_st_FlagCharger.bCharger == 3))
{
  //电池高压判断
  if(objAnalog.m_i16_VChg_1 > DCBATT_OVERHIGH_VOLT)
  {
   m_i16_DcChgHighVoltFastCnt ++;
   if(m_i16_DcChgHighVoltFastCnt >= 5)
   {
    m_i16_DcChgHighVoltFastCnt = 5;
    m_st_FlagCharger1.bChgVoltLimitOffFlag = 1;
   }
  }
  else if(objAnalog.m_i16_VChg_1 < DCBATT_OVERHIGH_VOLT-DCBATT_REAREA)
  {
   m_i16_DcChgHighVoltFastCnt --;
   if(m_i16_DcChgHighVoltFastCnt <= 0)
   {
    m_i16_DcChgHighVoltFastCnt = 0;
    //m_st_FlagCharger1.bChgVoltLimitOffFlag = 0;
   }
  }
}
else
{
  m_i16_DcChgHighVoltFastCnt = 0;
  //m_st_FlagCharger1.bChgVoltLimitOffFlag = 0;
}
}

/******************************************************************
** 函 数 名:void App_VChgFaultCntGet(void)
** 函数功能:故障计数,加工下电故障标志
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_VChgFaultCntGet(void)
{
//充电异常故障记录
//充电状态计数故障次数
if((1 == m_st_FlagCharger.bVChgFault)//当前有故障
&&(0 == m_st_FlagCharger.bVChgFaultBack))//备份无故障
{
  m_st_FlagCharger.bChgFaultDelayFlag = 1;
  u16_VChgFaultCnt++;
  if(u16_VChgFaultCnt >= 5)
  {
   objFailMag.m_st_FlagSys.bReFaultFlag = 1;//不可回切
  }
}
//充电状态和保护状态同时计时
if(1 == m_st_FlagCharger.bChgFaultDelayFlag)//10min延时到,清计时计数标志,
{
  if(1 == objTimer.m_st_TimerFlag.u16_b100ms)
  {
   u16_VChgFaultTime ++;
   if( u16_VChgFaultTime >= 3600)//10min
   {
    u16_VChgFaultTime = 0;
    m_st_FlagCharger.bChgFaultDelayFlag = 0;
    u16_VChgFaultCnt = 0;
    objFailMag.m_st_FlagSys.bReFaultFlag = 0;
   }
  }
}
m_st_FlagCharger.bVChgFaultBack = m_st_FlagCharger.bVChgFault;

}
/******************************************************************
** 函 数 名:void App_ChgLimitCProtect(void)
** 函数功能:充电限流保护
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_ChgLimitCProtect(void)
{
if(objCharger.m_st_FlagCharger.bCharger > 1)//(objAnalog.m_i16_VChg_1 < 1107)//100V
{
  m_i16_ChgTZTrigerCnt1++;
  if(m_i16_ChgTZTrigerCnt1 > 20)//30
  {
   m_st_FlagCharger.bChgOverCurFault = 1;  //短路标志,用于关断输出
   objChgAlg.Alg_ChgForceLow(1);
  }
}
  //objChgAlg.Alg_ChgOffReset();
}

#if 0
/******************************************************************
** 函 数 名:void App_INT_ChgOverCurFault(void)
** 函数功能:充电过流故障
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_INT_ChgOverCurFault(void)
{
if(m_st_FlagCharger.bChgLimitCurrentFlag == 1)
{
  if(m_i16_PChgrefRunM_0 < 10)//充电给定功率
  {
   if(m_i16_ChgShortFaultCnt < 100)//限流次数
   {
    m_i16_ChgShortFaultCnt = m_i16_ChgShortFaultCnt + 1;
   }
   else
   {
    m_st_FlagCharger.bChgOverCurFault = 1;  //短路标志,用于关断输出
   }
  }
}
else
{
  if(m_i16_ChgShortFaultCnt > 0)//限流次数
  {
   m_i16_ChgShortFaultCnt--;
  }
  else
  {
   //m_st_FlagCharger.bChgOverCurFault = 0;  //短路标志,用于关断输出
  }
}


}
#endif
#if 0
/******************************************************************
** 函 数 名:void App_ShortFaultCntGet(void)
** 函数功能:短路故障次数
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
void Class_Charger::App_ShortFaultCntGet(void)
{
//充电异常故障记录
//充电状态计数故障次数
if((1 == m_st_FlagCharger.bChgOverCurFault)//当前有故障
&&(0 == m_st_FlagCharger.bChgOverCurFaultBack))//备份无故障
{
  m_st_FlagCharger.bChgShortFaultDelayFlag = 1;
  u16_ChgShortFaultCnt++;
  if(u16_ChgShortFaultCnt >= 3)
  {
   objFailMag.m_st_FlagSys.bReFaultFlag = 1;//不可回切
  }
}
/*
//充电状态和保护状态同时计时
if(1 == m_st_FlagCharger.bChgShortFaultDelayFlag)//10min延时到,清计时计数标志,
{
  if(1 == objTimer.m_st_TimerFlag.u16_b100ms)
  {
   u16_ChgShortFaultTime ++;
   if( u16_ChgShortFaultTime >= 3600)//10min
   {
    u16_ChgShortFaultTime = 0;
    m_st_FlagCharger.bChgShortFaultDelayFlag = 0;
    u16_ChgShortFaultCnt = 0;
    objFailMag.m_st_FlagSys.bReFaultFlag = 0;
   }
  }
}
*/
m_st_FlagCharger.bChgOverCurFaultBack = m_st_FlagCharger.bChgOverCurFault;

}
#endif
回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
6#
 楼主| 发表于 2017-7-2 23:37:54 | 只看该作者
本帖最后由 15282600864 于 2017-7-3 00:22 编辑

/*
* Obj_SysInit.cpp
*
*  Created on: 2016年3月30日
*      Author: js062
*/
#include "Obj_SystemInit.h"

void Class_SysInit::App_SysInit(void)
{
objTimerAbs.Abs_WDogCmd(CLOSE);
objTimerAbs.Abs_SysTimerInit();
objMemoryAbs.Abs_MemoryInit();
objGPIOAbs.Abs_GPIOInit();
objADCAbs.Abs_ADCInit();
objPWMAbs.Abs_PWMnInit();

//objSCIAbs.Abs_SCIInit();
//objPWMAbs.Abs_PWMINT_Init();
objTimerAbs.Abs_CPUTimerInit();

App_GlbDataInit();//系统全局变量初始化
objTimerAbs.Abs_INTxInit();
objRecordMag.App_RecordInit();
objRecordMag.App_E2promCheck();
// objCANAbs.Abs_CAN_Init();
//初始化变量
//objRecordMag.App_UserSettingVarInit();//E2PROM存储初始数据读取

objSCIAbs.Abs_SCIInit();
//objPWMAbs.Abs_PWMnCMD(CLOSE);
//objTimerAbs.Abs_WDogCmd(OPEN);// Enable the watchdog

}
void Class_SysInit::App_GlbDataInit(void)
{
GlbDataPoolInit();
objCharger.App_ChargerInit();
objChgAlg.Alg_ChgAlgorithmInit();
objFailMag.App_FailMag_Init();//变量初始化
objRectifier.App_RecMagInit();
objUtility.App_UtilityInit();

// objCommuCan.App_Com_Init();
objTemp.App_TempMagInit();

objBattery.App_BattMagInit();

//objFanMag.App_FanManagerInit();
objAuxPower.m_st_FlagAuxP.bVBmsHighFault = 0;
objAuxPower.m_st_FlagAuxP.bVAuxLowFault = 0;
objCommuSCI.m_st_FlagSCI.bSCIFault = 0;
objCharger.m_st_FlagCharger1.bChgVoltLimitOffFlag = 0;
}

回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
7#
 楼主| 发表于 2017-7-3 00:36:05 | 只看该作者
本帖最后由 15282600864 于 2017-7-3 01:15 编辑

//###########################################################################
//
// FILE:    DSP2803x_GlobalVariableDefs.c
//
// TITLE:   DSP2803x Global Variables and Data Section Pragmas.
//
//###########################################################################
// $TI Release: F2803x C/C++ Header Files and Peripheral Examples V130 $
// $Release Date: May  8, 2015 $
// $Copyright: Copyright (C) 2009-2015 Texas Instruments Incorporated -
//             http://www.ti.com/ ALL RIGHTS RESERVED $
//###########################################################################
#include "DSP2803x_Device.h"     // DSP2803x Headerfile Include File
//---------------------------------------------------------------------------
// Define Global Peripheral Variables:
//
//----------------------------------------
//extern const struct CSM_PWL CsmPwl;
//PWM模块数组定义
volatile struct EPWM_REGS *ePWM[CPU_EPWM_MODULE_MAX] =
{
    //&EPwm1Regs,   //intentional: (ePWM[0] not used)
    &EPwm1Regs,
    &EPwm2Regs,
    &EPwm3Regs,
    &EPwm4Regs,
    &EPwm5Regs,
    &EPwm6Regs,
    &EPwm7Regs,
};
//COMP模块定义
volatile struct COMP_REGS *Comp[CPU_COMP_MODULE_MAX] =
{
    //&Comp1Regs,   //intentional: (Comp[0] not used)
    &Comp1Regs,
    &Comp2Regs,
    &Comp3Regs,
};

//TIMER模块定义
volatile struct CPUTIMER_REGS *Timer[CPU_TIMER_MODULE_MAX] =
{
    &CpuTimer0Regs,   
    &CpuTimer1Regs,
    &CpuTimer2Regs,
};

#ifdef __cplusplus
#pragma DATA_SECTION("AdcRegsFile")
#else
#pragma DATA_SECTION(AdcRegs,"AdcRegsFile");
#endif
volatile struct ADC_REGS AdcRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("AdcResultFile")
#else
#pragma DATA_SECTION(AdcResult,"AdcResultFile");
#endif
volatile struct ADC_RESULT_REGS AdcResult;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Comp1RegsFile")
#else
#pragma DATA_SECTION(Comp1Regs,"Comp1RegsFile");
#endif
volatile struct COMP_REGS Comp1Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Comp2RegsFile")
#else
#pragma DATA_SECTION(Comp2Regs,"Comp2RegsFile");
#endif
volatile struct COMP_REGS Comp2Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Comp3RegsFile")
#else
#pragma DATA_SECTION(Comp3Regs,"Comp3RegsFile");
#endif
volatile struct COMP_REGS Comp3Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CpuTimer0RegsFile")
#else
#pragma DATA_SECTION(CpuTimer0Regs,"CpuTimer0RegsFile");
#endif
volatile struct CPUTIMER_REGS CpuTimer0Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CpuTimer1RegsFile")
#else
#pragma DATA_SECTION(CpuTimer1Regs,"CpuTimer1RegsFile");
#endif
volatile struct CPUTIMER_REGS CpuTimer1Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CpuTimer2RegsFile")
#else
#pragma DATA_SECTION(CpuTimer2Regs,"CpuTimer2RegsFile");
#endif
volatile struct CPUTIMER_REGS CpuTimer2Regs;
//----------------------------------------
//#pragma DATA_SECTION("csmpasswds")
//const struct CSM_PWL CsmPwl = {0x2014,0x1979,0x5492,0x3568,0x5996,0x1564,0x8887,0x9096};
#ifdef __cplusplus
#pragma DATA_SECTION("CsmPwlFile")
#else
#pragma DATA_SECTION(CsmPwl,"CsmPwlFile");
#endif
volatile struct CSM_PWL CsmPwl;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CsmRegsFile")
#else
#pragma DATA_SECTION(CsmRegs,"CsmRegsFile");
#endif
volatile struct CSM_REGS CsmRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("DevEmuRegsFile")
#else
#pragma DATA_SECTION(DevEmuRegs,"DevEmuRegsFile");
#endif
volatile struct DEV_EMU_REGS DevEmuRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaRegsFile")
#else
#pragma DATA_SECTION(ECanaRegs,"ECanaRegsFile");
#endif
volatile struct ECAN_REGS ECanaRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaMboxesFile")
#else
#pragma DATA_SECTION(ECanaMboxes,"ECanaMboxesFile");
#endif
volatile struct ECAN_MBOXES ECanaMboxes;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaLAMRegsFile")
#else
#pragma DATA_SECTION(ECanaLAMRegs,"ECanaLAMRegsFile");
#endif
volatile struct LAM_REGS ECanaLAMRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaMOTSRegsFile")
#else
#pragma DATA_SECTION(ECanaMOTSRegs,"ECanaMOTSRegsFile");
#endif
volatile struct MOTS_REGS ECanaMOTSRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaMOTORegsFile")
#else
#pragma DATA_SECTION(ECanaMOTORegs,"ECanaMOTORegsFile");
#endif
volatile struct MOTO_REGS ECanaMOTORegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Cla1RegsFile")
#else
#pragma DATA_SECTION(Cla1Regs,"Cla1RegsFile");
#endif
volatile struct CLA_REGS Cla1Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm1RegsFile")
#else
#pragma DATA_SECTION(EPwm1Regs,"EPwm1RegsFile");
#endif
volatile struct EPWM_REGS EPwm1Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm2RegsFile")
#else
#pragma DATA_SECTION(EPwm2Regs,"EPwm2RegsFile");
#endif
volatile struct EPWM_REGS EPwm2Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm3RegsFile")
#else
#pragma DATA_SECTION(EPwm3Regs,"EPwm3RegsFile");
#endif
volatile struct EPWM_REGS EPwm3Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm4RegsFile")
#else
#pragma DATA_SECTION(EPwm4Regs,"EPwm4RegsFile");
#endif
volatile struct EPWM_REGS EPwm4Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm5RegsFile")
#else
#pragma DATA_SECTION(EPwm5Regs,"EPwm5RegsFile");
#endif
volatile struct EPWM_REGS EPwm5Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm6RegsFile")
#else
#pragma DATA_SECTION(EPwm6Regs,"EPwm6RegsFile");
#endif
volatile struct EPWM_REGS EPwm6Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm7RegsFile")
#else
#pragma DATA_SECTION(EPwm7Regs,"EPwm7RegsFile");
#endif
volatile struct EPWM_REGS EPwm7Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECap1RegsFile")
#else
#pragma DATA_SECTION(ECap1Regs,"ECap1RegsFile");
#endif
volatile struct ECAP_REGS ECap1Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EQep1RegsFile")
#else
#pragma DATA_SECTION(EQep1Regs,"EQep1RegsFile");
#endif
volatile struct EQEP_REGS EQep1Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("LinaRegsFile")
#else
#pragma DATA_SECTION(LinaRegs,"LinaRegsFile");
#endif
volatile struct LIN_REGS LinaRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("GpioCtrlRegsFile")
#else
#pragma DATA_SECTION(GpioCtrlRegs,"GpioCtrlRegsFile");
#endif
volatile struct GPIO_CTRL_REGS GpioCtrlRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("GpioDataRegsFile")
#else
#pragma DATA_SECTION(GpioDataRegs,"GpioDataRegsFile");
#endif
volatile struct GPIO_DATA_REGS GpioDataRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("GpioIntRegsFile")
#else
#pragma DATA_SECTION(GpioIntRegs,"GpioIntRegsFile");
#endif
volatile struct GPIO_INT_REGS GpioIntRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("HRCap1RegsFile")
#else
#pragma DATA_SECTION(HRCap1Regs,"HRCap1RegsFile");
#endif
volatile struct HRCAP_REGS HRCap1Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("HRCap2RegsFile")
#else
#pragma DATA_SECTION(HRCap2Regs,"HRCap2RegsFile");
#endif
volatile struct HRCAP_REGS HRCap2Regs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("I2caRegsFile")
#else
#pragma DATA_SECTION(I2caRegs,"I2caRegsFile");
#endif
volatile struct I2C_REGS I2caRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("NmiIntruptRegsFile")
#else
#pragma DATA_SECTION(NmiIntruptRegs,"NmiIntruptRegsFile");
#endif
volatile struct NMIINTRUPT_REGS NmiIntruptRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("PartIdRegsFile")
#else
#pragma DATA_SECTION(PartIdRegs,"PartIdRegsFile");
#endif
volatile struct PARTID_REGS PartIdRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("PieCtrlRegsFile")
#else
#pragma DATA_SECTION(PieCtrlRegs,"PieCtrlRegsFile");
#endif
volatile struct PIE_CTRL_REGS PieCtrlRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("PieVectTableFile")
#else
#pragma DATA_SECTION(PieVectTable,"PieVectTableFile");
#endif
volatile struct PIE_VECT_TABLE PieVectTable;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SciaRegsFile")
#else
#pragma DATA_SECTION(SciaRegs,"SciaRegsFile");
#endif
volatile struct SCI_REGS SciaRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SpiaRegsFile")
#else
#pragma DATA_SECTION(SpiaRegs,"SpiaRegsFile");
#endif
volatile struct SPI_REGS SpiaRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SpibRegsFile")
#else
#pragma DATA_SECTION(SpibRegs,"SpibRegsFile");
#endif
volatile struct SPI_REGS SpibRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SysCtrlRegsFile")
#else
#pragma DATA_SECTION(SysCtrlRegs,"SysCtrlRegsFile");
#endif
volatile struct SYS_CTRL_REGS SysCtrlRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SysPwrCtrlRegsFile")
#else
#pragma DATA_SECTION(SysPwrCtrlRegs,"SysPwrCtrlRegsFile");
#endif
volatile struct SYS_PWR_CTRL_REGS SysPwrCtrlRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("FlashRegsFile")
#else
#pragma DATA_SECTION(FlashRegs,"FlashRegsFile");
#endif
volatile struct FLASH_REGS FlashRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("XIntruptRegsFile")
#else
#pragma DATA_SECTION(XIntruptRegs,"XIntruptRegsFile");
#endif
volatile struct XINTRUPT_REGS XIntruptRegs;
/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EmuKeyVar");
#else
#pragma DATA_SECTION(EmuKey,"EmuKeyVar");
#endif
Uint16 EmuKey;
*/
/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EmuBModeVar");
#else
#pragma DATA_SECTION(EmuBMode,"EmuBModeVar");
#endif
Uint16 EmuBMode;
*/
/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("FlashScalingVar");
#else
#pragma DATA_SECTION(Flash_CPUScaleFactor, "FlashScalingVar");
#endif
Uint32 Flash_CPUScaleFactor;
*/
/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("FlashCallbackVar");
#else
#pragma DATA_SECTION(Flash_CallbackPtr, "FlashCallbackVar");
#endif
void (*Flash_CallbackPtr) (void);
*/
//===========================================================================
// End of file.
//===========================================================================

回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
8#
 楼主| 发表于 2017-7-3 01:16:33 | 只看该作者
//###########################################################################
//
// FILE:    DSP2803x_GlobalVariableDefs.c
//
// TITLE:   DSP2803x Global Variables and Data Section Pragmas.
//
//###########################################################################
// $TI Release: F2803x C/C++ Header Files and Peripheral Examples V130 $
// $Release Date: May  8, 2015 $
// $Copyright: Copyright (C) 2009-2015 Texas Instruments Incorporated -
//             http://www.ti.com/ ALL RIGHTS RESERVED $
//###########################################################################

#include "DSP2803x_Device.h"     // DSP2803x Headerfile Include File

//---------------------------------------------------------------------------
// Define Global Peripheral Variables:
//
//----------------------------------------
//extern const struct CSM_PWL CsmPwl;

//PWM模块数组定义
volatile struct EPWM_REGS *ePWM[CPU_EPWM_MODULE_MAX] =
{
    //&EPwm1Regs,                        //intentional: (ePWM[0] not used)
    &EPwm1Regs,
    &EPwm2Regs,
    &EPwm3Regs,
    &EPwm4Regs,
    &EPwm5Regs,
    &EPwm6Regs,
    &EPwm7Regs,
};

//COMP模块定义
volatile struct COMP_REGS *Comp[CPU_COMP_MODULE_MAX] =
{
    //&Comp1Regs,                        //intentional: (Comp[0] not used)
    &Comp1Regs,
    &Comp2Regs,
    &Comp3Regs,
};


//TIMER模块定义
volatile struct CPUTIMER_REGS *Timer[CPU_TIMER_MODULE_MAX] =
{
    &CpuTimer0Regs,                       
    &CpuTimer1Regs,
    &CpuTimer2Regs,

};


#ifdef __cplusplus
#pragma DATA_SECTION("AdcRegsFile")
#else
#pragma DATA_SECTION(AdcRegs,"AdcRegsFile");
#endif
volatile struct ADC_REGS AdcRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("AdcResultFile")
#else
#pragma DATA_SECTION(AdcResult,"AdcResultFile");
#endif
volatile struct ADC_RESULT_REGS AdcResult;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Comp1RegsFile")
#else
#pragma DATA_SECTION(Comp1Regs,"Comp1RegsFile");
#endif
volatile struct COMP_REGS Comp1Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Comp2RegsFile")
#else
#pragma DATA_SECTION(Comp2Regs,"Comp2RegsFile");
#endif
volatile struct COMP_REGS Comp2Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Comp3RegsFile")
#else
#pragma DATA_SECTION(Comp3Regs,"Comp3RegsFile");
#endif
volatile struct COMP_REGS Comp3Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CpuTimer0RegsFile")
#else
#pragma DATA_SECTION(CpuTimer0Regs,"CpuTimer0RegsFile");
#endif
volatile struct CPUTIMER_REGS CpuTimer0Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CpuTimer1RegsFile")
#else
#pragma DATA_SECTION(CpuTimer1Regs,"CpuTimer1RegsFile");
#endif
volatile struct CPUTIMER_REGS CpuTimer1Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CpuTimer2RegsFile")
#else
#pragma DATA_SECTION(CpuTimer2Regs,"CpuTimer2RegsFile");
#endif
volatile struct CPUTIMER_REGS CpuTimer2Regs;

//----------------------------------------
//#pragma DATA_SECTION("csmpasswds")
//const struct CSM_PWL CsmPwl = {0x2014,0x1979,0x5492,0x3568,0x5996,0x1564,0x8887,0x9096};

#ifdef __cplusplus
#pragma DATA_SECTION("CsmPwlFile")
#else
#pragma DATA_SECTION(CsmPwl,"CsmPwlFile");
#endif
volatile struct CSM_PWL CsmPwl;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("CsmRegsFile")
#else
#pragma DATA_SECTION(CsmRegs,"CsmRegsFile");
#endif
volatile struct CSM_REGS CsmRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("DevEmuRegsFile")
#else
#pragma DATA_SECTION(DevEmuRegs,"DevEmuRegsFile");
#endif
volatile struct DEV_EMU_REGS DevEmuRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaRegsFile")
#else
#pragma DATA_SECTION(ECanaRegs,"ECanaRegsFile");
#endif
volatile struct ECAN_REGS ECanaRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaMboxesFile")
#else
#pragma DATA_SECTION(ECanaMboxes,"ECanaMboxesFile");
#endif
volatile struct ECAN_MBOXES ECanaMboxes;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaLAMRegsFile")
#else
#pragma DATA_SECTION(ECanaLAMRegs,"ECanaLAMRegsFile");
#endif
volatile struct LAM_REGS ECanaLAMRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaMOTSRegsFile")
#else
#pragma DATA_SECTION(ECanaMOTSRegs,"ECanaMOTSRegsFile");
#endif
volatile struct MOTS_REGS ECanaMOTSRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECanaMOTORegsFile")
#else
#pragma DATA_SECTION(ECanaMOTORegs,"ECanaMOTORegsFile");
#endif
volatile struct MOTO_REGS ECanaMOTORegs;


//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("Cla1RegsFile")
#else
#pragma DATA_SECTION(Cla1Regs,"Cla1RegsFile");
#endif
volatile struct CLA_REGS Cla1Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm1RegsFile")
#else
#pragma DATA_SECTION(EPwm1Regs,"EPwm1RegsFile");
#endif
volatile struct EPWM_REGS EPwm1Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm2RegsFile")
#else
#pragma DATA_SECTION(EPwm2Regs,"EPwm2RegsFile");
#endif
volatile struct EPWM_REGS EPwm2Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm3RegsFile")
#else
#pragma DATA_SECTION(EPwm3Regs,"EPwm3RegsFile");
#endif
volatile struct EPWM_REGS EPwm3Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm4RegsFile")
#else
#pragma DATA_SECTION(EPwm4Regs,"EPwm4RegsFile");
#endif
volatile struct EPWM_REGS EPwm4Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm5RegsFile")
#else
#pragma DATA_SECTION(EPwm5Regs,"EPwm5RegsFile");
#endif
volatile struct EPWM_REGS EPwm5Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm6RegsFile")
#else
#pragma DATA_SECTION(EPwm6Regs,"EPwm6RegsFile");
#endif
volatile struct EPWM_REGS EPwm6Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EPwm7RegsFile")
#else
#pragma DATA_SECTION(EPwm7Regs,"EPwm7RegsFile");
#endif
volatile struct EPWM_REGS EPwm7Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("ECap1RegsFile")
#else
#pragma DATA_SECTION(ECap1Regs,"ECap1RegsFile");
#endif
volatile struct ECAP_REGS ECap1Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EQep1RegsFile")
#else
#pragma DATA_SECTION(EQep1Regs,"EQep1RegsFile");
#endif
volatile struct EQEP_REGS EQep1Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("LinaRegsFile")
#else
#pragma DATA_SECTION(LinaRegs,"LinaRegsFile");
#endif
volatile struct LIN_REGS LinaRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("GpioCtrlRegsFile")
#else
#pragma DATA_SECTION(GpioCtrlRegs,"GpioCtrlRegsFile");
#endif
volatile struct GPIO_CTRL_REGS GpioCtrlRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("GpioDataRegsFile")
#else
#pragma DATA_SECTION(GpioDataRegs,"GpioDataRegsFile");
#endif
volatile struct GPIO_DATA_REGS GpioDataRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("GpioIntRegsFile")
#else
#pragma DATA_SECTION(GpioIntRegs,"GpioIntRegsFile");
#endif
volatile struct GPIO_INT_REGS GpioIntRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("HRCap1RegsFile")
#else
#pragma DATA_SECTION(HRCap1Regs,"HRCap1RegsFile");
#endif
volatile struct HRCAP_REGS HRCap1Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("HRCap2RegsFile")
#else
#pragma DATA_SECTION(HRCap2Regs,"HRCap2RegsFile");
#endif
volatile struct HRCAP_REGS HRCap2Regs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("I2caRegsFile")
#else
#pragma DATA_SECTION(I2caRegs,"I2caRegsFile");
#endif
volatile struct I2C_REGS I2caRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("NmiIntruptRegsFile")
#else
#pragma DATA_SECTION(NmiIntruptRegs,"NmiIntruptRegsFile");
#endif
volatile struct NMIINTRUPT_REGS NmiIntruptRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("PartIdRegsFile")
#else
#pragma DATA_SECTION(PartIdRegs,"PartIdRegsFile");
#endif
volatile struct PARTID_REGS PartIdRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("PieCtrlRegsFile")
#else
#pragma DATA_SECTION(PieCtrlRegs,"PieCtrlRegsFile");
#endif
volatile struct PIE_CTRL_REGS PieCtrlRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("PieVectTableFile")
#else
#pragma DATA_SECTION(PieVectTable,"PieVectTableFile");
#endif
volatile struct PIE_VECT_TABLE PieVectTable;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SciaRegsFile")
#else
#pragma DATA_SECTION(SciaRegs,"SciaRegsFile");
#endif
volatile struct SCI_REGS SciaRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SpiaRegsFile")
#else
#pragma DATA_SECTION(SpiaRegs,"SpiaRegsFile");
#endif
volatile struct SPI_REGS SpiaRegs;
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SpibRegsFile")
#else
#pragma DATA_SECTION(SpibRegs,"SpibRegsFile");
#endif
volatile struct SPI_REGS SpibRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SysCtrlRegsFile")
#else
#pragma DATA_SECTION(SysCtrlRegs,"SysCtrlRegsFile");
#endif
volatile struct SYS_CTRL_REGS SysCtrlRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("SysPwrCtrlRegsFile")
#else
#pragma DATA_SECTION(SysPwrCtrlRegs,"SysPwrCtrlRegsFile");
#endif
volatile struct SYS_PWR_CTRL_REGS SysPwrCtrlRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("FlashRegsFile")
#else
#pragma DATA_SECTION(FlashRegs,"FlashRegsFile");
#endif
volatile struct FLASH_REGS FlashRegs;

//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("XIntruptRegsFile")
#else
#pragma DATA_SECTION(XIntruptRegs,"XIntruptRegsFile");
#endif
volatile struct XINTRUPT_REGS XIntruptRegs;
/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EmuKeyVar");
#else
#pragma DATA_SECTION(EmuKey,"EmuKeyVar");
#endif
Uint16 EmuKey;
*/

/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("EmuBModeVar");
#else
#pragma DATA_SECTION(EmuBMode,"EmuBModeVar");
#endif
Uint16 EmuBMode;
*/
/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("FlashScalingVar");
#else
#pragma DATA_SECTION(Flash_CPUScaleFactor, "FlashScalingVar");
#endif
Uint32 Flash_CPUScaleFactor;
*/
/*
//----------------------------------------
#ifdef __cplusplus
#pragma DATA_SECTION("FlashCallbackVar");
#else
#pragma DATA_SECTION(Flash_CallbackPtr, "FlashCallbackVar");
#endif
void (*Flash_CallbackPtr) (void);
*/

//===========================================================================
// End of file.
//===========================================================================

回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
9#
 楼主| 发表于 2017-7-3 18:39:09 | 只看该作者
/***************************************************************************
**         Copyright (c) 2016-2026,重庆市力华科技有限责任公司
**                                版权所有
****************************************************************************
**  文 件 名:  CntrISR.cpp
**  摘    要: 中断函数
**  其    他:
****************************************************************************
**  当前版本:   Ver 0.1
**  作    者:   汪易强
**  完成时间:   2016年3月30日
***************************************************************************/
#include "Publics.h"
#include "..\Abstraction\Abstration.h"
#include "Alg_ChargeCtrl.h"

/******************************************************************
** 函 数 名:void EPWM4_PERIOD_INT_ISR(void)
** 函数功能:定时器中断50K(20us)
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
#pragma CODE_SECTION(".ramfuncs")
interrupt         void EPWM4_PERIOD_INT_ISR(void)
{
//        objGPIODrv.Drv_GPIOSetConf(INPUTRELAY,LOW);

           // Clear INT flag for this timer
           EPwm4Regs.ETCLR.bit.INT = 1;
           // Acknowledge this interrupt to receive more interrupts from group 3
           PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

           objAnalog.App_INT2_CalibrateData();

           objCharger.App_ChgSoftPWMDeal();

           if((objAuxPower.m_st_FlagAuxP.bVAuxLowFault != 1)
                &&(objCharger.m_i16_ChargerOnOffCmd == 1)
                &&(objCharger.m_st_FlagCharger.bChgOverCurFault != 1)
                &&(objCharger.m_st_FlagCharger1.bChgVoltLimitOffFlag != 1))                                //母线高压或电池高压封波
           {
                        if(objCharger.m_st_FlagCharger.bCharger == 3)
                        {
                                objChgAlg.Alg_Int_ChargerControlRegPall(objCharger.m_st_FlagCharger1.bChgAlgMode,objAnalog.m_i16_VChg_1,objAnalog.m_i16_IChg_1,0,objChgAlg.PIDParameter);
                        }
                        else
                        {
                                objChgAlg.Alg_Int_ChargerControlSoftST(PWM1_TIMER_SOFTBPRD);
                        }
                        objChgAlg.Alg_Int_ChargerSPWM(PWM1,objChgAlg.m_i16_VChgPWMOutP_0,objCharger.m_i16_ChgPwm_P_Down_RunM,objCharger.m_i16_ChgPwm_P_Up_RunM,objChgAlg.m_i16_EdgeDelay);
                }
                else
                {
                        objChgAlg.Alg_ChgForceLow(PWM1);
                        objChgAlg.Alg_ChgOffReset();
                        objCharger.App_ChargerOffReset();
                }
           //
//           objGPIODrv.Drv_GPIOSetConf(INPUTRELAY,HIGH);
}

/******************************************************************
** 函 数 名:void SECONDARY_ISR(void)
** 函数功能:定时器中断10K(100us)
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
#pragma CODE_SECTION(".ramfuncs")
interrupt void SECONDARY_ISR(void)
{
        EALLOW;
//static UINT16 Cnt=0;
        //CpuTimer2Regs.TIM.all;
//        objGPIODrv.Drv_GPIOSetConf(DebugIO,LOW);
        CpuTimer2.InterruptCount++;
        if(CpuTimer2.InterruptCount >= PrmsPointCntCnst)
        {
                CpuTimer2.InterruptCount = 0;
        }

        objTimerAbs.Abs_Int_ClockMaintain();
       
        objAnalog.App_INT1_CalibrateData();        //ADC数据采样处理
       
        objAnalog.App_INT1_AnalogDataDeal();//模拟量处理
       


   if((objCharger.m_i16_ChargerOnOffCmd == 1)
           &&(objCharger.m_st_FlagCharger.bCharger == 3))//关机降电压期间不进行限流限功率
   {

                objChgAlg.Alg_ChargerVIRef(objCharger.m_i16_VChgrefRunM_0,objCharger.m_i16_IChgrefRunM_0);
                if(objCharger.m_st_FlagCharger1.bChgAlgMode == 0)//充电模式
                {

                        objChgAlg.Alg_ChargerControlLimitVol(objCharger.m_i16_VChgrefRunM_0,objAnalog.m_i16_VChg_1);

                }
                else if(objCharger.m_st_FlagCharger1.bChgAlgMode == 1)//加热模式
                {
                        objChgAlg.Alg_ChargerControlAvgCur(objCharger.m_i16_IChgrefRunM_0,objAnalog.m_i16_IChg_1,0);

                }
                objChgAlg.Alg_ChgCurChk(objAnalog.m_i16_IChg_1,0);
   }
   else
   {
           objChgAlg.Alg_ChgCurChkReset();
   }
   
   //objCharger.App_ChgSoftPWMDeal();
   //objCharger.App_INT_ChgOverCurFault();//过流快检

        //objUtility.App_INT_UtilityFastChk();//市电快检
        objUtility.App_INT_VinFastChk();//输入电压掉电快检
        //objCharger.App_INT_ChgVHighFastChk();//输出过压快检

           //objAuxPower.App_INT_AuxFastChk();//辅源掉电快检测
                  
   if(CpuTimer2.InterruptCount % 5 == 0)//0.5ms
   {
           objSCIDrv.Drv_SciRx();
   }


   // The CPU acknowledges the interrupt.
   EDIS;
//   objGPIODrv.Drv_GPIOSetConf(DebugIO,HIGH);
}
/******************************************************************
** 函 数 名:void epwm2_tzint_isr(void)
** 函数功能:配置PWM TZ中断
** 函数属性:应用层
** 函数参数:无
** 函数返回:无
******************************************************************/
interrupt        void epwm2_tzint_isr(void)
{
   //static Uint32 EPwm2TZIntCount;
   
           //EPwm2TZIntCount++;
        //objCharger.App_ChgLimitCProtect();
       

// Clear the flags - we will continue to take
// this interrupt until the TZ pin goes high
//
   EALLOW;
   EPwm1Regs.TZCLR.bit.CBC = 1;
   EPwm1Regs.TZCLR.bit.INT = 1;
   EDIS;

   // Acknowledge this interrupt to receive more interrupts from group 2
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
}


回复 支持 反对

使用道具 举报

5

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1275
威望
648
贡献
355
兑换币
426
注册时间
2014-1-17
在线时间
136 小时
毕业学校
重庆机电职业技术学院
10#
 楼主| 发表于 2017-7-3 18:39:12 | 只看该作者
本帖最后由 15282600864 于 2017-7-3 19:21 编辑

#ifndef DRIVER_DRV_I2C_H_
#define DRIVER_DRV_I2C_H_

//============================================================
#include "DSP2803x_Device.h"
#include "DataType.h"
//============================================================

/***********************************************************
I2c and Eprom CONST
************************************************************/
//I2c
// Clear Status Flags
#define I2C_CLR_AL_BIT          0x0001
#define I2C_CLR_NACK_BIT        0x0002
#define I2C_CLR_ARDY_BIT        0x0004
#define I2C_CLR_RRDY_BIT        0x0008
#define I2C_CLR_SCD_BIT         0x0020
// I2C  Message Commands for I2CMSG struct
#define I2C_MSGSTAT_INACTIVE          0x0000
#define I2C_MSGSTAT_SEND_WITHSTOP     0x0010
#define I2C_MSGSTAT_WRITE_BUSY        0x0011
#define I2C_MSGSTAT_SEND_NOSTOP       0x0020
#define I2C_MSGSTAT_SEND_NOSTOP_BUSY  0x0021
#define I2C_MSGSTAT_RESTART           0x0022
#define I2C_MSGSTAT_READ_BUSY         0x0023
#define    MAXSIZE     1
#define      IDLE              0
#define   WRITE     1
#define   READ     2
#define   NODEVICE    0
#define   EEPROMADDR           0x50
#define   RTCADDR              0x51
#define   E2PROMWRITE    1
#define   E2PROMREAD     2
#define   RTCWRITE    3
#define   RTCREAD     4
#define   TASKIDLE    0
#define   TASKBUSY    1
#define   TASKSUCCESS    2
#define   TASKFAIL    3
#define   I2CIDLE     0
#define   I2CBUSY     1
#define   I2CSUCCESS    2
#define   I2CFAIL     3
#define   LOCKED     1
#define   UNLOCKED    0

struct structI2cData    //I2c状态标志
{
INT16 SlaveAddr;  // 从机地址
INT16 RwSelect;  //
INT16 DataNum;  // 数据长度
INT16 AddrNum;  // 地址长度
INT16 DataHaddr;
INT16 DataLaddr;
INT16 *ptrCusBuff;
};
//============================================================
// Class_I2CDrv与外部的接口
// 1)调用
// 2)
//============================================================
class Class_I2CDrv
{
private:
  struct  structI2cData m_st_FlagI2cDataState;   //I2c状态标志
  INT16 m_i16_DataWriteStatus;                 //I2c写状态
  INT16 m_i16_DataReadStatus;                  //i2c读状态
  INT16  m_i16_I2cReturnStatus;                 //I2c反馈状态
  INT16  m_i16_TaskName;  
  
public:
  INT16   m_i16_TaskStatus;

private:
  void  Drv_TaskInitial(structI2cData * I2cDataProcess);
        INT16 Drv_iI2cWrite(structI2cData *I2cDataWrite);
        INT16  Drv_iI2cRead(structI2cData *I2cDataRead);
        
public:
  void  Drv_I2CInit(void);    //I2c初始化
  INT16   Drv_iI2cDriver(void);
  void Drv_I2cTaskSet(INT16 iDevice,INT16 iRorw,INT16 iHWAddr,INT16 iLen,INT16 * ptrBuff);
  void  Drv_I2cTaskEnd(void);
};
#endif

回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-28 14:31 , Processed in 0.058103 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表