物聯網專案 M0中斷

2021-06-19 07:51:39 字數 1108 閱讀 4261

m0核心plc11c14的中斷和其他arm產品的中斷不一樣,plc11c14晶元手冊上說有32個中斷0-31,其中27號中斷保留,0-11共十二個是靜態的中斷向量,有外部引腳p0埠的,

p0_0到p0_11,一一對應,12號中斷由p1_0對應。plc11c14一共四個埠,p0到p3,其中p0到p2每個埠十二個引腳,p3口四個引腳。

內部中斷有四個定時器中斷,看門狗中斷,串列埠,spi,等等。這些也大同小異,但是在最後的有乙個中斷狀態的中斷源

28 pio_3 gpio interrupt status of port 3

29 pio_2 gpio interrupt status of port 2

30 pio_1 gpio interrupt status of port 1

31 pio_0 gpio interrupt status of port 0

經過仔細研究bsp包內的軟體原始碼,發現上訴四個中斷可以監控四個埠,當這些埠中有引腳電位變化時,出發中斷,進入中斷服務函式,pioint0_irqhandler(void);

在中斷中判斷是哪個引腳發生了中斷

if(gpiointstatus(port2, 8))

//對應port2_8埠的中斷事件,

這樣一來所有外部的gpio,都可以作為外部中斷使用,大大提高了資源的利用率,我們可以在下半部機制完成中斷處理函式,在中斷中只置位標誌位,在main()函式中

輪詢標誌位是否發生變化,發生變化後跳轉到對應的下半部處理函式中,這樣中斷觸發後可以很快完成處理,不會在中斷中浪費過多資源。

同時我們可以設定觸發中斷的條件,bsp包中提供了乙個函式

gpiosetinterrupt(port2, 8, 1,0, 0 );

gpiointenable(port2,8);

對應引數,

第乙個埠號;

第二個引數管腳號;

第三個引數電平觸發還是跳變沿觸發(0為跳變沿觸發,1為電平觸發);

第四個引數當第三引數設定為跳變沿出發時,0位單邊沿觸發,1為雙邊沿觸發;當第三引數設定為點評觸發是,0代表低電平,1代表高電平。

第五個引數設定上公升沿還是下降沿觸發,對單邊沿觸發有效。

上面設定port2_8引腳,低電平觸發方式。

8086中斷知識以及編寫0號中斷處理程式

int n指令的格式為 int n,n為中斷型別碼 cpu執行int中斷,實際上就相當於引發乙個n號中斷的中斷過程,他的大致執行過程如下 取中斷型別n 標誌暫存器入棧,置if 0,tf 0 為什麼要這一步,後面有解釋 這一步可以模擬為 pushf 標誌暫存器入棧 下面的步驟完成置if和tf push...

Cortex M0 LPC11C14中斷控制器

lpc11c14 cortex m0 微控制器採用的是nvic nested vectored interruptcontroller 中斷控制器 nvic中斷控制器有一下特點 nvic是arm cortex m0的乙個整合部分 緊耦合的方式中斷延遲低 可控制系統的異常及外設中斷 nvic中斷控制器...

INT0及INT1中斷計數

名稱 int0及int1中斷計數 說明 每次按下第1個計數鍵時,第1組計數值累加並顯示在右邊3只數碼管上,每次按下第2個計數鍵時,第2組計數值累加並顯示在左邊3只數碼管上,後兩個按鍵分別清零。include define uchar unsigned char define uint unsigne...