查看: 1615|回復: 0
打印 上一主題 下一主題

【教程6】瘋殼·ARM功能手機-中斷實(shí)驗教程

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2022-8-10 13:51:39 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: ARM , 功能手機 , 中斷 , 實(shí)驗教程 , NVIC
ARM功能手機
——瘋殼·開(kāi)發(fā)板系列
中斷實(shí)驗教程   




    圖1

    第一節中斷硬件電路
    將P12、P13配置為中斷輸入口,P12和P13已通過(guò)排針引出,如下圖所示:




    圖2


    第二節 中斷
    2.1 中斷介紹
        芯片內部有嵌套中斷向量控制器(NVIC,Nested Vectored Interrupt Controller),支持24個(gè)中斷,能夠中斷配置與處理異常代碼。當發(fā)生一個(gè)中斷請求時(shí),自動(dòng)執行對應的中斷函數,不需要軟件確定異常向量。中斷可以有4個(gè)不同的可編程的優(yōu)先級,NVIC自動(dòng)處理嵌套中斷。對于安全關(guān)鍵系統,有不可屏蔽中斷(NMI,Non maskable interrupt)輸入。
    DA14580內部有一個(gè)鍵盤(pán)控制器,可以用于延時(shí)GPIO信號進(jìn)入的時(shí)間?梢詸z測所有的I/O口的電平變化。當檢測到信號時(shí),可以產(chǎn)生中斷(KEYBR_IRQ)。同時(shí),另外有5個(gè)中斷(GPIOn_IRQ)可以被GPIO口觸發(fā)。
    2.2 寄存器介紹
    2.2.1 GPIO_IRQ0中斷源選擇寄存器


   
    圖3
    15:6位:保留不使用;
    5:0位:中斷源選擇,1~32分別對應選擇P00~P37,其它值不選擇任何引腳;
    2.2.2 GPIO_IRQ1中斷源選擇寄存器

   
    圖4
    15:6位:保留不使用;
    5:0位:中斷源選擇,1~32分別對應選擇P00~P37,其它值不選擇任何引腳;
    2.2.3 GPIO_IRQ2中斷源選擇寄存器

   
    圖5
    15:6位:保留不使用;
    5:0位:中斷源選擇,1~32分別對應選擇P00~P37,其它值不選擇任何引腳;
    4.2.4 GPIO_IRQ3中斷源選擇寄存器

   
    圖6
    15:6位:保留不使用;
    5:0位:中斷源選擇,1~32分別對應選擇P00~P37,其它值不選擇任何引腳;
    2.2.5 GPIO_IRQ4中斷源選擇寄存器

   
    圖7
    5:6位:保留不使用;
    5:0位:中斷源選擇,1~32分別對應選擇P00~P37,其它值不選擇任何引腳;
    2.2.6 GPIO延時(shí)寄存器

   
    圖8
    15:14位:保留不使用;
    13位:使能鍵盤(pán)接口延時(shí)計數;
    12位:使能GPIO IRQ4延時(shí)計數;
    11位:使能GPIO IRQ3延時(shí)計數;
    10位:使能GPIO IRQ2延時(shí)計數;
    9位:使能GPIO IRQ1延時(shí)計數;
    8位:使能GPIO IRQ0延時(shí)計數;
    7:6位:保留不使用;
    5:0位:延時(shí)值,為N毫秒。
    2.2.7 GPIO中斷復位寄存器

   
    圖9
    15:6位:保留不使用;
    5位:對該位寫(xiě)1,則復位KBRD中斷,讀取返回0;
    4位:對該位寫(xiě)1,則復位GPIO4中斷,讀取返回0;
    3位:對該位寫(xiě)1,則復位GPIO3中斷,讀取返回0;
    4位:對該位寫(xiě)1,則復位GPIO2中斷,讀取返回0;
    1位:對該位寫(xiě)1,則復位GPIO1中斷,讀取返回0;
    0位:對該位寫(xiě)1,則復位GPIO0中斷,讀取返回0。
    2.2.8 GPIO中斷電平控制寄存器


   
    圖10
    15:14位:保留不使用;
    12位:在復位GPIO中斷4時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì )立刻產(chǎn)生;
    11位:在復位GPIO中斷3時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì )立刻產(chǎn)生;
    10位:在復位GPIO中斷2時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì )立刻產(chǎn)生;
    9位:在復位GPIO中斷1時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì )立刻產(chǎn)生;
    8位:在復位GPIO中斷0時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì )立刻產(chǎn)生;
    7:6位:保留不使用;
    4位:為0則表示輸入高電平產(chǎn)生GPIO中斷4,為1則表示輸入低電平產(chǎn)生GPIO中斷4;
    3位:為0則表示輸入高電平產(chǎn)生GPIO中斷3,為1則表示輸入低電平產(chǎn)生GPIO中斷3;
    2位:為0則表示輸入高電平產(chǎn)生GPIO中斷2,為1則表示輸入低電平產(chǎn)生GPIO中斷2;
    1位:為0則表示輸入高電平產(chǎn)生GPIO中斷1,為1則表示輸入低電平產(chǎn)生GPIO中斷1;
    0位:為0則表示輸入高電平產(chǎn)生GPIO中斷0,為1則表示輸入低電平產(chǎn)生GPIO中斷0;
    注:數據手冊中該寄存器中沒(méi)有標注13位和5位,可能是勘誤。
    2.2.9 鍵盤(pán)中斷源選擇寄存器0

   
    圖11
    15位:為0則表示按鍵釋放不產(chǎn)生中斷,為1表示按鍵釋放也產(chǎn)生中斷;
    14位:為0則表示輸入高電平產(chǎn)生KBRD中斷,為1則表示輸入低電平產(chǎn)生KBRD中斷;
    13:8位:當按鍵按下,在不等于0的規定時(shí)間之后,自動(dòng)產(chǎn)生重復按鍵中斷,為0則禁止定時(shí)器;
    7位:使能P07產(chǎn)生鍵盤(pán)中斷;
    6位:使能P06產(chǎn)生鍵盤(pán)中斷;
    5位:使能P05產(chǎn)生鍵盤(pán)中斷;
    4位:使能P04產(chǎn)生鍵盤(pán)中斷;
    3位:使能P03產(chǎn)生鍵盤(pán)中斷;
    2位:使能P02產(chǎn)生鍵盤(pán)中斷;
    1位:使能P01產(chǎn)生鍵盤(pán)中斷;
    0位:使能P00產(chǎn)生鍵盤(pán)中斷。
    2.2.10 鍵盤(pán)中斷源選擇寄存器1

   
    圖12
    15位:使能P15產(chǎn)生鍵盤(pán)中斷;
    14位:使能P14產(chǎn)生鍵盤(pán)中斷;
    13位:使能P13產(chǎn)生鍵盤(pán)中斷;
    12位:使能P12產(chǎn)生鍵盤(pán)中斷;
    11位:使能P11產(chǎn)生鍵盤(pán)中斷;
    10位:使能P10產(chǎn)生鍵盤(pán)中斷;
    9位:使能P29產(chǎn)生鍵盤(pán)中斷;
    8位:使能P28產(chǎn)生鍵盤(pán)中斷。
    7位:使能P27產(chǎn)生鍵盤(pán)中斷;
    6位:使能P26產(chǎn)生鍵盤(pán)中斷;
    5位:使能P25產(chǎn)生鍵盤(pán)中斷;
    4位:使能P24產(chǎn)生鍵盤(pán)中斷;
    3位:使能P23產(chǎn)生鍵盤(pán)中斷;
    2位:使能P22產(chǎn)生鍵盤(pán)中斷;
    1位:使能P21產(chǎn)生鍵盤(pán)中斷;
    0位:使能P20產(chǎn)生鍵盤(pán)中斷。
    2.2.11 鍵盤(pán)中斷源選擇寄存器2

   
    圖13
    7位:使能P37產(chǎn)生鍵盤(pán)中斷;
    6位:使能P36產(chǎn)生鍵盤(pán)中斷;
    5位:使能P35產(chǎn)生鍵盤(pán)中斷;
    4位:使能P34產(chǎn)生鍵盤(pán)中斷;
    3位:使能P33產(chǎn)生鍵盤(pán)中斷;
    2位:使能P32產(chǎn)生鍵盤(pán)中斷;
    1位:使能P31產(chǎn)生鍵盤(pán)中斷;
    0位:使能P30產(chǎn)生鍵盤(pán)中斷。
    2.3 寄存器配置講解
    #define GPIO_IRQ0_IN_SEL_REG        (* ( volatile uint16*) 0x50001400)
    #define GPIO_IRQ1_IN_SEL_REG        (* ( volatile uint16*) 0x50001402)
    #define GPIO_IRQ2_IN_SEL_REG        (* ( volatile uint16*) 0x50001404)
    #define GPIO_IRQ3_IN_SEL_REG        (* ( volatile uint16*) 0x50001406)
    #define GPIO_IRQ4_IN_SEL_REG        (* ( volatile uint16*) 0x50001408)
    #define GPIO_DEBOUNCE_REG         (* ( volatile uint16*) 0x5000140C)
    #define GPIO_RESET_IRQ_REG          (* ( volatile uint16*) 0x5000140E)
    #define GPIO_INT_LEVEL_CTRL_REG     (* ( volatile uint16*) 0x50001410)
    #define KBRD_IRQ_IN_SEL0_REG        (* ( volatile uint16*) 0x50001412)
    #define KBRD_IRQ_IN_SEL1_REG        (* ( volatile uint16*) 0x50001414)
    #define KBRD_IRQ_IN_SEL2_REG         (* ( volatile uint16*) 0x50001416)
    例1:P02為GPIO中斷1的中斷源,延時(shí)20毫秒,高電平產(chǎn)生中斷,等待按鍵釋放,如下所示:
    GPIO_IRQ1_IN_SEL_REG =0x0003;
    GPIO_DEBOUNCE_REG =0x0114;
    GPIO_INT_LEVEL_CTRL_REG =0x0202;
    GPIO中斷1配置完成,在GPIO中斷1的中斷函數中需要復位中斷,需要添加語(yǔ)句GPIO_RESET_IRQ_REG =0x0002;這樣才能進(jìn)行下一次中斷。
    例2:P03,P12,P28為KBRD中斷源,低電平有效,釋放不產(chǎn)生中斷,不重復觸發(fā)中斷,延時(shí)30毫秒,如下所示:
    KBRD_IRQ_IN_SEL0_REG =0x4008;
    KBRD_IRQ_IN_SEL1_REG =0x1100;
    GPIO_DEBOUNCE_REG =0x201e;
    鍵盤(pán)中斷配置完成,在鍵盤(pán)中斷函數中需要復位中斷,需要添加語(yǔ)句GPIO_RESET_IRQ_REG =0x0020;這樣才能進(jìn)行下一次中斷。


    第三節 中斷實(shí)驗
    實(shí)驗需要使用的模塊有:手機開(kāi)發(fā)板底板,Jlink調試工具,杜邦線(xiàn)、3.7V鋰電池或Mocro USB線(xiàn)。
    使用JLINK通過(guò)杜邦線(xiàn)連接手機藍牙位于手機主控底板,連接方式如下:
    (1)JLINK一端只需要使用杜邦線(xiàn)連接JLINK的SWC、SWD、GND三個(gè)引腳,如下圖所示:

   
    圖14
    (2)手機藍牙一端需要使用杜邦線(xiàn)連接上方右側的J3三個(gè)引腳,與JLINK的連接引腳一一對應,分別為SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下圖所示:

   
    圖15
    將JLINK插上電腦的USB接口,連接好之后給手機主控底板供電,詳細的介紹可以參考《如何上電》教程,路徑為:..\WT_Mobile\0.從這里開(kāi)始\0.開(kāi)機測試。
    打開(kāi)中斷實(shí)驗的Keil工程blinky.uvproj,位于目錄:
    ..\WT_Mobile\1.初級教程\DA14580\4_初級_中斷\projects\target_apps\peripheral_examples\interrupt\Keil_5,如下圖所示:

   
    圖16
    在KEIL中編譯源代碼,點(diǎn)擊DEBUG,然后點(diǎn)擊全速運行,如下圖所示:



   
    圖17
    全速運行之后,將杜邦線(xiàn)的一頭接在3.3V引腳上,另一頭碰一下P13引腳,即可進(jìn)入P13對應的外部中斷,執行中斷內的程序(點(diǎn)亮LED),碰一下P12引腳,則進(jìn)入P12對應的外部中斷,執行中斷中的程序(關(guān)閉LED)。注意:因為中斷觸發(fā)方式為邊沿觸發(fā),碰上之后再斷開(kāi)才有效。


如需定制開(kāi)發(fā),請通過(guò)官網(wǎng)“瘋殼”網(wǎng)頁(yè)底部的“聯(lián)系我們”進(jìn)行聯(lián)系   

    文件下載請點(diǎn)擊: 中斷教程.pdf (1.09 MB)


您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页