色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x
查看: 2115|回復(fù): 0
打印 上一主題 下一主題

【開發(fā)教程9】ARM功能手機(jī)-中斷實(shí)驗(yàn)教程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2022-6-21 18:31:29 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
中斷實(shí)驗(yàn)教程
——瘋殼·開發(fā)板系列





    圖1

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


   
    圖2


    第二節(jié) 中斷
    2.1 中斷介紹
        芯片內(nèi)部有嵌套中斷向量控制器(NVIC,Nested Vectored Interrupt Controller),支持24個(gè)中斷,能夠中斷配置與處理異常代碼。當(dāng)發(fā)生一個(gè)中斷請(qǐng)求時(shí),自動(dòng)執(zhí)行對(duì)應(yīng)的中斷函數(shù),不需要軟件確定異常向量。中斷可以有4個(gè)不同的可編程的優(yōu)先級(jí),NVIC自動(dòng)處理嵌套中斷。對(duì)于安全關(guān)鍵系統(tǒng),有不可屏蔽中斷(NMI,Non maskable interrupt)輸入。
    DA14580內(nèi)部有一個(gè)鍵盤控制器,可以用于延時(shí)GPIO信號(hào)進(jìn)入的時(shí)間?梢詸z測(cè)所有的I/O口的電平變化。當(dāng)檢測(cè)到信號(hà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分別對(duì)應(yīng)選擇P00~P37,其它值不選擇任何引腳;
    2.2.2 GPIO_IRQ1中斷源選擇寄存器

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

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

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

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

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

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


   
    圖10
    15:14位:保留不使用;
    12位:在復(fù)位GPIO中斷4時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì)立刻產(chǎn)生;
    11位:在復(fù)位GPIO中斷3時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì)立刻產(chǎn)生;
    10位:在復(fù)位GPIO中斷2時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì)立刻產(chǎn)生;
    9位:在復(fù)位GPIO中斷1時(shí)不需要等待按鍵釋放,所以一個(gè)新的中斷會(huì)立刻產(chǎn)生;
    8位:在復(fù)位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;
    注:數(shù)據(jù)手冊(cè)中該寄存器中沒有標(biāo)注13位和5位,可能是勘誤。
    2.2.9 鍵盤中斷源選擇寄存器0

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

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

   
    圖13
    7位:使能P37產(chǎn)生鍵盤中斷;
    6位:使能P36產(chǎn)生鍵盤中斷;
    5位:使能P35產(chǎn)生鍵盤中斷;
    4位:使能P34產(chǎn)生鍵盤中斷;
    3位:使能P33產(chǎn)生鍵盤中斷;
    2位:使能P32產(chǎn)生鍵盤中斷;
    1位:使能P31產(chǎn)生鍵盤中斷;
    0位:使能P30產(chǎ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的中斷函數(shù)中需要復(fù)位中斷,需要添加語(yǔ)句GPIO_RESET_IRQ_REG =0x0002;這樣才能進(jìn)行下一次中斷。
    例2:P03,P12,P28為KBRD中斷源,低電平有效,釋放不產(chǎn)生中斷,不重復(fù)觸發(fā)中斷,延時(shí)30毫秒,如下所示:
    KBRD_IRQ_IN_SEL0_REG =0x4008;
    KBRD_IRQ_IN_SEL1_REG =0x1100;
    GPIO_DEBOUNCE_REG =0x201e;
    鍵盤中斷配置完成,在鍵盤中斷函數(shù)中需要復(fù)位中斷,需要添加語(yǔ)句GPIO_RESET_IRQ_REG =0x0020;這樣才能進(jìn)行下一次中斷。


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

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

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

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



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



    配套資料:http://www.fengke.club
    套件地址:http://shop115904315.taobao.com/
    文件下載請(qǐng)點(diǎn)擊: 中斷教程.pdf (1.09 MB)


3.0.png (9.16 KB)

3.0.png

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表