国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

ARM入門筆記(8)

發布時間:2010-8-26 17:30    發布者:絕對好文
關鍵詞: ARM入門筆記
第八章 中斷控制實驗

一.背景

實際上ARM的中斷與51單片機的中斷類似,都有類似的中斷入口地址(ARM稱異常向量表)。只不過 51給兩個相互的中斷入口之間留有足夠的空間(如外部中斷0的中斷入口在03H處,而定時器0的中斷入口在0BH處),在這段空間中可以放多條指令,這樣在編寫中斷處理程序時非常靈活。ARM總共有7種中斷(或異常)類型,它們的入口分別為00H、04H ┄┄ 1CH,入口與入口之間只夠放一條指令,這條通常為“B  XX”或者“LDR   PC, ResetAddr”的跳轉指令。

二.實驗目的

在IRQ中斷向量地址(0x18)處設置一個斷點后全速運行,用按鈕產生PIO中斷輸入信號,使產生中斷,而跳轉到設置的斷點處。

三.實驗程序和參數設置

1> 連接器選項設置與上個實驗相同
2> 啟動代碼

與前幾個實驗相比,使能了IRQ中斷后再跳到C語言的主函數。

AREA init,CODE,READONLY
CODE32
Mode_USR EQU  0x10 ;CPSR中各種處理器模式對應的控制位
USR_Stack EQU  0x00204000 ;定義RAM的最高地址,無重映射
ENTRY
                B           InitReset           ; 0x00 Reset handler
Undefvec         B           undefvec            ; 0x04 Undefined Instruction
swivec           B           swivec              ; 0x08 Software Interrupt
pabtvec          B           pabtvec             ; 0x0C Prefetch Abort
dabtvec          B           dabtvec             ; 0x10 Data Abort
rsvdvec          B           rsvdvec             ; 0x14 reserved
irqvec           B   irqvec    ; 0x18 IRQ
fiqvec     B   fiqvec        ; 0x1c FIQ
InitReset
MSR CPSR_c,#Mode_USR   ;使能FIQ,IRQ中斷
LDR SP,=USR_Stack
IMPORT      main
b        main
END

3> C語言代碼

#i nclude "AT91SAM7S64.h"
#i nclude "Board.h"
unsigned int Key_Val;
unsigned int key;
int main(void)
{
*AT91C_PMC_SCER = 0x1;     //使能系統時鐘寄存器的處理器時鐘
*AT91C_PMC_PCER = 1 91C_ID_PIOA; //使能PIOA外圍時鐘
*AT91C_PIOA_PER = SW_MASK;   //使能KEY引腳的I/O口功能
*AT91C_AIC_IDCR = 1 91C_ID_PIOA; //禁止PIO外圍中斷功能
*AT91C_PIOA_ODR = SW_MASK;  //使能4個KEY管腳的輸入功能
AT91C_BASE_AIC -> AIC_SMR[AT91C_ID_PIOA] = AT91C_AIC_PRIOR_HIGHEST | AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED;//中斷模式(優先級和觸發模式)
*AT91C_AIC_ICCR = 1 91C_ID_PIOA; //中斷清除
*AT91C_PIOA_IDR = 0xffffffff;    //禁止所有PIO口的中斷功能
*AT91C_PIOA_IER = SW3_MASK;   //使能PIO的SW3腳中斷功能
*AT91C_AIC_IECR = 1 91C_ID_PIOA; //使能PIO外圍中斷功能
while (1);
}

四.出現的問題與解決方法

1> CPU進不了中斷,即跳不到IRQ中斷向量入口地址。

原因是打開了Memory窗口,觀察中斷相關的寄存器。AXD軟件為了在Memory窗口中刷新這些寄存器值,在程序運行過程中會訪問CPU中相應寄存器值。當中斷源觸發后,在跳到IRQ的中斷入口之前,IRQ的中斷向量寄存器AIC_IVR就因為上述原因被讀過 ,這時CPU就認為已經完成對IRQ中斷的處理,因此就不再跳轉到IRQ中斷入口。

2> 剛一執行“MSR CPSR_c,#Mode_USR”語句使能IRQ中斷,CPU就立即產生IRQ中斷。

原因當上一次產生IRQ中斷后,沒有讀PIO的中斷狀態寄存器,將其清零。因為中斷狀態寄存器置1時表示自從上一次讀取此寄存器,至少檢測到了一次電平變化。所以當沒有讀該寄存器時,該狀態位會一直保持著。又因為在重新裝載程序進行調試時,沒有復位目標CPU,所以當使能IRQ中斷后,由于PIO中斷狀態寄存器為1的原因而產生中斷。

五.總結

個人認為ARM的中斷與51的中斷,在本質上并沒有多大的區別,出現上述的問題是由于它們在仿真、調試時的差異造成。在用普通的51仿真器進行仿真、調試時,如果我們不進行如單步、全速等執行程序運行,內部的各種寄存器、狀態寄存器等是不會改變的,此時目標的CPU處于停止一樣。而用ARM仿真器進行仿真、調試時,當你不進行如單步、全速等執行程序運行,內部的各種寄存器、狀態寄存器還可能會改變,目標的CPU還會處處響應外部,這種情況在調試內部定時器時會更加明顯。
本文地址:http://m.qingdxww.cn/thread-23782-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
長話短說 發表于 2010-9-4 11:34:11
謝謝
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女国模嫣然生殖欣赏337p | 日韩国产欧美在线观看一区二区 | 国产一区曰韩二区欧美三区 | 亚洲天堂区 | 亚洲女人国产香蕉久久精品 | 亚洲欧美日韩中文字幕网址 | 三级毛片免费看 | 黄页视频免费 | 特级毛片免费视频观看 | 四虎永久免费网站 | 亚洲国产美女精品久久久久 | 男人的天堂久久精品激情a 男人的天堂久久精品激情 男人的天堂久久 | 欧美大片在线免费观看 | 国产极品美女网站在线观看 | 高清中文字幕免费观在线 | 自拍第1页 | 精品国产不卡一区二区三区 | 欧美在线视频免费 | 9191在线精品播放 | 欧美一级黄色片在线观看 | 青青草国拍 | 69综合网 | 精品国产高清自在线一区二区三区 | 欧美日韩视频在线 | 麻豆国产高清精品国在线 | 4388全国最大成网站在线 | 日韩免费一级毛片 | 最近韩国日本免费观看 | 日本a黄 | 欧美综合天天夜夜久久 | 亚洲成年人网址 | 亚洲欧美色图片 | 香蕉视频网页 | 欧美一区二区三区不卡免费观看 | 欧美在线黄色片 | 曰本亚洲欧洲色a在线 | 久久久99精品免费观看精品 | 亚洲欧美综合一区二区三区四区 | 国产一区日韩二区欧美三区 | 免费网站色 | 在线免费一区 |