国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

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

【開發教程9】ARM功能手機-中斷實驗教程

[復制鏈接]
跳轉到指定樓層
樓主
發表于 2022-6-21 18:31:29 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
中斷實驗教程
——瘋殼·開發板系列





    圖1

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


   
    圖2


    第二節 中斷
    2.1 中斷介紹
        芯片內部有嵌套中斷向量控制器(NVIC,Nested Vectored Interrupt Controller),支持24個中斷,能夠中斷配置與處理異常代碼。當發生一個中斷請求時,自動執行對應的中斷函數,不需要軟件確定異常向量。中斷可以有4個不同的可編程的優先級,NVIC自動處理嵌套中斷。對于安全關鍵系統,有不可屏蔽中斷(NMI,Non maskable interrupt)輸入。
    DA14580內部有一個鍵盤控制器,可以用于延時GPIO信號進入的時間?梢詸z測所有的I/O口的電平變化。當檢測到信號時,可以產生中斷(KEYBR_IRQ)。同時,另外有5個中斷(GPIOn_IRQ)可以被GPIO口觸發。
    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延時寄存器

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

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


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

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

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

   
    圖13
    7位:使能P37產生鍵盤中斷;
    6位:使能P36產生鍵盤中斷;
    5位:使能P35產生鍵盤中斷;
    4位:使能P34產生鍵盤中斷;
    3位:使能P33產生鍵盤中斷;
    2位:使能P32產生鍵盤中斷;
    1位:使能P31產生鍵盤中斷;
    0位:使能P30產生鍵盤中斷。
    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的中斷源,延時20毫秒,高電平產生中斷,等待按鍵釋放,如下所示:
    GPIO_IRQ1_IN_SEL_REG =0x0003;
    GPIO_DEBOUNCE_REG =0x0114;
    GPIO_INT_LEVEL_CTRL_REG =0x0202;
    GPIO中斷1配置完成,在GPIO中斷1的中斷函數中需要復位中斷,需要添加語句GPIO_RESET_IRQ_REG =0x0002;這樣才能進行下一次中斷。
    例2:P03,P12,P28為KBRD中斷源,低電平有效,釋放不產生中斷,不重復觸發中斷,延時30毫秒,如下所示:
    KBRD_IRQ_IN_SEL0_REG =0x4008;
    KBRD_IRQ_IN_SEL1_REG =0x1100;
    GPIO_DEBOUNCE_REG =0x201e;
    鍵盤中斷配置完成,在鍵盤中斷函數中需要復位中斷,需要添加語句GPIO_RESET_IRQ_REG =0x0020;這樣才能進行下一次中斷。


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

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

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

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



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



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


3.0.png (9.16 KB)

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

本版積分規則

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲另类色国产综合| 四虎色| 亚洲欧美精品伊人久久| 亚洲伊人成人网| 欧美成人久久| 性8sex亚洲区入口| 日本三级11k影院在线| 一级毛片 在线播放| 日本精品中文字幕在线播放| 日本高清在线播放| 亚洲黄色高清| 日本黄色免费观看| 亚洲欧美日韩一区成人| 香港黄页亚洲一级| 三及片在线观看| 欧美精品黄页免费高清在线| 日韩一级在线播放| 瑟瑟综合| 日韩经典视频| 欧洲色综合| 午夜国产精品久久久久| 日本一区二区三区在线 视频| 人人爱天天操| 日韩成人动漫在线观看| 亚洲欧美日韩综合精品网| 日本精品久久久一区二区三区| 四虎影库在线播放| 日韩欧美国产中文| 亚洲美女在线播放| 午夜国产| 四虎黄色影院| 亚洲视频在线免费播放| 亚洲性xx| 日韩亚洲欧美综合一区二区三区| 日本小网站| 亚洲欧美另类自拍第一页| 日韩伦理网在线视频| 欧美日韩国产亚洲综合不卡| 亚洲成a人片在线观看导航| 人人射人人舔| 欧美第四色|