• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      ARM Cortex—M0+KL25中斷機(jī)制研究

      2014-04-29 20:09:02韓嘯
      電腦知識(shí)與技術(shù) 2014年21期
      關(guān)鍵詞:中斷

      韓嘯

      摘要:該文介紹了KL25中斷的基本概念、中斷向量表文件,分析說明了KL25中斷服務(wù)程序及ARM Coretex-M0+非內(nèi)核中斷編程結(jié)構(gòu), 最后給出UART接收中斷程序?qū)嵗?/p>

      關(guān)鍵詞:KL25;中斷;中斷向量表;UART

      中圖分類號(hào): TP338 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)21-5134-02

      所謂中斷,是指MCU在正常運(yùn)行程序時(shí),由于MCU內(nèi)核異?;蛘進(jìn)CU各模塊發(fā)出請(qǐng)求事件,引起MCU停止正在運(yùn)行的程序,而轉(zhuǎn)去處理異?;驁?zhí)行處理外部事件的程序(又稱中斷服務(wù)程序)。

      這些引起MCU中斷的事件稱為中斷源。KL25的中斷源分為兩類:內(nèi)核中斷和非內(nèi)核中斷。內(nèi)核中斷主要是異常中斷,即當(dāng)出現(xiàn)錯(cuò)誤時(shí),這些中斷會(huì)復(fù)位芯片或是做出其他處理。非內(nèi)核中斷是指MCU各個(gè)模塊為中斷源引起的中斷, MCU執(zhí)行完中斷服務(wù)程序后,又回到剛才正在執(zhí)行的程序,從停止的位置繼續(xù)執(zhí)行后續(xù)的指令。非內(nèi)核中斷又稱可屏蔽中斷,可通過編程控制,開啟或關(guān)閉該中斷。

      1 KL25中斷向量表文件

      中斷向量序號(hào)是每一個(gè)中斷源的固定編號(hào),由芯片設(shè)計(jì)生產(chǎn)時(shí)決定的,編程時(shí)不能更改,它代表了中斷服務(wù)程序入口地址在中斷向量表的位置[1]。

      中斷向量表是指按照中斷源的中斷向量序號(hào)的固定順序,存放中斷服務(wù)程序入口地址的一段存儲(chǔ)區(qū)域。每個(gè)中斷服務(wù)程序入口地址占用4個(gè)字節(jié)單元,KL25中斷向量表的位置在存儲(chǔ)區(qū)0x0000_0000~0x0000_00c0的一段地址范圍,共48*4=192個(gè)字節(jié),存放48個(gè)中斷服務(wù)程序的入口地址。中斷服務(wù)程序的入口地址又稱為中斷向量或中斷向量指針,它指向中斷服務(wù)程序在存儲(chǔ)器中的位置。

      在中斷向量表頭文件vectors.h中,主要包含以下內(nèi)容:定義了中斷向量表的類型*vector_entry,用于vectors.c中定義中斷向量表數(shù)組。申明要用到的中斷服務(wù)函數(shù),其中extern,指明是外部函數(shù)。將中斷服務(wù)函數(shù)名進(jìn)行宏定義,宏名與中斷向量序號(hào)對(duì)應(yīng)[2]??砂堰@項(xiàng)任務(wù)在“isr.h”中斷服務(wù)程序頭文件中實(shí)現(xiàn)。在中斷向量表源文件vectors.c中,將vectors.h定義的中斷向量放在rom_vector[]數(shù)組中。另外定義了_int_kernel_isr(void)空函數(shù)。到此,中斷向量表文件編寫完成,中斷向量表也就實(shí)現(xiàn)了。

      2 KL25的中斷服務(wù)程序及其“注冊(cè)”

      為了規(guī)范編程將各個(gè)中斷服務(wù)程序放在"isr.c"中斷底層驅(qū)動(dòng)構(gòu)件源文件。中斷服務(wù)程序的“注冊(cè)”就是將用戶編寫好中斷服務(wù)程序入口地址,添加到中斷向量表中。實(shí)際是在中斷向量表頭文件vectors.h中,將宏定義的中斷服務(wù)函數(shù)名替換成用戶編寫好中斷服務(wù)程序名。在設(shè)計(jì)工程框架時(shí)將中斷向量表文件封裝起來,避免用戶直接對(duì)中斷向量表文件進(jìn)行修改,而采用“宏回調(diào)”的方式為用戶提供編程接口。用戶只需在“isr.h”文件中取消對(duì)應(yīng)中斷向量表項(xiàng)“VECTOR_XXX”指向默認(rèn)中斷服務(wù)例程函數(shù)的映射,再重新指定該表項(xiàng)為用戶自定義的中斷服務(wù)例程函數(shù)即可。

      3 ARM Coretex-M0+ 非內(nèi)核模塊中斷編程結(jié)構(gòu)

      M0+中斷結(jié)構(gòu)原理圖如圖1所示。由模塊中斷源、中斷控制器(NVIC)和M0+內(nèi)核組成。其中斷過程分為二步,①模塊中斷源向中斷控制器(NVIC)發(fā)出中斷請(qǐng)求信號(hào)。②中斷控制器對(duì)發(fā)來的中斷信號(hào)進(jìn)行管理,判斷該中斷是否允許中斷,若允許,通過私有外設(shè)總線發(fā)送給M0+內(nèi)核,由內(nèi)核進(jìn)行中斷處理;如果同時(shí)有多個(gè)中斷信號(hào)到來,NVIC根據(jù)設(shè)定好的中斷信號(hào)的優(yōu)先級(jí)進(jìn)行判斷,優(yōu)先級(jí)高的中斷首先響應(yīng),優(yōu)先級(jí)低的中斷掛起,壓入堆棧保存;如果優(yōu)先級(jí)完全相同的多個(gè)中斷源同時(shí)請(qǐng)求,則先響應(yīng)IRQ中斷號(hào)較小的,其他的被掛起[3]。

      4 UART接收中斷程序?qū)嵗?/p>

      本實(shí)例實(shí)現(xiàn)以下功能:在主函數(shù)文件UART1模塊首先向PC機(jī)發(fā)送字符串“Hello World!”,主程序進(jìn)入主循環(huán)閃爍藍(lán)色指示燈,當(dāng)PC機(jī)向串口1發(fā)送數(shù)時(shí)產(chǎn)生中斷,執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序程序的功能是:成功接收數(shù)據(jù)后,馬上將該數(shù)據(jù)回發(fā)給PC機(jī)。中斷處理程序執(zhí)行完畢后,又回到主程序。KL25中斷編程的步驟:在中斷底層驅(qū)動(dòng)構(gòu)件源文件isr.c中,寫好中斷服務(wù)函數(shù) void isr_uart1_re(void);在中斷底層驅(qū)動(dòng)構(gòu)件頭文件isr.h中,將中斷服務(wù)函數(shù)void isr_uart1_re(void)注冊(cè)到中斷向量表中。在UART.C構(gòu)件中寫好串口接收中斷使能,初始化函數(shù)uart_enable_re_int(uint_8 uartNo)。在主函數(shù)文件(main.c)中,調(diào)用uart_enable_re_int(uint_8 uartNo)函數(shù),使能串口UART1模塊接收中斷的功能。

      參考文獻(xiàn):

      [1] 楊明.Freescale HCS08單片機(jī)原理及應(yīng)用[M].北京:電子工業(yè)出版社,2011:162-168.

      [2] 王宜懷.嵌入式技術(shù)基礎(chǔ)與實(shí)踐[M].北京:清華大學(xué)出版社,2013:124-132.

      [3] 王宜懷.基于32位ColdFire構(gòu)建嵌入式系統(tǒng)[M].北京:電子工業(yè)出版社,2009:116-122.

      猜你喜歡
      中斷
      在D-策略控制下服務(wù)員單重休假且休假不中斷的M/G/1排隊(duì)系統(tǒng)分析
      “單片機(jī)中斷概述”微課教學(xué)設(shè)計(jì)
      一種考慮GPS信號(hào)中斷的導(dǎo)航濾波算法
      基于FPGA的中斷控制器設(shè)計(jì)*
      Linux中斷線程化分析及中斷延時(shí)測試
      一起跨BSC切換CS域業(yè)務(wù)中斷的案例分析
      對(duì)80C51系列單片機(jī)中斷問題的研究
      電子制作(2018年2期)2018-04-18 07:13:44
      跟蹤導(dǎo)練(二)(5)
      千里移防,衛(wèi)勤保障不中斷
      解放軍健康(2017年5期)2017-08-01 06:27:44
      AT89C51與中斷有關(guān)的寄存器功能表解
      于都县| 财经| 苍梧县| 嵩明县| 库车县| 鹤岗市| 电白县| 碌曲县| 乌苏市| 高尔夫| 左云县| 滦南县| 延津县| 临湘市| 汕尾市| 咸阳市| 清水河县| 陇川县| 怀来县| 偏关县| 探索| 祁阳县| 灵宝市| 霍邱县| 陈巴尔虎旗| 靖宇县| 满城县| 江孜县| 五峰| 灌阳县| 莲花县| 历史| 河池市| 新郑市| 秦皇岛市| 贡嘎县| 巫溪县| 东明县| 乌鲁木齐县| 湘阴县| 天峨县|