国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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í)測(cè)試
一起跨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)的寄存器功能表解
永清县| 敦化市| 安陆市| 泸定县| 会同县| 青冈县| 乌兰察布市| 灵寿县| 醴陵市| 中阳县| 靖州| 临朐县| 延庆县| 原阳县| 贡觉县| 张北县| 铜陵市| 马关县| 瓮安县| 阿克苏市| 万荣县| 鄢陵县| 南陵县| 固阳县| 故城县| 佛学| 浪卡子县| 全州县| 大庆市| 四川省| 阿拉善右旗| 红河县| 清流县| 区。| 东明县| 台中县| 临朐县| 祥云县| 科尔| 玉龙| 芒康县|