MSR CPSR_c, #(NoInt | IRQ32Mode) ; Switch bak to IRQ mode 切換回irq模式
LDMFD SP, {R3,LR}^ ; 恢復SPSR和用戶狀態的SP,注意不能回寫
; 如果回寫的是用戶的SP,所以后面要調整SP
MSR SPSR_cxsf, R3
ADD SP, SP, #4*2
LDMFD SP!, {R0-R3, R12, PC}^
MEND
;/* 以下可添加中斷句柄,根據實際情況改變 */
;Timer0_Handler HANDLER Timer0
END
3.Target.C
#define IN_TARGET
#include 'config.h'
void __irq IRQ_Exception(void)
{
while(1); // 這一句替換為自己的代碼
}
void FIQ_Exception(void)
{
while(1); // 這一句替換為自己的代碼
}
void TargetInit(void)
{
/* 添加自己的代碼 */
}
void TargetResetInit(void)
{
#ifdef __DEBUG_RAM //如果在片內RAM調試
MEMMAP = 0x2; //映射到片內RAM
#endif
#ifdef __DEBUG_FLASH //如果在片內Flash調試
MEMMAP = 0x1; //映射到片內FLASH
#endif
#ifdef __IN_CHIP //如果在片內Flash發布(將會被加密)
MEMMAP = 0x1; //映射到片內FLASH
#endif
/* 設置系統各部分時鐘 */
PLLCON = 1; //設置激活但未連接PLL
#if (Fpclk / (Fcclk / 4)) == 1
VPBDIV = 0;
#endif
#if (Fpclk / (Fcclk / 4)) == 2
VPBDIV = 2;
#endif
#if (Fpclk / (Fcclk / 4)) == 4
VPBDIV = 1;
#endif
//設定PLL的乘因子M和除因子P的值
#if (Fcco / Fcclk) == 2
PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
#endif
#if (Fcco / Fcclk) == 4
PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
#endif
#if (Fcco / Fcclk) == 8
PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
#endif
#if (Fcco / Fcclk) == 16
PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
#endif
PLLFEED = 0xaa; //發送PLL饋送序列,執行設定PLL的動作
PLLFEED = 0x55;
while((PLLSTAT & (1 << 10)) == 0); //等待PLL鎖定
PLLCON = 3; //設置激活并連接PLL
PLLFEED = 0xaa; //發送PLL饋送序列,執行激活和鏈接動作
PLLFEED = 0x55;
/* 設置存儲器加速模塊 */
MAMCR = 0; //禁止MAM功能
#if Fcclk < 20000000 //根據Fcclk的大小來設置MAM定時寄存器
MAMTIM = 1;
#else
#if Fcclk < 40000000
MAMTIM = 2;
#else
MAMTIM = 3;
#endif
#endif
MAMCR = 2; //使能MAM
/* 初始化VIC */
VICIntEnClr = 0xffffffff; //清零所有中斷
VICVectAddr = 0;
VICIntSelect = 0;
/* 添加其他的代碼 */
}
/***************************************************************************************
** 以下為一些與系統相關的庫函數的實現
***************************************************************************************/
#include #include #pragma import(__use_no_semihosting_swi) int __rt_div0(int a) { a = a; return 0; } int fputc(int ch,FILE *f) { ch = ch; f = f; return 0; } int fgetc(FILE *f) { f = f; return 0; } int _sys_close(FILEHANDLE fh) { fh = fh; return 0; } int _sys_write(FILEHANDLE fh, const unsigned char * buf, unsigned len, int mode) { fh = fh; buf = buf; len =len; mode = mode; return 0; } int _sys_read(FILEHANDLE fh, unsigned char * buf, unsigned len, int mode) { fh = fh; buf = buf; len =len; mode = mode; return 0; } void _ttywrch(int ch) { ch = ch; } int _sys_istty(FILEHANDLE fh) { fh = fh; return 0; } int _sys_seek(FILEHANDLE fh, long pos) { fh = fh; return 0; } int _sys_ensure(FILEHANDLE fh) { fh = fh; return 0; } long _sys_flen(FILEHANDLE fh) { fh = fh; return 0; } int _sys_tmpnam(char * name, int sig, unsigned maxlen) { name = name; sig = sig; maxlen = maxlen; return 0; } void _sys_exit(int returncode) { returncode = returncode; } char *_sys_command_string(char * cmd, int len) { cmd = cmd; len = len; return 0; } 4.config.h #ifndef __CONFIG_H #define __CONFIG_H #ifndef TRUE #define TRUE 1 #endif #ifndef FALSE #define FALSE 0 #endif typedef unsigned char uint8; /* 無符號8位整型變量 */ typedef signed char int8; /* 有符號8位整型變量 */ typedef unsigned short uint16; /* 無符號16位整型變量 */ typedef signed short int16; /* 有符號16位整型變量 */ typedef unsigned int uint32; /* 無符號32位整型變量 */ typedef signed int int32; /* 有符號32位整型變量 */ typedef float fp32; /* 單精度浮點數(32位長度) */ typedef double fp64; /* 雙精度浮點數(64位長度) */ #include 'LPC2294.h' /* 系統設置, Fosc、Fcclk、Fcco、Fpclk必須定義*/ #define Fosc 11059200 //應當與實際一至晶振頻率,10MHz~25MHz,應當與實際一至 #define Fcclk (Fosc * 4) //系統頻率,必須為Fosc的整數倍(1~32),且<=60MHZ
上一篇:Windows CE6.0中斷實驗過程
下一篇:arm linux 移植 mtd-utils 1.x
- 熱門資源推薦
- 熱門放大器推薦
設計資源 培訓 開發板 精華推薦
- STM32L053C8 MCU探索套件
- 帶有看門狗定時器的 CAT824MTDI-GT3 4.38V 系統監控電壓監視器的典型應用
- ADR444A 4.096 Vout 超低噪聲、LDO XFET 電壓基準的典型應用,具有電流吸收器和電流源
- AM1G-1215DH30Z ±15V 1 瓦 DC/DC 轉換器的典型應用
- VN7008AJ評估板
- L7885C 帶溫度補償的可調輸出電壓的典型應用
- 使用 Analog Devices 的 LTC1596BISW 的參考設計
- LTC3634MPFE 降壓型穩壓器的設計示例電路
- DER-832 - 基于LinkSwitch-TN2和Nordic BLE微控制器的兩線制(無中性線)、寬范圍、隔離式反激式藍牙墻壁開關
- 采用 EM3588 的 ZigBee Wi-Fi 以太網網關參考設計
- 南芯科技推出高集成度多口移動電源解決方案,助力充電寶市場穩健發展
- 英飛凌推出具有超低導通電阻的CoolSiC? MOSFET 750 V G2,適用于汽車和工業功率電子應用
- DigiKey 慶祝 B 站賬號粉絲突破 10 萬,贈送驚喜禮包
- 碳化硅企業 Wolfspeed 啟動破產重組,預計 2025 年三季度末完成司法重整
- 蘋果被曝考慮放棄自研模型 轉而與Anthropic或OpenAI合作
- ?百度文心4.5來襲!英特爾Day0即支持端側部署
- 【廣瀨電機】關于中國發明專利侵權訴訟達成和解的公告
- 英飛凌BMS解決方案推動電動汽車創新
- 地平線的L3判斷與實踐路徑
- 汽車網絡升級攻略:CAN-CAN FD-車載以太網