ISR之不能做什麼

2021-09-28 11:27:53 字數 970 閱讀 1051

為了自己學習之用,轉來一遍文章

__interrupt double compute_area (double radius) 

這個函式有太多的錯誤了,以至讓人不知從何說起了:

1)isr 不能返回乙個值。如果你不懂這個,那麼你不會被雇用的。

2) isr 不能傳遞引數。如果你沒有看到這一點,你被雇用的機會等同第一項。

3) 在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額處的暫存器入棧,有些處理器/編譯器就是不允許在isr中做浮點運算。此外,isr應該是短而有效率的,在isr中做浮點運算是不明智的。

4) 與第三點一脈相承,printf()經常有重入和效能上的問題。如果你丟掉了第三和第四點,我不會太為難你的。不用說,如果你能得到後兩點,那麼你的被雇用前景越來越光明了。

中斷是嵌入式系統中重要組成部分,很多編譯器開發商都讓標準c支援中斷,並引入關鍵字_interrupt.但是:

1、isr不能有返回值;

2、isr不能傳遞引數;

3、isr應該是短而高效的,在isr中做浮點運算是不明智的;

4、isr中不應該有重入和效能上的問題,因此不應該使用pintf()函式。

1.isr 不能有返回值。為什麼?

2.isr 不能傳遞引數。為什麼? 

裸奔的系統:硬體中斷響應程式的執行插入時機是隨機的,程式中不存在這樣的呼叫語句:「value=interrupter( )」, 所以,即使有返回值也不知返回給誰。  同理,如果中斷函式有形參,但因沒有呼叫者,也就沒有實參對形參賦值。所以,不可能有引數傳遞。

裸奔系統中,中斷程式由硬體觸發執行。這意味著中斷函式沒有具體的呼叫者,所以,中斷函式無法將值返回給任何物件

非裸奔系統:作業系統需要進行各種排程安排,所以接管了中斷的入、出口;另外,還增加了許多軟體中斷。這些中斷函式的執行插入時機已經不再是隨機了。乙個中斷申請發生後,其執行時機取決於作業系統的確定安排和呼叫。也就是說,有了呼叫者,所以可以有返回值和引數傳遞。

Excel Service能做什麼和不能做什麼

moss 2007中包含了乙個excel service,很多朋友都對其相當感興趣。這裡要介紹一下它的組成部分,以及具體它能做什麼和不能做什麼 下面這個位址是官方的blog 從下圖可以看出,它包含前端和後端兩個部分,前端的excel web access是給sharepoint用來作為web par...

能做什麼,想做什麼

做為乙個企業,首先要明確的是自己能做什麼。看到做什麼能賺錢就上 做一手好菜,你可以去開餐館 養雞的,就開個養雞場 會理財的,就做 做投資。不管你能做什麼,至少你要能做一件事,那是安身立命之本呀1.一把菜刀在手,吃喝不愁。做企業,可以先培養自己的優勢,然後謀求發展。把自己的優勢應用到相應的行業中,為其...

VB能做什麼?

vb的強弱爭論由來以久,會c語言的人總帶著一種不屑,就像白人對有色人種一樣,天生帶著一種優越感 那個功能你小小語言真的能實現?劉翔在奧運110欄上奪得了世界第一 中國人 亞洲人 為之振奮不已 但給人總有點那種感覺。就像vb人員會說,vb也可以開發編譯器呢,用友軟體前期還是用vb開發的呢 但也給人那種...