目录

第一节 中断硬件电路

第二节 中断

2.1 中断介绍

2.2 寄存器介绍

2.2.1 GPIO_IRQ0中断源选择寄存器

2.2.2 GPIO_IRQ1中断源选择寄存器

2.2.3 GPIO_IRQ2中断源选择寄存器

4.2.4 GPIO_IRQ3中断源选择寄存器

2.2.5 GPIO_IRQ4中断源选择寄存器

2.2.6 GPIO延时寄存器

2.2.7 GPIO中断复位寄存器

2.2.8 GPIO中断电平控制寄存器

2.2.9 键盘中断源选择寄存器0

2.2.10 键盘中断源选择寄存器1

2.2.11 键盘中断源选择寄存器2

2.3 寄存器配置讲解

第三节 中断实验

第一节 中断硬件电路

将P12、P13配置为中断输入口,P12和P13已通过排针引出,如下图所示:

第二节 中断

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中断源选择寄存器

15:6位:保留不使用;

5:0位:中断源选择,1~32分别对应选择P00~P37,其它值不选择任何引脚;

2.2.2 GPIO_IRQ1中断源选择寄存器

15:6位:保留不使用;

5:0位:中断源选择,1~32分别对应选择P00~P37,其它值不选择任何引脚;

2.2.3 GPIO_IRQ2中断源选择寄存器

15:6位:保留不使用;

5:0位:中断源选择,1~32分别对应选择P00~P37,其它值不选择任何引脚;

4.2.4 GPIO_IRQ3中断源选择寄存器

15:6位:保留不使用;

5:0位:中断源选择,1~32分别对应选择P00~P37,其它值不选择任何引脚;

2.2.5 GPIO_IRQ4中断源选择寄存器

15:6位:保留不使用;

5:0位:中断源选择,1~32分别对应选择P00~P37,其它值不选择任何引脚;

2.2.6 GPIO延时寄存器

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中断复位寄存器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中断电平控制寄存器

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

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

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

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三个引脚,如下图所示:
  1. 手机蓝牙一端需要使用杜邦线连接上方右侧的J3三个引脚,与JLINK的连接引脚一一对应,分别为SWC-->SWCLK、SWD-->SWDIO、GND-->GND,如下图所示:

将JLINK插上电脑的USB接口,连接好之后给手机主控底板供电,详细的介绍可以参考《如何上电》教程,路径为:..\WT_Mobile\0.从这里开始\0.开机测试。

打开中断实验的Keil工程Simple_INT.uvproj,位于目录:..\WT_Mobile\1.初级教程\DA14580\4.中断实验\中断实验,如下图所示:

在KEIL中编译源代码,点击DEBUG,然后点击全速运行,如下图所示:

全速运行之后,将杜邦线的一头接在3.3V引脚上,另一头碰一下P13引脚,即可进入P13对应的外部中断,执行中断内的程序(点亮LED),碰一下P12引脚,则进入P12对应的外部中断,执行中断中的程序(关闭LED)。注意:因为中断触发方式为边沿触发,碰上之后再断开才有效。

【开源】DA14580-中断实验教程——疯壳·ARM双处理器开发板系列相关推荐

  1. 【开源】DA14580-串口实验教程——疯壳·ARM双处理器开发板系列

    目录 第一节 串口硬件电路 第二节 UART寄存器 2.1 UART介绍 2.2 UART寄存器 2.2.1 接收缓冲寄存器 2.2.2 中断使能寄存器 2.2.3 中断识别寄存器/FIFO控制寄存器 ...

  2. 【开源】DA14580-SPI教程——疯壳·ARM双处理器开发板系列

    目录 第一节 SPI Flash硬件电路 第二节 SPI+寄存器 2.1 SPI+介绍 2.2 寄存器介绍 2.2.1 SPI控制寄存器0 2.2.2 SPI接收/发送寄存器0 2.2.3 SPI接收 ...

  3. 【开源】开发板上电教程——疯壳·ARM双处理器开发板系列

    目录 硬件连接 电池供电 USB口供电 注意: 硬件连接 做完全部的实验,需要有以下模块: WT手机开发板(手机主控底板+手机电容屏模块+FPC_30P排线+GSM天线): 200W摄像头模组: 心率 ...

  4. 【开源】整板资源介绍——疯壳·ARM双处理器开发板系列

    目录 1.主控MCU 2.SRAM 3.摄像头接口 4.按键 5光明电阻 6.振动马达 7.SIM900A 8.充电芯片 9.USB接口 10.手机MIC 11.加速度传感器 12.耳机插孔 13.S ...

  5. 【疯壳·嵌入式平板开发教程5】手把手教你做平板电脑-触摸屏驱动实验教程

    触摸屏驱动实验教程 --疯壳·嵌入式平板开发 第一节 input 输入子系统简单介绍 --- rockchip_gslX680_rk3168.c 触摸屏驱动注册到 input 子系统中后要遵循的框架结 ...

  6. 【开发教程5】疯壳·ARM功能手机-串口实验教程

    ARM功能手机 --疯壳·开发板系列 串口实验教程 图1 第一节串口硬件电路 串口通过USB口及手环下载调试线引出,连接MCU的P12与P13引脚,如下图所示: 图2 第二节 UART寄存器 2.1 ...

  7. 【教程3】疯壳·ARM功能手机-整板资源介绍

    ARM功能手机 --疯壳·开发板系列 整板资源介绍 图1 1.主控MCU   主控MCU选用STM32F407ZGT6,为Contex-M4内核,集成FPU和DSP指令,内部有1M Flash,192 ...

  8. 【开发教程3】疯壳·ARM功能手机-整板资源介绍

    ARM功能手机 --疯壳·开发板系列 整板资源介绍 图1 1.主控MCU   主控MCU选用STM32F407ZGT6,为Contex-M4内核,集成FPU和DSP指令,内部有1M Flash,192 ...

  9. 【开发教程1】疯壳·ARM功能手机-开发板上电教程

    开发板上电教程 ARM功能手机 --疯壳·开发板系列 图1     硬件连接     做完全部的实验,需要有以下模块∶     WT 手机开发板(手机主控底板+手机电容屏模块+FPC 30P排线+GS ...

  10. 【开发教程2】疯壳·ARM功能手机-测试程序介绍

    ARM功能手机 --疯壳·开发板系列 测试程序介绍 图1               内容简介     本文档主要介绍开发板上电之后的现象,以及图标对应的实验介绍.读者在看本文档时,应该已经看过< ...

最新文章

  1. 修改mysql的用户名和密码
  2. sklearn 统计多分类和单分类结果的混淆矩阵API 写法 confusion_matrix 左边为真实值 上边为预测值
  3. golang 变量定义和初始化
  4. 遇见一款很受用的一个工具,推荐给各位程序员
  5. java+向前进一_Java 线程基础
  6. 快递下单后取消订单_网约车定位地点不动,男子别的平台下单,没取消订单要付6.6元...
  7. Nginx Image缩略图模块加强网站运行速度
  8. VS2010中水晶报表安装应用及实例
  9. git安装后设置用户名和密码
  10. 软件测试就业必备知识点自学软件测试-Dotest-2019
  11. 网页制作的基本知识(标签)
  12. 【IIOT】欧姆龙PLC数采之NX/NJ系列
  13. CCPC-Wannafly Winter Camp Day1 (Div2, onsite) A 机器人 分类讨论
  14. 快速理解论文主旨框架:论文十问法
  15. 区块链的分布式网络结构有哪些特点?
  16. var 和int定义变量的问题【C#】
  17. 比特交织 matlab,比特交织空时编码不对称调制方案及软件分析
  18. 岛屿问题 通用解-463.岛屿周长-200.岛屿数量-695.岛屿的最大面积-827.最大人工岛
  19. 数据结构c语言版谭浩强pdf,谭浩强C语言_数据结构.pdf
  20. 【机器学习】--神经网络(NN)

热门文章

  1. 商业数据分析--思路总结
  2. 梦想CAD软件(控件)图层介绍
  3. Excel表格数据如何批量乘以一个数字
  4. Ubuntu下搭建Hadoop分布式集群
  5. 第七章 算术操作指令的实现
  6. 2022年全球程序员平均薪资发布,中国排名很意外
  7. 常用邮箱的SMTP、POP3域名及其端口号
  8. BZOJ2286: [Sdoi2011]消耗战 虚树
  9. latex不显示doi号
  10. NandFlash介绍、操作流程分析以及S5PV210的NandFlash控制器介绍