- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3《十天学会LM4F232,玩转CORTEX M4
青风QF-LM4F232 V1.0开发手册
3.3 按键输入与中断控制
3.3.1 原理分析:
3.3.2 硬件设计:
3.3.3 软件设计:
3.3.4 程序下载及使用说明:
3.3.1 原理分析:
按键的输入其实就是对 GPIO 口进行操作。3.1 节就对 GPIO 的就进行了初步介绍,下面
我们主要通过 GPIO 口的变化触发外部中断,来控制 LED 灯的状态。
中断是指由于接收到来自外围硬件(相对于中央处理器和内存)的异步信号或来自软件
的同步信号,而进行相应的硬件/软件处理。发出这样的信号称为进行中断请求(interrupt
request,IRQ)。硬件中断导致处理器通过一个上下文切换(context switch)来保存执行
状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为 CPU指令集中
的一个指令,以可编程的方式直接指示这种上下文切换,并将处理导向一段中断处理代码。
中断在计算机多任务处理,尤其是实时系统中尤为有用,这样的系统,包括运行于其上
的操作系统,也被称为“中断驱动的”。简单的来说就比如某个人正在做某事,突然来了个
电话,他就要停下手中的事情去接电话,中断相当于这个电话。触发中断后跳出原来运行的
程序去执行中断处理。首先这里我们先来学习软件中断:GPIO 中断处理。以后再其他功能
中在探讨其他事件中断。
3.3.2 硬件设计:
中断处理电路十分简单,下图就是我们在 QF-LM4F232 开发板上设计的用户中断按键,采
用 5 向按键,同时提供了 5 个用户按键。
电路设计的时候都是按键接一个上拉电阻,提供给驱动能力因为我们设置按键端口是输
入功能,考虑到输入功能的驱动能力,电路设计的时候一般加上拉电阻。
3.3.3 软件设计:
学习 LM4F 系列中断时,我们可以一边回想单片机中断系统一边探讨。这里的思路就与
单片机类似:当按下按键时,电平变动,使用上升或下降沿触发中断,然后执行中断处理事
件,必然翻转 LED 的亮灭,这里我们可以通过实现这个简单是功能来对 LM4F 中断进行入门。
I
青风QF-LM4F232 V1.0开发手册
对于单片机来说,很简单,开中断即可。但 LM4F 却有所不同。LM4F 系列中断需要设置具体
中断的类型或触发方式,不同片内外设具体中断的类型或触发方式也各不相同。在使能中断
之前,必须对其进行正确的设置。以 GPIO 为例,分为边沿触发、电平触发两大类,共 5 种.
基本库函数介绍:
1.GPIOIntTypeSet( )设置指定管脚的中断类型。
函数原型:
void
GPIOIntTypeSet(unsigned long ulPort,
unsigned char ucPins,
unsigned long ulIntType)
参数:
ulPort是 GPIO 端口的基址。
ucPins 是特定管脚的位组合(bit-packed)表示。
ulIntType 指定中断触发机制的类型。
描述:
这个函数为所选 GPIO 端口上特定的管脚设置不同的中断触发机制。
参数 ulIntType 是一个枚举数据类型,它可以是下面其中的一个值:
GPIO_FALLING_EDGE ; GPIO_RISING_EDGE ; GPIO_BOTH_EDGES ;
GPIO_LOW_LEVEL; GPIO_HIGH_LEVEL。
在上面的值中,不同的值描述了中断检测机制(边沿或电平)和特定的触发事件(边沿
检测的上升沿、下降沿或上升/下降沿,电平检测的低电平或高电平)。管脚用一个位组合
(bit-packed)的字节来指定,这里的每个字节,置位的位用来识别被访问的管脚,字节的
位 0 代表GPIO 端口管脚0、位 1 代表GPIO 端口管脚 1 等等。
2.IntMasterEnable( )使能处理器中断
原型
tBoolean IntMasterEnable(void)
参数
无
返回
如果在
文档评论(0)