ARM s5p6818按鍵中斷試驗

2021-10-08 02:54:00 字數 3434 閱讀 8819

步驟:設定gpiob引腳

1、將gpiob8引腳設定為gpio功能

暫存器:gpiob.altfn0

功能:選擇gpiob8引腳的函式

數值:00 = 函式0,01 = 函式1,10 = 函式2,11 = 函式2

位:[17:16]

設定為:通過晶元手冊查閱,要將位設定為00

2、將gpiob8引腳設定為輸入功能

暫存器:gpiob.outenb

功能:指定gpiob的第幾個引腳為輸入或輸出模式

數值:0 = 輸入模式,1 = 輸出模式

位:[31:0]

設定為:要將第8位設定為0

3、設定gpiob8引腳的中斷觸發方式:下降沿觸發

暫存器:gpiob.detmode0

功能:指定gpiob處於輸入模式的檢測模式,高的兩位為[17:16],需要跟gpiob.detmodeex暫存器配合使用,低的一位為[8]

數值:000 = 低電平,001 = 高電平,010 = 下降沿,011 = 上公升沿,100 = 兩邊沿,101 to 111 = 保留

位:[17:16]

設定為:要將第其設定為01

暫存器:gpiob.detmodeex

功能:處於輸入模式的檢測模式

數值:看gpiob.detmode0的數值

位:[8]

設定為:要將第8位設定為0

4、設定gpiob8引腳中斷使能暫存器

暫存器:gpiob.intenb

功能:指定當出現gpiob使用中斷事件發生時gpiob.detmode可以使用

數值:0 = 禁用,1 = 使能

位:[31:0]

設定為:要將第8位設定為1

5、設定gpiob8引腳的檢測使能暫存器

暫存器:gpiob.detenb

功能:決定使用gpiob.pad的檢測模式

數值:0 = 禁用,1 = 使能

位:[31:0]

設定為:要將第8位設定為1

6、事件檢測暫存器

暫存器:gpiob.det

功能:中斷掛起的標誌位,當讀gpiob引腳對應的位為1,表示中斷發生。在相應的位寫1,可以清除中斷掛起標誌位,可以接收下一次中斷

位:[31:0]

設定為:判斷第8位是否為1

設定gicd分配器層

1、設定gicd層全域性中斷使能暫存器

暫存器:gicd_ctrl

注意:預設使用組0暫存器,也可以設定組1暫存器

功能:全域性使能,**組0相應的中斷

數值:0 = 組0中斷未被**,1 = 組0中斷**,服從優先順序規則

位:[0]

設定為:要將第0位,即組0設定為1

2、設定gicd層86號對應的中斷使能暫存器

理解:為什麼要設定第86號?因為gpiob的中斷源的中斷號為54號,這個54號是spi(共享外圍中斷)裡的,實際上還要加上16位ppi(私有外圍中斷)和16位sgi(軟體生成中斷)所以54+16+16 = 86

暫存器:gicd_isenabler.isenabler2

功能:對於spi和ppi,每個位都控制著乙個中斷號,從分配器**到cpu介面

數值:讀:0 = 禁用**相應的中斷號,1 = 使能**相應的中斷號;寫:0 = 沒有效果,1 = 允許**相應的中斷

位:[31:0]

設定為:要將第2個暫存器的第22位設定為1,gicd_isenabler2[22] = 0b1;

注意:因為一共有160個中斷號,每個暫存器可以管理32個中斷號,所以需要5個暫存器管理,此時是86號中斷號,所以86 / 32 = 2…22,由此可以得出是控制該中斷號的暫存器為第2個暫存器的第22位

3、設定訊號中斷優先順序暫存器

理解:gicd_ipriorityrn這個暫存器中每8位管理著乙個中斷號,因為每個中斷號佔8位,乙個暫存器是32位,所以乙個暫存器可以管理4個中斷號,一共160個中斷號,所以需要40個暫存器管理所有的中斷號

暫存器:gicd_ipriorityrn

功能:設定中斷訊號的優先順序,設定的值越小優先順序越高

數值:可以設定1~255之間的數,如果設定為50,那麼該暫存器51-255之間優先順序的中斷就會被忽略掉

位:[31:0]

設定為:要將第21個暫存器的第[23-16]位設定為1-255,暫且設定為120,gicd_ipriorityr21[23:16] = 120;

注意:因為一共有40個暫存器,所以每個暫存器可以管理4個中斷,此時是86號中斷號,所以86 / 4 = 21…2,由此可以得出是控制該中斷優先順序的暫存器為第21個暫存器的第2 * 8 = 16位,乙個中斷號有8位,所以要設定第[16:23]位的優先級數是120

4、設定中斷目標分配暫存器

暫存器:gicd_itargetsrn

功能:cpu的系統編號從0開始,要使用哪乙個cpu就將第幾位設定為1

位:[31:0]

設定為:要將第21個暫存器的第[23-16]位設定為1,這表示,該中斷使用第0個cpu,gicd_itargetsrn21[23:16] = 0x1

5、清除gicd層中斷掛起標誌位

暫存器:gicd_icpender.icpendern

注意:160個中斷需要5個暫存器,每個暫存器管理32個中斷,所以86 / 32 = 2…22,所以只需要設定第2個暫存器的第22位為1即可

功能:中斷號對應的位置1,表示清除對應的中斷掛起標誌位

數值:0 = 沒有影響,1 = 清除

位:[31:0]

設定為:要將第2個暫存器的第22位為1即可,gicd_icpender2[22] = 0b1;

設定gicc分配器層

1、設定gicc層中斷全域性使能暫存器

暫存器:gicc_ctrl

功能:使能組0中斷由cpu介面連線到處理器裡面

數值:0 = 禁用,1 = 使能

位:[0]

設定為:要將第0位設定為1

2、設定gicc層中斷遮蔽暫存器

暫存器:gicc_pmr

功能:cpu介面的優先順序遮蔽級,只有中斷的優先順序高於這個欄位的值,介面才不會被過濾掉這個中斷訊號

數值:1-255

位:[7:0]

設定為:設定為255

3、獲取中斷號

暫存器:gicc_iar

功能:獲取中斷號

位:[9:0]

設定為:irq_num = gicc_iar & 0x3ff:

4、清除gicc層中斷號

暫存器:gicc_eoir

功能:將處理完的中斷號寫到這個暫存器中就可以清除中斷

數值:1-255

位:[9:0]

設定為:中斷號

p5 主流框架。

mvc開發模式。就是 首先介面html檔案,然後系統預設通過方法呼叫其控制器controller中的方法。一般控制器的名稱和html的資料夾名字相同。然後控制器裡面寫一些方法跳轉,轉到對應的logic層。logic裡面主要寫的就是方法。之後logic裡面例項化modal類。modal的名字對應的就是...

CSS樣式 入門學習p5

where there is a will,there is a way.3.2 text decoration 文字修飾屬性 underline 下劃線。overline 上劃線。line through 刪除線。blink 閃爍。none 無任何修飾。eg p.through 4 css屬性 設...

PMP 5P複習計畫

step1 5 一共5個階段 重點是 step3 step1看完headfirst 意義 初步入門 大致了解 5個過程 10大知識領域 建議此階段內容的學習至少在10月初完成,如果打算在12月報名考試 2 pmp 尚德 對於計算題講解很到位 step1 目的是更好理解pmp,以便在下面的學習中會比較...