CC2430基礎 外部中斷分析

2022-08-18 09:39:14 字數 971 閱讀 9460

外部中斷實驗是使用兩個按鍵來翻轉led狀態,但這裡兩個按鍵,一是做鍵盤用,二是產生中斷觸發訊號。

實驗共用到p1、p1/p0dir、p1/p0sel、p1/p0inp、pictl、ien1和p0ifg幾個個暫存器。其中前幾個的作用前面的文章裡應經介紹過了,這裡就不再重複說明了。這裡主要是講一下後幾個暫存器的作用。其中pictl為p口中斷控制暫存器;

p0ifg為p1口中斷標誌暫存器;ien1為中斷使能暫存器1。

這個實驗是到目前為止我改動最大的乙個實驗了,我想主要還是這個基礎實驗以前不是跑在2430上的原因吧,在無限龍的這個開發板上的按鍵管腳並不是p1_2和p1_3,所以要把管腳好好的改動一下才可以。這個試驗需要用到p1來控制led而用p0來控制按鍵。下面來看一下改過的i/o及led初始化的設定:

void init_io_and_led(void)

具體的管腳設定說明請找到相應的說明書查詢,在這我只想說明的就是2430外部中斷的設定問題,如果要使用2430的中斷功能的話,那麼應當執行下面的步驟:

step1:設定ien0中的eal位(即ea)為1;

step2:設定暫存器ien0、ien1和ien2中相應的各中斷使能位為1;

step3:如果有,則設定特殊功能暫存器中對應的各中斷使能位為1;

#pragma vector = p0int_vector

__interrupt void p0_isr(void)

p0ifg = 0;          //清中斷標誌

}注意紅色的部分是改動的,因為用的按鍵是p0_4和p0_5,所以中斷向量是用的p0口的中斷向量。整個試驗的基本原理在這個中斷向量的isr中就可以清晰可見了。首先的按鍵觸動中斷,然後相應的中斷標誌位置1

導致p0ifg的值發生變化(不再是00了),這樣一旦發現有中斷產生就改變小燈的狀態。具體的試驗結果就是一按按鍵,小燈的狀態變化(不過說真的,這個中斷的反應有點靈敏,按得時間長就認為是第二次中斷了感覺,嘿嘿

CC2430基礎實驗 外部中斷

外部中斷實驗是使用兩個按鍵來翻轉led狀態,但這裡兩個按鍵不是做鍵盤用,二是產生中斷觸發訊號。p0ifg為p1口中斷標誌暫存器 ien1為中斷使能暫存器1。led管腳設定 即先全域性ea,然後p0中斷開啟,最後相應中斷位置開啟。p1inp 0x0c 有上拉 下拉 p2inp 0x40 選擇上拉 p1...

CC2430基礎 按鍵控制開關實驗

本實驗是用兩個按鍵分別控制小燈的亮滅。在這個實驗裡用到的暫存器分別是p0,p1,p0sel,p0dir,p1dir和p0inp。p0 p1 p0 p1口暫存器 p0sel p0功能選擇暫存器,主要是選擇相應位的功能 0,普通i o 1,外設功能 p0dir p1dir p0 p1口方向選擇暫存器,主...

CC2430 串列埠使用詳解

為了完成課題,最近下定決心學習cc2430。網上的資料很多,重複的部分不做過多的介紹,沒有的部分做一下少許的補充,希望對大家有用!建議各位使用更新的cc2530,該晶元為cc2430的替代版本 全部 如下,先看一下整體!標頭檔案 include hal.h include stdio.h 函式宣告 ...