久久久国产精品视频袁燕,99re久久精品国产,亚洲欧美日韩国产综合v,天天躁夜夜躁狠狠久久,激情五月婷婷激情五月婷婷

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

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

中斷管理接口API有哪些?


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

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

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

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

3.打開屏蔽的中斷API:

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

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

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

5.全局中斷開API:

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

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

rt_base_t level0;
rt_base_t level1;

/* 第一次關(guān)閉全局中斷,關(guān)閉之前的全局中斷狀態(tà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();

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

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

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

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

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

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