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

📄 sam7_ram.mac

📁 ATMEL ARM7的一款芯片应用实例,可以在IAR上面运行
💻 MAC
字号:
//  File: SAM7_RAM.mac
//
// ---------------------------------------------------------

__var i;
__var pt;

execUserPreload() {
     PllSetting();
//*  为Flash 0地址区的代码设置 RAM 存储器地址0x00200000
     CheckNoRemap();
//*  获得芯片 ID
    i=__readMemory32(0xFFFFF240,"Memory");
    __message " ---------------------------------------- Chip ID   0x",i:%X;
    i=__readMemory32(0xFFFFF244,"Memory");
    __message " ---------------------------------------- Extention 0x",i:%X;
    i=__readMemory32(0xFFFFFF6C,"Memory");
    __message " ---------------------------------------- Flash Version 0x",i:%X;
//* 获得芯片状态

//* 初始化 AIC
   AIC();
//* 禁止看门狗
   Watchdog();
}

//-----------------------------------------------------------------------------
// 设置锁相环PLL
//-----------------------------------------------------------------------------
PllSetting() {
    __writeMemory32(0x00000601,0xFFFFFC20,"Memory");
    __writeMemory32(0x00191C05,0xFFFFFC2C,"Memory");
    __writeMemory32(0x00000007,0xFFFFFC30,"Memory");
     __message "------------------------------- PLL  Enable ----------------------------------------";
}

//-----------------------------------------------------------------------------
// 通常复位时看门狗是允许的,但最好禁止。
//-----------------------------------------------------------------------------
Watchdog() {
   __writeMemory32(0x00008000,0xFFFFFD44,"Memory");
   __message "------------------------------- Watchdog Disable ----------------------------------------";
}

CheckNoRemap() {
    i=__readMemory32(0x00000000,"Memory");
    i=i+1;
    __writeMemory32(i,0x00,"Memory");
    pt=__readMemory32(0x00000000,"Memory");
 if (i == pt) {
   __message "------------------------------- The Remap is done ----------------------------------------";
 } else {
   __message "------------------------------- The Remap is NOT -----------------------------------------";
    __writeMemory32(0x00000001,0xFFFFFF00,"Memory");
 }
}

execUserSetup() {
     ini();
     __message "-------------------------------Set PC ----------------------------------------";
     __writeMemory32(0x00000000,0xB4,"Register");
}

//-----------------------------------------------------------------------------
// 复位中断控制器
//-----------------------------------------------------------------------------
AIC() {
    __writeMemory32(0xFFFFFFFF,0xFFFFF124,"Memory");
    for (i=0;i < 8; i++) {
      pt =  __readMemory32(0xFFFFF130,"Memory");
    }
   __message "------------------------------- AIC INIT ---------------------------------------------";
}

ini() {
    __writeMemory32(0x0,0x00,"Register");
    __writeMemory32(0x0,0x04,"Register");
    __writeMemory32(0x0,0x08,"Register");
    __writeMemory32(0x0,0x0C,"Register");
    __writeMemory32(0x0,0x10,"Register");
    __writeMemory32(0x0,0x14,"Register");
    __writeMemory32(0x0,0x18,"Register");
    __writeMemory32(0x0,0x1C,"Register");
    __writeMemory32(0x0,0x20,"Register");
    __writeMemory32(0x0,0x24,"Register");
    __writeMemory32(0x0,0x28,"Register");
    __writeMemory32(0x0,0x2C,"Register");
    __writeMemory32(0x0,0x30,"Register");
    __writeMemory32(0x0,0x34,"Register");
    __writeMemory32(0x0,0x38,"Register");

// 设置 CPSR
    __writeMemory32(0x0D3,0x98,"Register");
}

RG() {
    i=__readMemory32(0x00,"Register");   __message "R00 0x",i:%X;
    i=__readMemory32(0x04,"Register");   __message "R01 0x",i:%X;
    i=__readMemory32(0x08,"Register");   __message "R02 0x",i:%X;
    i=__readMemory32(0x0C,"Register");   __message "R03 0x",i:%X;
    i=__readMemory32(0x10,"Register");   __message "R04 0x",i:%X;
    i=__readMemory32(0x14,"Register");   __message "R05 0x",i:%X;
    i=__readMemory32(0x18,"Register");   __message "R06 0x",i:%X;
    i=__readMemory32(0x1C,"Register");   __message "R07 0x",i:%X;
    i=__readMemory32(0x20,"Register");   __message "R08 0x",i:%X;
    i=__readMemory32(0x24,"Register");   __message "R09 0x",i:%X;
    i=__readMemory32(0x28,"Register");   __message "R10 0x",i:%X;
    i=__readMemory32(0x2C,"Register");   __message "R11 0x",i:%X;
    i=__readMemory32(0x30,"Register");   __message "R12 0x",i:%X;
    i=__readMemory32(0x34,"Register");   __message "R13 0x",i:%X;
    i=__readMemory32(0x38,"Register");   __message "R14 0x",i:%X;
    i=__readMemory32(0x3C,"Register");   __message "R13 SVC 0x",i:%X;
    i=__readMemory32(0x40,"Register");   __message "R14 SVC 0x",i:%X;
    i=__readMemory32(0x44,"Register");   __message "R13 ABT 0x",i:%X;
    i=__readMemory32(0x48,"Register");   __message "R14 ABT 0x",i:%X;
    i=__readMemory32(0x4C,"Register");   __message "R13 UND 0x",i:%X;
    i=__readMemory32(0x50,"Register");   __message "R14 UND 0x",i:%X;
    i=__readMemory32(0x54,"Register");   __message "R13 IRQ 0x",i:%X;
    i=__readMemory32(0x58,"Register");   __message "R14 IRQ 0x",i:%X;
    i=__readMemory32(0x5C,"Register");   __message "R08 FIQ 0x",i:%X;
    i=__readMemory32(0x60,"Register");   __message "R09 FIQ 0x",i:%X;
    i=__readMemory32(0x64,"Register");   __message "R10 FIQ 0x",i:%X;
    i=__readMemory32(0x68,"Register");   __message "R11 FIQ 0x",i:%X;
    i=__readMemory32(0x6C,"Register");   __message "R12 FIQ 0x",i:%X;
    i=__readMemory32(0x70,"Register");   __message "R13 FIQ 0x",i:%X;
    i=__readMemory32(0x74,"Register");   __message "R14 FIQ0x",i:%X;
    i=__readMemory32(0x98,"Register");   __message "CPSR     ",i:%X;
    i=__readMemory32(0x94,"Register");   __message "SPSR     ",i:%X;
    i=__readMemory32(0x9C,"Register");   __message "SPSR ABT ",i:%X;
    i=__readMemory32(0xA0,"Register");   __message "SPSR ABT ",i:%X;
    i=__readMemory32(0xA4,"Register");   __message "SPSR UND ",i:%X;
    i=__readMemory32(0xA8,"Register");   __message "SPSR IRQ ",i:%X;
    i=__readMemory32(0xAC,"Register");   __message "SPSR FIQ ",i:%X;
    i=__readMemory32(0xB4,"Register");   __message "PC 0x",i:%X;
}

⌨️ 快捷键说明

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