【开发教程6】疯壳·ARM功能手机-中断实验教程
ARM功能手机
——疯壳·开发板系列
中断实验教程
图1
第一节中断硬件电路
将P12、P13配置为中断输入口,P12和P13已通过排针引出,如下图所示:
图2
第二节 中断
2.1 中断介绍
芯片内部有嵌套中断向量控制器(NVIC,Nested Vectored Interrupt Controller),支持24个中断,能够中断配置与处理异常代码。当发生一个中断请求时,自动执行对应的中断函数,不需要软件确定异常向量。中断可以有4个不同的可编程的优先级,NVIC自动处理嵌套中断。对于安全关键系统,有不可屏蔽中断(NMI,Non maskable interrupt)输入。
DA14580内部有一个键盘控制器,可以用于延时GPIO信号进入的时间。可以检测所有的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)。注意:因为中断触发方式为边沿触发,碰上之后再断开才有效。
更多完整学习资料和对应开源套件,请登陆官网:“疯壳”
如需定制开发,请通过官网“疯壳”网页底部的“联系我们”进行联系
【开发教程6】疯壳·ARM功能手机-中断实验教程相关推荐
- 【开发教程5】疯壳·ARM功能手机-串口实验教程
ARM功能手机 --疯壳·开发板系列 串口实验教程 图1 第一节串口硬件电路 串口通过USB口及手环下载调试线引出,连接MCU的P12与P13引脚,如下图所示: 图2 第二节 UART寄存器 2.1 ...
- 【开发教程1】疯壳·ARM功能手机-开发板上电教程
开发板上电教程 ARM功能手机 --疯壳·开发板系列 图1 硬件连接 做完全部的实验,需要有以下模块∶ WT 手机开发板(手机主控底板+手机电容屏模块+FPC 30P排线+GS ...
- 【开发教程2】疯壳·ARM功能手机-测试程序介绍
ARM功能手机 --疯壳·开发板系列 测试程序介绍 图1 内容简介 本文档主要介绍开发板上电之后的现象,以及图标对应的实验介绍.读者在看本文档时,应该已经看过< ...
- 【疯壳·ARM功能手机开发教程1】开发板上电教程
ARM功能手机 --疯壳·开发板系列 开发板上电教程 图1 硬件连接 做完全部的实验,需要有以下模块∶ WT 手机开发板(手机主控底板+手机电容屏模块+FPC 30P排线+GS ...
- 【开发教程3】疯壳·ARM功能手机-整板资源介绍
ARM功能手机 --疯壳·开发板系列 整板资源介绍 图1 1.主控MCU 主控MCU选用STM32F407ZGT6,为Contex-M4内核,集成FPU和DSP指令,内部有1M Flash,192 ...
- 【教程3】疯壳·ARM功能手机-整板资源介绍
ARM功能手机 --疯壳·开发板系列 整板资源介绍 图1 1.主控MCU 主控MCU选用STM32F407ZGT6,为Contex-M4内核,集成FPU和DSP指令,内部有1M Flash,192 ...
- 【建站系列教程】2.2、fiddler手机抓包教程
[建站系列教程]2.2.fiddler手机抓包教程 (全网最良心.实用教程) fiddler手机抓包原理 步骤摘要 详细步骤 1. 安装fiddler.修改配置 2. 电脑和手机连上同一个wifi 3 ...
- 【开源】整板资源介绍——疯壳·ARM双处理器开发板系列
目录 1.主控MCU 2.SRAM 3.摄像头接口 4.按键 5光明电阻 6.振动马达 7.SIM900A 8.充电芯片 9.USB接口 10.手机MIC 11.加速度传感器 12.耳机插孔 13.S ...
- 疯壳AI开源无人机中断(按键检测)
一.轻触按键 1.1轻触按键简介 轻触按键是众多按键中的一款产品,它其实相当于是一种电子开关,只要轻轻的按下按键就可以把开关接通,松开时把开关断开.轻触按键由于微动开关的特性以及体积小.质量轻的优势在 ...
- hal库开启中断关中断_「正点原子NANO STM32开发板资料连载」第十章 外部中断实验...
1)实验平台:ALIENTEK NANO STM32F411 V1开发板 2)摘自<正点原子STM32F4 开发指南(HAL 库版>关注官方微信号公众号,获取更多资料:正点原子 第十章 外 ...
最新文章
- SQL Server 2005中的分析服务功能[转]
- jquery中ajax请求后台数据成功后既不执行success也不执行error解决方法
- 2、 db、tables_priv、columns_priv和procs_priv权限表
- 详解XStream别名
- declspec(dllexport)与_declspec(dllimport) 异同
- junit测试找不到数据库_将数据库日志添加到JUnit3
- SQL2K数据库开发二十一之索引操作创建索引
- 台式机dp接口_2K至4K显示器性价比线材选购攻略,毕亚兹 DP高清线入手
- 用Unity简单实现第三人称人物的移动和转向
- 如何访问嵌套母版页中的控件
- 使用ActivityGroup管理Activity
- QuartZ 配置第一次不执行后续正常执行
- python进行英语文献翻译
- Hive之同比环比的计算
- postman接口测试之断言+参数化
- [ChneChen的随笔]中国文化清单上我们还记得什么
- 在word中同时输入上下标设置
- python爬取网易云音乐飙升榜音乐_python爬取网易云音乐热歌榜实例代码
- 短视频无尽流前端开发指南
- 【前端面试题】前端基础 | 八股文 | HTTP网络 | Vue | React