3 MSP430引腳中斷

2021-09-20 11:37:05 字數 2487 閱讀 5586

為了寫一篇文章做鋪墊--提醒著自己,,,,,,

這兩天一直在尋找

#pragma vector = port1_vector__interrupt 

void p1_interrupt()//

p1口中斷函式

對於這兩句話的解釋,最起碼讓自己感覺能說服自己

看了好多後自己的理解

#pragma vector = port1_vector
通俗來講這句話是告訴c編譯器,你下面的函式是p1口的中斷函式,p1口有中斷發生時就進入下面這個函式

__interrupt void p1_interrupt()//p1口中斷函式

那期間到底發生了什麼

其實msp430內部有乙個中斷向量表----中斷向量表實際就是儲存中斷函式入口位址的儲存單元空間

假如說,下面是表的一段,,,,假如說,,,,,

那麼
#pragma vector = port1_vector

就應該這樣理解

告訴編譯器下面有乙個p1口的中斷服務函式,你應該把這個中斷函式的位址放在

__interrupt    //告訴編譯器這是個中斷服務函式

再舉乙個例子,假設寫乙個串列埠接收中斷函式

#pragma vector=uart0rx_vector

__interrupt void uart_receive()

其實
#pragma vector=uart0rx_vector

後面的

uart0rx_vector就是在告訴編譯器,下面的中斷函式是串列埠接收中斷服務函式,你要把它的服務函式位址放到儲存串列埠接收中斷服務函式的位址裡

對了後面
port1_vector  p1口中斷
port2_vector  p2口中斷

uart0rx_vector 串列埠接收中斷
uart0tx_vector  串列埠傳送中斷

timer0_a0_vector 定時器a中斷

乾脆盜一張圖

正事,對於引腳中斷,學過51的都知道無非就是開啟中斷,,然後選擇觸發方式,然後寫中斷函式,然後再中斷函式裡清除中斷標誌(假如說.它不自動清除中斷標誌的話)

p1.2口有一的下降沿p1.0口的引腳反轉

#include "

io430.h

"void main( void)}

#pragma vector = port1_vector__interrupt

void p1_interrupt()//

p1口中斷函式

假如說我p1.2和p1.3都想用中斷呢

p1.2口有一的下降沿p1.0口的引腳反轉

p1.3口有一的下降沿p1.1口的引腳反轉

#include "

io430.h

"void main( void)}

#pragma vector = port1_vector__interrupt

void p1_interrupt()//

p1口中斷函式

if(p1ifg&bit3)//如果p1.3有中斷

其實自己有點疑惑,,,為什麼燈同時亮滅呢!同時觸發,同時檢測嗎?,難道p1口是乙個整體,那就太好了,同時用中斷檢測多路,不怕訊號同時到來,,,,,,

FAQ0092 SPI3 引腳設定方法

faq0092 spi3 引腳設定方法 questions 如何設定 spi3 引腳 answer 需要開啟對應 gpio 時鐘 開啟復用時鐘 將 io 配置為復用功能 設定重對映等相應的操作。1.將 pa15 pb3 pb4 pb5 作為 spi3 使用,需要設定如下 開啟 gpioa gpiob...

Linux核心驅動之DDR3 三 引腳分析

一 ddr3引腳描述 4bit和8bit位寬晶元一般採用78球fbga封裝 16bit位寬晶元一般採用96球fbga封裝 下列訊號方向都是針對ddr3晶元來說的 a0 a9,a10 ap,a11,a12 bc a13,a14 input 位址輸入訊號,行位址線和列位址線分時使用 a10 ap 表示p...

MSP430應用技巧3 中斷優先順序

msp430的中斷優先順序 開啟關閉 中斷巢狀 優先順序順序從高到低為 port2 vector 1 2u 0xffe2 port 2 port1 vector 4 2u 0xffe8 port 1 timera1 vector 5 2u 0xffea timer a cc1 2,ta timera...