446_PIC18F系列MCU的中斷實現
全部學習彙總: https://github.com/GreyZhang/PIC18F
最近在PICF18的平臺上熟悉J1939的協議,第一個例子算是除錯完了,使用的最簡單的polling模式來實現的。但是如果想要讓J1939的協議棧處理的能力更好,實時性更好且設計更加簡單一些,需要使用中斷。
這樣,我需要的中斷是CAN通訊的收發功能。
看一下相關的文件:
正好,我用到的兩個MCU相容性上基本上是一致的,中斷的用法看上去沒有太大的差異。
狀態的判斷暫存器如下:
而中斷使能的暫存器如下:
以上只是部分。
中斷優先順序的配置部分如上,只有高低兩個優先順序。
相應BUFFER的中斷使能也有一個專門的暫存器,這一系列的配置跟我接觸的比較多的PPC平臺其實也是差不多的。
接下來,看看這個例子中相關程式碼:
這裡是中斷的使能處理。
看起來,這裡是有5個BUFFER的中斷處理。
這是中斷的處理,上面是彙編的處理向量定義,呼叫下面的中斷ISR程式。之後,處理1939的中斷ISR服務。
處理的類別分別是收發和錯誤。
為什麼接收只有一箇中斷呢?
其實,這裡的程式碼說得清楚,開啟了FIFO模式。
上面差不多是ECAN的使用方式,差不多的驅動基礎已經瞭解了。後面,可以深入瞭解一下協議棧本身的功能。
相關文章
- Linux核心實現中斷和中斷處理(一)Linux
- 淺析Linux的軟中斷的實現Linux
- 《Linux核心設計與實現》——中斷和中斷處理Linux
- Java可自定義中斷定時器的實現Java定時器
- Locust 斷言的實現?
- 作業系統--怎麼實現中斷作業系統
- 【黑金ZYNQ7000系列原創視訊教程】06.ZYNQ來自FPGA的中斷——按鍵中斷實驗FPGA
- MCU點燈實驗小結
- JS實現奇偶數的判斷JS
- JavaScript實現《啊哈!演算法》中的系列演算法JavaScript演算法
- netty系列之:EventExecutor,EventExecutorGroup和netty中的實現Netty
- netty系列之:Bootstrap,ServerBootstrap和netty中的實現NettybootServer
- netty系列之:channel,ServerChannel和netty中的實現NettyServer
- 在 oracle 中實現 sql server 中的在 create object 時的判斷與刪除功能OracleSQLServerObject
- 在MCU端部署GRU模型實現鼾聲檢測:科技與健康管理的融合模型
- 熔斷原理與實現
- jquery實現的判斷checkbox核取方塊是否被選中jQuery
- UITableView中發現的小技巧(不斷更新)UIView
- 【黑金ZYNQ7000系列原創視訊教程】04.熟悉ZYNQ內部中斷——內部定時器中斷實驗定時器
- delphi 判斷類是否實現介面,獲取類實現的介面
- netty系列之:netty實現http2中的流控制NettyHTTP
- Lua中如何實現類似gdb的斷點除錯—07支援通過函式名稱新增斷點斷點除錯函式
- Nginx實現IF語句裡的AND,OR多重判斷Nginx
- MCU的SPI通訊介面
- Spring Cloud實戰系列(四) - 熔斷器HystrixSpringCloud
- 【SignalR全套系列】之在.Net Core 中實現SignalR實時通訊SignalR
- CSS 也能實現 if 判斷?實現動態高度下的不同樣式展現CSS
- Junit5系列-Junit5中Assertions斷言類
- 實現ABAP條件斷點的三種方式斷點
- 函式實現閏年判斷函式
- scp實現斷點續傳---rsync斷點
- 微軟證實雲端計算平臺暫時中斷顯現安全弊端微軟
- javascript模擬實現in_array()判斷指定元素是否在陣列中JavaScript陣列
- VC中ftp協議實現多執行緒斷點續傳(轉)FTP協議執行緒斷點
- Xlua中LuaBehaviour的實現
- jQuery中動畫的實現jQuery動畫
- Flutter 中的 MVVM 實現FlutterMVVM
- EXCEl中LIKE的實現Excel