446_PIC18F系列MCU的中斷實現
全部學習彙總: https://github.com/GreyZhang/PIC18F
最近在PICF18的平臺上熟悉J1939的協議,第一個例子算是除錯完了,使用的最簡單的polling模式來實現的。但是如果想要讓J1939的協議棧處理的能力更好,實時性更好且設計更加簡單一些,需要使用中斷。
這樣,我需要的中斷是CAN通訊的收發功能。
看一下相關的文件:
正好,我用到的兩個MCU相容性上基本上是一致的,中斷的用法看上去沒有太大的差異。
狀態的判斷暫存器如下:
而中斷使能的暫存器如下:
以上只是部分。
中斷優先順序的配置部分如上,只有高低兩個優先順序。
相應BUFFER的中斷使能也有一個專門的暫存器,這一系列的配置跟我接觸的比較多的PPC平臺其實也是差不多的。
接下來,看看這個例子中相關程式碼:
這裡是中斷的使能處理。
看起來,這裡是有5個BUFFER的中斷處理。
這是中斷的處理,上面是彙編的處理向量定義,呼叫下面的中斷ISR程式。之後,處理1939的中斷ISR服務。
處理的類別分別是收發和錯誤。
為什麼接收只有一箇中斷呢?
其實,這裡的程式碼說得清楚,開啟了FIFO模式。
上面差不多是ECAN的使用方式,差不多的驅動基礎已經瞭解了。後面,可以深入瞭解一下協議棧本身的功能。
相關文章
- Cortex-A系列中斷
- Locust 斷言的實現?
- 作業系統--怎麼實現中斷作業系統
- netty系列之:Bootstrap,ServerBootstrap和netty中的實現NettybootServer
- netty系列之:EventExecutor,EventExecutorGroup和netty中的實現Netty
- netty系列之:channel,ServerChannel和netty中的實現NettyServer
- JavaScript實現《啊哈!演算法》中的系列演算法JavaScript演算法
- netty系列之:netty實現http2中的流控制NettyHTTP
- 熔斷原理與實現
- MCU點燈實驗小結
- delphi 判斷類是否實現介面,獲取類實現的介面
- 在MCU端部署GRU模型實現鼾聲檢測:科技與健康管理的融合模型
- Spring Cloud實戰系列(四) - 熔斷器HystrixSpringCloud
- Nginx實現IF語句裡的AND,OR多重判斷Nginx
- 【SignalR全套系列】之在.Net Core 中實現SignalR實時通訊SignalR
- 【pytest系列】- assert斷言的使用
- CSS 也能實現 if 判斷?實現動態高度下的不同樣式展現CSS
- 實現ABAP條件斷點的三種方式斷點
- 02-使用BIOS中斷 顯示字元/讀取磁碟 【實現boot中載入loader的功能】iOS字元boot
- Envoy熔斷限流實踐(一)基於Rainbond外掛實現熔斷AI
- 函式實現閏年判斷函式
- scp實現斷點續傳---rsync斷點
- python實現基於八方向判斷的斷裂連線Python
- Lua中如何實現類似gdb的斷點除錯—07支援通過函式名稱新增斷點斷點除錯函式
- Junit5系列-Junit5中Assertions斷言類
- MCU的SPI通訊介面
- JS實現簡單的判斷文字框長度JS
- 使用case實現成績優良差的判斷
- 用case實現成績優良差的判斷
- 實現 ABAP 條件斷點的三種方式分享斷點
- 貝葉斯推斷架構實現架構
- Java實現檔案斷點續傳Java斷點
- 純 CSS 實現多行文字截斷CSS
- 12.SpringCloudAlibabaSentinel實現熔斷和限流SpringGCCloud
- CSS 實現文字"不定行數"截斷CSS
- Python 實現斷網自動重連Python
- JavaScript自我實現系列(1):instanceofJavaScript
- Elasticsearch系列---實現分散式鎖Elasticsearch分散式