<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 從Flash和SRAM中觸發(fā)中斷的過(guò)程示例

從Flash和SRAM中觸發(fā)中斷的過(guò)程示例

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

/*************************************************************

MAIN

***********************************************************/

int main()

{

/*建立系統*/

Initialize();

/*啟動(dòng)定時(shí)器*/

T1_TCR=0x1;

while(1)

{

}

}

/*******************************************************************

初始化

*******************************************************************/

void Initialize()

{

/*初始化PLL(使用10MHz晶振配置),使CPU時(shí)鐘達到60MHz*/

/*設置驅動(dòng)和應用*/

PLLCFG=0x25;

Feed();

/*開(kāi)PLL*/

PLLCON=0x1;

Feed();

/*等待PLL設置頻率并鎖定*/

while(!PLLSTAT PLOCK)){}

/*連接PLL作為時(shí)鐘源*/

PLLCON=0x3;

Feed();

開(kāi)啟MAM,設置時(shí)鐘數來(lái)取得FLASH MEMORY。

MAMCR=0x2;

MAMTIM=0x4;

設置設備的時(shí)鐘(pclk)到系統時(shí)鐘(cclk)

VPBDIV=0X1;

初始化GPIO

IODIR = 0Xffff;

IOSET = 0Xffff;

初始化TIMER1

T1_TCR = 0x0;

T1_TC = 0x0;

T1_PR = 0x0;

T1_PC = 0x0;

后面的用戶(hù)來(lái)填充相關(guān)的值

T1_MR0 = 0x……;

復位,進(jìn)入相關(guān)的中斷

T1_MCR = 0x3;

初始化VIC

VICINTSEL = 0x0; /*TIMER1選擇為IRQ*/

VICINTEN = 0x20; //TIMER1 中斷允許

VICCNTL0 = 0x25;

ISR 的地址

VICVADDR0 = (unsigned long)IRQHandler;

}

/********************************************************************

TIMER1 ISR

******************************************************************/

_irq void IRQHandler()

{

/*這里是中斷服務(wù)子程序。這個(gè)中斷需要在TIMER1中清除,然后寫(xiě)入一個(gè)合適的值到VIC向量地址寄存器來(lái)更新VIC硬件優(yōu)先級。*/

T1_IR = 0x1;

VICVADDR = 0Xff;

}

/**************************************************************

PLL的反饋頻率

*************************************************************/

void feed()

{

PLLFEED = 0Xaa;

PLLFEED = 0x55;

}

中運行上述代碼所需要進(jìn)行的改變和增加

鏈接需要按照如下方法配置:中斷向量表(ivt.s)需要鏈接到的底部(0x40000000)。確定相關(guān)的中斷向量位于0x40000000-0x4000003F。其他的文件鏈接到代碼內部,可以存放在中。

而且,中斷向量需要被remapped to SRAM。使用MEMAP寄存器,配置它為用戶(hù)RAM模式可以實(shí)現。

Int main()

{

………………….

初始化 MEMAP

MEMAP = 0x2;

………………………..

}

TIMER1配置為觸發(fā)一個(gè)FIQ中斷,代碼從FLASH中運行

例子包含下面的文件:

1. 中斷向量表(ivt.s)

2. 啟動(dòng)匯編代碼(init.s)

3. 主C文件

本應用筆記只提到了相關(guān)的文件。如果使用其他的交叉編譯環(huán)境,C文件可以保存大部分不動(dòng),匯編文件需要更改。

中斷向量表

這些代碼應當被鏈接到0x0。這樣中斷向量和FIQ ISR就被提供給了ARM核。

;*******************************************************************

匯編指令

********************************************************************

AREA IVT,CODE ;新的代碼段

CODE32

IMPORT start

T1_IR EQU 0Xe0008000

ENTRY

;*******************************************************************

LDR PC,=start

LDR PC,Undefined_Addr

LDR PC,SWI_Addr

LDR PC,Prefetch_Addr

LDR PC,Abort_Addr

DCD ;標識

LDR PC,IRQ_Addr

;*******************************************************************

FIQ ISR已經(jīng)自己存放在了 0x1C,取代了放置在這里的LDR 指令

******************************************************************

;清 TIMER1 中斷

MOV R8,#0x1

LDR R9,=T1_IR

STR R8,[R9]

后面的用戶(hù)應當增加更多的代碼在這里。

;返回到C main

SUBS PC,R14,#0x04

;*************************************************************************

Undefined_Addr DCD Undefined_Handler

SWI_Addr DCD SWI_Handler

Pregetch_Addr DCD Pregetch_Handler

Abort_Addr DCD Abort_Handler

IRQ_Addr DCD IRQ_Handler


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: Flash SRAM 觸發(fā)中斷

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>