日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TQ210——按键(中断查询法)

發布時間:2023/12/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TQ210——按键(中断查询法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

TQ210——按鍵


?????? 底板上有8個獨立按鍵,可分別使用查詢法和中斷法控制按鍵。通過原理圖可知:按鍵按下,GPIO檢測到低電平,松開時高電平。

? ? ? ?直接查詢法程序的實現簡單,但是效率很低,CPU一直在查詢,啥事也干不了。中斷查詢法程序的實現較為復雜,但是效率高。

GPIO寄存器(GPH0CONGPH0DAT),外部中斷寄存器(EXT_INT_0_CONEXT_INT_0_MASK),中斷通道選擇(VIC0INTSELECT),中斷使能(VIC0INTENABLE),中斷向量地址(VIC0VECTADDR0VIC0VECTADDR1),清除中斷向量(EXT_INT_0_PEND

.global _start /*聲明一個全局的標號 */ .global key_isr _start:/* 設置棧,以調用c函數 */ldr sp, =0x40000000 /* 開總中斷 */mrs r0,cpsrbic r0,r0, #0x00000080 /* 清楚第7位,IRQ中斷禁止位,寫0使能IRQ */msr cpsr,r0bl main /* 跳轉到C函數去執行 */halt:b haltkey_isr:/* 計算返回地址:PC的值等于當前執行的地址+8,** 當CPU正要執行某條指令時(還未執行),被中斷,** 這是這條剛要執行的指令的地址剛好=PC-4 */sub lr,lr, #4stmfd sp!,{r0-r12, lr} /* 保護現場 */bl key_handle/* 恢復現場 */ldmfd sp!,{r0-r12, pc}^ /* ^表示把spsr恢復到cpsr */

#define GPC0CON *((volatileunsigned int *)0xE0200060) #define GPC0DAT *((volatileunsigned int *)0xE0200064)#define GPH0CON *((volatileunsigned int *)0xE0200C00) #define GPH0DAT *((volatileunsigned int *)0xE0200C04)#define EXT_INT_0_CON *((volatileunsigned int *)0xE0200E00) #define EXT_INT_0_MASK *((volatileunsigned int *)0xE0200F00)#define VIC0INTSELECT *((volatileunsigned int *)0xF200000C) #define VIC0INTENABLE *((volatileunsigned int *)0xF2000010)#define VIC0VECTADDR0 *((volatileunsigned int *)0xF2000100) #define VIC0VECTADDR1 *((volatileunsigned int *)0xF2000104)#define VIC0ADDRESS *((volatile unsigned int*)0xF2000F00)#define EXT_INT_0_PEND *((volatileunsigned int *)0xE0200F40)extern void key_isr(void);void key_handle() { volatileunsigned char key_code = EXT_INT_0_PEND & 0x03;VIC0ADDRESS= 0; /* 清中斷向量寄存器 */EXT_INT_0_PEND&= ~0x03; /* 清中斷掛起寄存器 */if(key_code == 1) /* key1 */{GPC0DAT&= ~(0x01 << 3); /* toggleLED1 */GPC0DAT|= 1 << 3; /* toggle LED1 */} else if(key_code == 2) /* key2 */{GPC0DAT&= ~(0x01 << 4); /* toggleLED1 */GPC0DAT|= 1 << 4; /* toggle LED1 */}}int main() {GPC0CON&= ~(0xFF << 12);GPC0CON |=0x11 << 12; /*配置GPC0_3和GPC0_4為輸出:LED1和LED2 */GPH0CON |=0xFF << 0; /*配置GPH0_0和GPH0_1為外部中斷:key1和key2 */EXT_INT_0_CON&= ~(0xFF << 0);EXT_INT_0_CON|= 2 | (2 << 4); /*配置EXT_INT[0]和EXT_INT[1]為下降沿觸發 */EXT_INT_0_MASK&= ~3; /* 取消屏蔽外部中斷EXT_INT[0]和EXT_INT[1] */VIC0INTSELECT&= ~3; /*選擇外部中斷EXT_INT[0]和外部中斷EXT_INT[1]為IRQ類型的中斷 */VIC0INTENABLE|= 3; /*使能外部中斷EXT_INT[0]和EXT_INT[1] *//* 當EXT_INT[0]觸發中斷,即用戶按下key1時,** CPU就會自動的將VIC0VECTADDR0的值賦給VIC0ADDRESS并跳轉到這個地址去執 */VIC0VECTADDR0= (unsigned int)key_isr;VIC0VECTADDR1= (unsigned int)key_isr;while (1);return 0; }? ? ? 裸機編程編譯的時候一定要加16字節的頭信息,編譯生成的bin文件通過SD卡或者TFTP的方法下載到開發板。

總結

以上是生活随笔為你收集整理的TQ210——按键(中断查询法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91吃瓜今日吃瓜入口 | 大尺度av| 亚色综合| 人妻在线一区二区三区 | 91av精品 | 黄色污在线观看 | 日本黄色大片免费看 | 天堂av网站 | 夜夜嗨一区二区三区 | 国模吧一区二区三区 | 日韩不卡在线观看 | 国产精品白嫩极品美女视频 | 国内精品久| av国产在线观看 | 手机在线毛片 | a在线v| 欧美com | 劲爆欧美第一页 | 97人妻精品一区二区三区软件 | 日韩精品人妻中文字幕有码 | 国产精品偷乱一区二区三区 | 一级黄色在线 | 少妇搡bbbb搡bbb搡小说 | 91精品视频一区 | 人人爽久久涩噜噜噜网站 | 成人国产在线观看 | 国产性猛交xxxⅹ交酡全过程 | 天天天天干| 伊人久久一区二区 | 人人妻人人爽人人澡人人精品 | 久久大尺度 | 国产欧美一区二区三区四区 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 一级黄色片国产 | 日韩第一页 | 一级黄色在线播放 | 亚洲爱情岛论坛永久 | 天天躁夜夜躁狠狠是什么心态 | 亚洲综合网在线 | 国产偷v国产偷v亚洲高清 | 综合av第一页| 精品久久ai | 欧美系列在线观看 | 污网站在线观看免费 | 五月天婷婷丁香 | 国产情侣第一页 | xxxxav| 国产无遮挡18禁无码网站不卡 | 欧美人吸奶水吃奶水 | china国模大尺度pics | 日韩精品黄 | 婷婷午夜精品久久久久久性色av | 中文久草| 久久国产剧情 | 贝利弗山的秘密1985版免费观看 | www精品| 亚洲精品爱爱 | 91在线公开视频 | 久久黑丝 | av东方在线| 91大神精品在线 | 国产精品久久久一区二区 | 免费av在 | 欧色丰满女同hd | 四虎首页| 第一页在线 | 成 人 免费 黄 色 | 男男做的视频 | 日韩成人精品在线观看 | 午夜特级毛片 | 国产伦理一区二区三区 | 日本视频在线 | 91av在线免费| 国产精品精品久久久 | 黄色网一级片 | 成人av地址 | 久久亚洲精精品中文字幕早川悠里 | 日本a v在线播放 | 中文字幕三级电影 | 免费成人在线观看视频 | 欧美性猛交99久久久久99按摩 | 草草影院最新 | 草视频在线观看 | 欧美在线视频不卡 | 日本在线播放视频 | 麻豆国产尤物av尤物在线观看 | 亚洲在线播放 | 色妞视频| 中文字幕中文在线 | 国产一级片一区二区 | 不卡视频在线观看免费 | 国产在线视频第一页 | av一区二区不卡 | 黄色av电影在线 | 日韩欧美三级在线观看 | 国产手机精品视频 | aaa在线播放| 精品久久久国产 | 2021av在线 |