性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

RT-thread——中斷管理接口API

中斷管理接口的作用:把操作系統(tǒng)和底層硬件中斷、異常隔離開(kāi)來(lái),而提供的一組抽象接口。

中斷管理接口API有哪些?


1.裝在中斷服務(wù)例程API作用:將硬件中斷向量與用戶的中斷服務(wù)函數(shù)連接起來(lái):

/*注:這個(gè) API 并不會(huì)出現(xiàn)在每一個(gè)移植分支中,例如通常 Cortex-M0/M3/M4 的移植分支中就沒(méi)有這個(gè) API。*/
/*return:掛載這個(gè)中斷服務(wù)程序之前掛載的中斷服務(wù)程序的句柄*/
rt_isr_handler_t rt_hw_interrupt_install(int vector,              /*vector 是掛載的中斷號(hào)*/
                                        rt_isr_handler_t  handler,/*新掛載的中斷服務(wù)程序*/
                                        void *param,              /*param 會(huì)作為參數(shù)傳遞給中斷服務(wù)程序*/
                                        char *name);              /*中斷的名稱*/

2.屏蔽中斷源API:可以保證在接下來(lái)的處理過(guò)程中硬件狀態(tài)或者數(shù)據(jù)不會(huì)受到干擾。

/*注:這個(gè) API 并不會(huì)出現(xiàn)在每一個(gè)移植分支中,例如通常 Cortex-M0/M3/M4 的移植分支中就沒(méi)有這個(gè) API。*/                                        
void rt_hw_interrupt_mask(int vector);/*要屏蔽的中斷號(hào)*/

3.打開(kāi)屏蔽的中斷API:

/*注:這個(gè) API 并不會(huì)出現(xiàn)在每一個(gè)移植分支中,例如通常 Cortex-M0/M3/M4 的移植分支中就沒(méi)有這個(gè) API。*/                                        
void rt_hw_interrupt_umask(int vector);/*要打開(kāi)屏蔽的中斷號(hào)*/

4.全局中斷關(guān)API:

/*return :rt_hw_interrupt_disable 函數(shù)運(yùn)行前的中斷狀態(tài)*/
rt_base_t rt_hw_interrupt_disable(void);

5.全局中斷開(kāi)API:

void rt_hw_interrupt_enable(rt_base_t level);/*前一次 rt_hw_interrupt_disable 返回的中斷狀態(tài)*/

備注,中斷的開(kāi)關(guān)一般是成對(duì)出現(xiàn)的,并且支持中斷開(kāi)關(guān)嵌套:

rt_base_t level0;
rt_base_t level1;

/* 第一次關(guān)閉全局中斷,關(guān)閉之前的全局中斷狀態(tài)可能是打開(kāi)的,也可能是關(guān)閉的 */
level0 = rt_hw_interrupt_disable();
/* 第二次關(guān)閉全局中斷,關(guān)閉之前的全局中斷是關(guān)閉的,關(guān)閉之后全局中斷還是關(guān)閉的 */
level1 = rt_hw_interrupt_disable();

do_something();

/* 恢復(fù)全局中斷到第二次關(guān)閉之前的狀態(tài),所以本次 enable 之后全局中斷還是關(guān)閉的 */
rt_hw_interrupt_enable(level1);
/* 恢復(fù)全局中斷到第一次關(guān)閉之前的狀態(tài),這時(shí)候的全局中斷狀態(tài)可能是打開(kāi)的,也可能是關(guān)閉的 */
rt_hw_interrupt_enable(level0);

6.中斷通知(當(dāng)系統(tǒng)進(jìn)入/退出硬件中斷時(shí),需要給RTT發(fā)出一個(gè)通知,用于記錄中斷嵌套的深度):

void rt_interrupt_enter(void);
void rt_interrupt_leave(void);

7.獲取系統(tǒng)當(dāng)前的中斷嵌套深度API:

/*返回 	  描述
   0 	    當(dāng)前系統(tǒng)不處于中斷上下文環(huán)境中
   1 	    當(dāng)前系統(tǒng)處于中斷上下文環(huán)境中
 大于 1 	當(dāng)前中斷嵌套層次*/
rt_uint8_t rt_interrupt_get_nest(void);

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺(jué)得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 7
收藏 2
關(guān)注 150
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧