⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sam7_flash_ram.ini

📁 很好的资料
💻 INI
字号:
// ---------------------------------------------------------
//   ATMEL Microcontroller Software Support  -  ROUSSET  -
// ---------------------------------------------------------
// The software is delivered "AS IS" without warranty or 
// condition of any  kind, either express, implied or 
// statutory. This includes without limitation any warranty 
// or condition with respect to merchantability or fitness 
// for any particular purpose, or against the infringements of
// intellectual property rights of others.
// ---------------------------------------------------------
//  File: SAM7_ADS_RAM.ini
//  User setup file for KEIL  debugger to simulate interrupt
//  1.0 08/Oct/04 JPP    : Creation
//  1.1 15/Mar/05 JPP    : Change AIC & Flash wait state
// ---------------------------------------------------------
//-----------------------------------------------------------------------------
// Remap
//---------
FUNC void  CheckRemap(void) {
 int i,pt;
    i=_RDWORD(0x00000000);		 //* Read the value at 0x0
    i=i+1;
    _WDWORD(0x00,i);
    pt=_RDWORD(0x00000000);    
    if (i == pt) { 
      printf( "------------------------------- The Remap is done ----------------------------------------\n");   
    } else {  
      printf( "------------------------------- The Remap is NOT -----------------------------------------\n");
      _WDWORD(0xFFFFFF00,0x00000001);//*   Toggel RESET The remap
    }
 }

//-----------------------------------------------------------------------------
// Watchdog
//-------------
// Normally, the Watchdog is enable at the reset for load it's preferable to
// Disable.
//-----------------------------------------------------------------------------
FUNC void  Watchdog(void) {
//* Watchdog Disable
   _WDWORD(0xFFFFFD44,0x00008000); //      AT91C_BASE_WDTC->WDTC_WDMR= AT91C_SYSC_WDDIS;
   printf( "------------------------------- Watchdog Disable ----------------------------------------\n");
}

//-----------------------------------------------------------------------------
// PllSetting
//-------------------------------
FUNC void  PllSetting(void) {
// -1- Enabling the Main Oscillator:
//*#define AT91C_PMC_MOR   ((AT91_REG *) 	0xFFFFFC20) // (PMC) Main Oscillator Register
//*#define AT91C_PMC_PLLR  ((AT91_REG *) 	0xFFFFFC2C) // (PMC) PLL Register
//*#define AT91C_PMC_MCKR  ((AT91_REG *) 	0xFFFFFC30) // (PMC) Master Clock Register

//*pPMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x06 <<8) |    //0x0000 0600
//                          AT91C_CKGR_MOSCEN ));          //0x0000 0001 
_WDWORD(0xFFFFFC20,0x00000601);

// -3- Setting PLL and divider:
// -  div by 14 Fin = 1.3165 =(18,432 / 14)
// - Mul 72+1: Fout =	96.1097 =(3,6864 *73)
// for 96 MHz the erroe is 0.11% Field out NOT USED = 0
// PLLCOUNT pll startup time esrtimate at : 0.844 ms
// PLLCOUNT 28 = 0.000844 /(1/32768)
//       pPMC->PMC_PLLR = ((AT91C_CKGR_DIV & 0x0E) |       //0x0000 000E
//                         (AT91C_CKGR_PLLCOUNT & (28<<8)) //0x0000 1C00
//                         (AT91C_CKGR_MUL & (72<<16)));   //0x0048 0000 
  _WDWORD(0xFFFFFC2C,0x00481C0E);
// -5- Selection of Master Clock and Processor Clock
// select the PLL clock divided by 2
//	    pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK |     //0x0000 0003
//                           AT91C_PMC_PRES_CLK_2 ;      //0x0000 0004
_WDWORD(0xFFFFFC30,0x00000007);        
//* #define AT91C_MC_FMR    ((AT91_REG *) 	0xFFFFFF60) // (MC) MC Flash Mode Register
    _WDWORD(0xFFFFFF60,0x00480100);        

   printf( "------------------------------- PLL  Enable ----------------------------------------\n");   
}
//-----------------------------------------------------------------------------
// Reset the Interrupt Controller
//-------------------------------
FUNC void  AIC(void) {
 int i,pt;
    _WDWORD(0xFFFFF124,0xFFFFFFFF); // Mask All interrupt pAic->AIC_IDCR = 0xFFFFFFFF;
    _WDWORD(0xFFFFF128,0xFFFFFFFF); // Mask All interrupt pAic->AIC_IDCR = 0xFFFFFFFF;
// Acknownledge timer interrupt
    _RDWORD(0xFFFA0020);  // #define AT91C_TC0_SR    ((AT91_REG *) 	0xFFFA0020) // (TC0) Status Register
    _RDWORD(0xFFFA0060);  // #define AT91C_TC1_SR    ((AT91_REG *) 	0xFFFA0060) // (TC1) Status Register
    _RDWORD(0xFFFA00A0);  // #define AT91C_TC2_SR    ((AT91_REG *) 	0xFFFA00A0) // (TC2) Status Register

// disable peripheral clock  Peripheral Clock Disable Register
    _WDWORD( 0xFFFFFC14,0xFFFFFFFF);

    for (i=0;i < 8; i++)
    {      
      pt =  _RDWORD(0xFFFFF130);	// AT91C_BASE_AIC->AIC_EOICR    
    }
   printf( "------------------------------- AIC 2 INIT ---------------------------------------------\n");
}

FUNC void Setup (void) {
 int i;
//* Init AIC
    AIC();
     PllSetting();
//*  Set the RAM memory at 0x0020 0000 for code AT 0 flash area 
     CheckRemap();
//*  Get the Chip ID (AT91C_DBGU_C1R & AT91C_DBGU_C2R
    i= _RDWORD(0xFFFFF240);
    printf( " ---------------------------------------- Chip ID   0x%08X\n",i);
    i=_RDWORD(0xFFFFF244);
    printf( " ---------------------------------------- Extention 0x%08X\n",i);
    i=_RDWORD(0xFFFFFF6C);
    printf( " ------------------------------------ Flash Version 0x%08X\n",i);  
//*  Watchdog Disable
    Watchdog();
}

Setup(); // Setup for Flash Tools


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -