中断服务子程序(ISR)
生活随笔
收集整理的這篇文章主要介紹了
中断服务子程序(ISR)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
中斷是嵌入式系統(tǒng)中重要的組成部分,這導致了很多編譯開發(fā)商提供一種擴展-讓標準C支持中斷。其代表事實是,產(chǎn)生了一個新的關鍵字?__interrupt(51即如此)。下面的代碼就使用了__interrupt關鍵字去定義了一個中斷服務子程序(ISR),請評論一下這段代碼的。
__interrupt double compute_area (double radius)?{double area = PI * radius * radius;printf("/nArea = %f", area);return area;}這個函數(shù)有太多的錯誤了,以至讓人不知從何說起了(前提是非操作系統(tǒng)下的中斷服務函數(shù)):
1)ISR?不能返回一個值(都應該為void類型)。如果你不懂這個,那么你不會被雇用的。
2)ISR?不能傳遞參數(shù)。如果你沒有看到這一點,你被雇用的機會等同第一項。
3)在許多的處理器/編譯器中,浮點一般都是不可重入的。有些處理器/編譯器需要讓額外的寄存器入棧,有些處理器/編譯器就是不允許在ISR中做浮點運算。此外,ISR應該是短而有效率的,在ISR中做浮點運算是不明智的。另外中斷服務程序是運行在內核態(tài)的(linux),內核通常是不支持浮點運算的。
總結
以上是生活随笔為你收集整理的中断服务子程序(ISR)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CC++面试题大汇总
- 下一篇: 位操作(Bit manipulation