本文首發於公眾號【大魚機器人】

一口氣管理幾十個中斷不是問題?

mp.weixin.qq.com
圖標

閱讀文本大概需要 2 分鐘。

0. 前言

昨天寫過一篇關於全局變數的處理方法:我是這樣用extern的

今天還想給大家分享一點關於單片機編程的小技巧:

如何統一管理單片機的所有中斷?

1. 一般如何處理中斷優先順序

眾所周知,在使用定時器、外部中斷以及串口,我們都需要對一些寄存器進行配置,例如對STM32的外部中斷5進行配置時:

同樣,如果需要使用定時器中斷,我們在配置完定時器寄存器之後,還需要配置NVIC中斷。

試想,如果在整個程序中,我們需要使用2個定時器中斷,3個串口中斷。

需要5個初始化函數來配置。在配置的函數中,需要反覆修改的地方也只有NVIC這部分。

因為我們在程序的調試中,可能需要修改中斷優先順序也就是誰先進行中斷處理,誰後中斷處理。

試想!

如果同時需要修改這5個初始化函數中的NVIC配置,是不是需要打開這些函數!

而且這些初始化函數不一定在一個文件中,是在多個文件,這得多麻煩!

那麼如何解決呢?

2. 我們可以換一種方式

最簡單的處理方式:

把NVIC中斷管理這部分的代碼都放在一個文件中,統一修改,統一配置

這樣我們就能一次性管理所有的中斷~

3. 以STM32為例

一 、我們可以把需要使用的中斷管理都放在一個函數,看圖

(圖一)

二 、我們可以把需要使用的中斷全部都配置好放在這個函數中,不需要使用的中斷可以直接注釋掉。需要的中斷刪掉注釋即可。

(圖二)

個人覺得,這樣管理起來特別方便且美觀。

註:上述示例代碼是我自己寫的一款平衡小車的代碼,公眾號後台回復[大車]即可獲取

3. 最後

若覺得文章對你有幫助,隨手點「在看」、轉發分享,也是我繼續更新的動力。

長按識別圖中二維碼關注

推薦閱讀:

PCB工程師的7個好習慣

哇,電路中居然放了0歐的電阻!!!

//end

這麼「好」的文章, 不點贊嗎?


公眾號上有我的聯繫方式哦~

除此之外,5T資源大放送!包括但不限於:C/C++,Linux,Python,Java,PHP,人工智慧,PCB、FPGA、DSP、labview、單片機、等等!

在公眾號內回復「更多資源」,即可免費獲取,期待你的關注~(放部分資料截圖)

推薦閱讀:

相关文章