1 FUNC void Setup (void) { 2 // Reset peripherals: LCD, USB0, USB1, DMA, SDIO, ETHERNET 3 _WDWORD(0x40053100, 0x005F0000); // Issue reset 4 _sleep_(1); 5 // Setup pins for external data/address bus 6 _WDWORD(0x4008609C, 0x00000073); // D0, SFSP1_7 将P1_7设为EMC_D0功能 7 _WDWORD(0x400860A0, 0x00000073); // D1, SFSP1_8 8 _WDWORD(0x400860A4, 0x00000073); // D2, SFSP1_9 9 _WDWORD(0x400860A8, 0x00000073); // D3, SFSP1_10 10 _WDWORD(0x400860AC, 0x00000073); // D4, SFSP1_11 11 _WDWORD(0x400860B0, 0x00000073); // D5, SFSP1_12 12 _WDWORD(0x400860B4, 0x00000073); // D6, SFSP1_13 13 _WDWORD(0x400860B8, 0x00000073); // D7, SFSP1_14 14 _WDWORD(0x40086290, 0x00000072); // D8, SFSP5_4 15 _WDWORD(0x40086294, 0x00000072); // D9, SFSP5_5 16 _WDWORD(0x40086298, 0x00000072); // D10, SFSP5_6 17 _WDWORD(0x4008629C, 0x00000072); // D11, SFSP5_7 18 _WDWORD(0x40086280, 0x00000072); // D12, SFSP5_0 19 _WDWORD(0x40086284, 0x00000072); // D13, SFSP5_1 20 _WDWORD(0x40086288, 0x00000072); // D14, SFSP5_2 21 _WDWORD(0x4008628C, 0x00000072); // D15, SFSP5_3 22 _WDWORD(0x40086688, 0x00000072); // D16, SFSPD_2 23 _WDWORD(0x4008668C, 0x00000072); // D17, SFSPD_3 24 _WDWORD(0x40086690, 0x00000072); // D18, SFSPD_4 25 _WDWORD(0x40086694, 0x00000072); // D19, SFSPD_5 26 _WDWORD(0x40086698, 0x00000072); // D20, SFSPD_6 27 _WDWORD(0x4008669C, 0x00000072); // D21, SFSPD_7 28 _WDWORD(0x400866A0, 0x00000072); // D22, SFSPD_8 29 _WDWORD(0x400866A4, 0x00000072); // D23, SFSPD_9 30 _WDWORD(0x40086714, 0x00000073); // D24, SFSPE_5 31 _WDWORD(0x40086718, 0x00000073); // D25, SFSPE_6 32 _WDWORD(0x4008671C, 0x00000073); // D26, SFSPE_7 33 _WDWORD(0x40086720, 0x00000073); // D27, SFSPE_8 34 _WDWORD(0x40086724, 0x00000073); // D28, SFSPE_9 35 _WDWORD(0x40086728, 0x00000073); // D29, SFSPE_10 36 _WDWORD(0x4008672C, 0x00000073); // D30, SFSPE_11 37 _WDWORD(0x40086730, 0x00000073); // D31, SFSPE_12 38 _WDWORD(0x4008612C, 0x00000073); // A2, SFSP2_11 39 _WDWORD(0x40086130, 0x00000073); // A3, SFSP2_12 40 _WDWORD(0x40086134, 0x00000073); // A4, SFSP2_13 41 _WDWORD(0x40086080, 0x00000072); // A5, SFSP1_0 42 _WDWORD(0x40086084, 0x00000072); // A6, SFSP1_1 43 _WDWORD(0x40086088, 0x00000072); // A7, SFSP1_2 44 _WDWORD(0x40086120, 0x00000073); // A8, SFSP2_8 45 _WDWORD(0x4008611C, 0x00000073); // A9, SFSP2_7 46 _WDWORD(0x40086118, 0x00000072); // A10, SFSP2_6 47 _WDWORD(0x40086108, 0x00000072); // A11, SFSP2_2 48 _WDWORD(0x40086104, 0x00000072); // A12, SFSP2_1 49 _WDWORD(0x40086100, 0x00000072); // A13, SFSP2_0 50 _WDWORD(0x40086320, 0x00000071); // A14, SFSP6_8 51 _WDWORD(0x4008631C, 0x00000071); // A15, SFSP6_7 52 _WDWORD(0x400866C0, 0x00000072); // A16, SFSPD_16 53 _WDWORD(0x400866BC, 0x00000072); // A17, SFSPD_15 54 _WDWORD(0x40086700, 0x00000073); // A18, SFSPE_0 55 _WDWORD(0x40086704, 0x00000073); // A19, SFSPE_1 56 _WDWORD(0x40086708, 0x00000073); // A20, SFSPE_2 57 _WDWORD(0x4008670C, 0x00000073); // A21, SFSPE_3 58 _WDWORD(0x40086710, 0x00000073); // A22, SFSPE_4 59 _WDWORD(0x40086510, 0x00000073); // A23, SFSPA_4 60 _WDWORD(0x4008608C, 0x00000073); // OE, SFSP1_3 61 _WDWORD(0x40086094, 0x00000073); // CS0, SFSP1_5 62 _WDWORD(0x40086098, 0x00000073); // WE, SFSP1_6 63 // enable CS0 and setup the timing 64 // 90ns 32-bit Flash on CS0 65 _WDWORD(0x40005000, 0x00000001); // Enable 66 _WDWORD(0x40005200, 0x00000082); // CS0: 32 bit, WE 67 _WDWORD(0x40005208, 0x00000002); // CS0: WAITOEN = 2 68 _WDWORD(0x4000520C, 0x0000000C); // CS0: WAITRD = 12 69 SP = _RDWORD(0x1C000000); // 设置堆栈指针 70 PC = _RDWORD(0x1C000004); // 安装程序计数器 71 XPSR = 0x01000000; // 设置Thumb位 72 _WDWORD(0xE000ED08, 0x1C000000); // 设置向量表偏移寄存器 73 } 74 Setup(); // 运行Setup里面的设置 75 DEFINE BUTTON "Debug Setup", "Setup()"