CC2540开发板学习笔记(三)——外部中断
一、实验内容
通过外部中断方式依次按下按键S1控制LED1的亮灭
二、实验过程
1、电路原理图同上

2、中断的概念
比如说我们在执行main函数时,突然来了个指令。优先级比现在执行的main还高,那我们便选择跳过去执行优先级高的,完了之后再执行main函数,中断就类似这样一个概念,使用中断可以减少CPU的无效浪费,降低能耗。
3、寄存器调度
(1)LED1的初始化。。同前两节,就是SEL,DIR,INP三个,还有附初始状态。
(2)外部中断初始化(S1的外部中断初始化)

按键S1外部中断初始化方法:
| P0IEN = 0X01; | P00 设置为中断方式 |
| PICTL = 0X01; | 下降沿触发 |
| IEN1 = 0X20; | 允许P0口中断;(S1中断) |
| P0IFG = 0x00; | 初始化中断标志位 |
开中断时,还要开启中断总闸
EA = 1; //开总中断
4、代码实现(AIR环境下)
#include<ioCC2540.h> #define LED1 P1_0 //定义LED1,方便查阅代码
#define KEY1 P0_0 //定义按键S1 //函数声明
void Delayms(unsigned int t); //延时函数,当我们按下S1的时候,开发板会检测到无数个触发沿,对此,在不用中断
//的条件下,只能使用延时,过滤掉多余的不必要的触发沿。
void Init();//初始化函数 void Delayms(unsigned int t) //控制t被的延时周长
{
unsigned int i,j;
for(i=t;i>0;i--)
{
for(j=1;j<500;j++);
}
} void Init()//初始化函数
{
P1SEL = 0X00; //实现LED的初始化
P1DIR = 0X01;
P1INP = 0X00;
LED1 = 0; P0IEN = 0X01; //开P0的中断
PICTL = 0X01; //下降沿触发
IEN1 = 0X20; //允许P0中断
P0IFG = 0X00; //清空标志位
EA=1; //开启中断总闸
} #pragma vector = P0INT_VECTOR //格式:#pragma vector = 中断向量. 紧接着是中断处理程序
__interrupt void fu(void)
{
Delayms(10); //除抖动
LED1=~LED1;
P0IFG=0; //清除中断标志
} void main(void)
{
Init();
while(1)
{
}
}
三、实验结果
CC2540开发板学习笔记(三)——外部中断的更多相关文章
- CC2540开发板学习笔记(五)——串口通信
(一)串口发送 一.实验现象: 开发板实现功能发送 二.实验过程 1.PL2303 USB转串口电路图 2.串口发送 (1)查看用户手册有: UART0 对应的外部设备 IO 引脚关系为: P0_2 ...
- CC2540开发板学习笔记(七)—— 睡眠唤醒
(一)中断唤醒 一.实验内容 通过中断唤醒在睡眠模式下的CC2540 二.实验原理 1.系统电源管理(工作方式) (1)全功能模式: 高频晶振(16M或者32M)和低频晶振(32.768K RCOSC ...
- CC2540开发板学习笔记(二)——按键
一.实验内容 用按键S1控制LED1的亮和灭 二.实验过程 1.电路原理: 可以看出,当S按下P0.0和P0.1接地,反之则接高电压. 2.寄存器使用: 依旧应该首先进行3个基本寄存器的设定,对LED ...
- CC2540开发板学习笔记(九)—— BLE协议简介
一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...
- CC2540开发板学习笔记(六)——AD控制(自带温度计)
一.实验目的 将采集的内部温度传感器信息通过串口发送到上位机 二.实验过程 1.寄存器配置 ADCCON1(0XB4)ADC控制寄存器1 BIT7:EOC ADC结束标志位0:AD转换进行中 ...
- CC2540开发板学习笔记(一)——LED点亮
一.实验内容: 点亮LDE1.2 二.实验原理: 1.电路原理图: 就一个发光二极管串联一个电阻.电阻是为了防止电流过大.利用发光二极管的单向导电性,在P1为高电平是点亮LED,在低电平是熄灭LED. ...
- CC2540开发板学习笔记(四)——定时器
一.实验内容 分别使用定时器T1和T3使得LED周期性闪烁 二.实验过程 1.定时器T1(查询IRCON来控制) (1)需要调配的寄存器 T1CTL(0XE4) Timer1控制寄存器 BIT3, ...
- CC2540开发板学习笔记(八)—— 看门狗
一.功能: 防止程序跑飞,使得系统重新进入工作状态,即一种复位操作吧. 但需要不停地喂狗= =(就是不断的执行某种操作),假如说你的程序跑到了不知道哪里去的错误时,即不会实现喂狗,就会发生复位,程序就 ...
- 【转帖】4412ARM开发板学习笔记(一)
本文转自迅为论坛:http://www.topeetboard.com 新手在进行开发学习前,建议先看01-迅为电子开发板入门视频.对开发板和开发环境有一定的了解后,不要盲目接线开机.以下是个人的一点 ...
随机推荐
- WPF 窗口在右下角出现,识别分辨率
直接上代码. Point brp = SystemParameters.WorkArea.BottomRight;//当前桌面右下角的位置
- 项目中用到的window.showModalDialog(来自网络)
window.showModalDialog相关: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showMo ...
- jQuery特效
基础特效 方法 描述 hide() 立即隐藏jQuery对象内的所有元素 hide(time).hide(time, easing) 在指定的时间内以动画方式隐藏jQuery对象内的所有元素,并可选一 ...
- ExtJS学习之路第二步:Ext.Component 和 Ext.dom.Element 的区别
让我们来初步的探讨下Ext.Component和Ext.Element的区别. jQuery偏重于DOM元素的操作 1.每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的D ...
- vmware, failed to lock the file
电脑死机,进不了桌面,实在不行就重启,但是在运行着虚拟机,重启后打开VMware虚拟机,提示failed to lock the file,进不去了,急阿,里面不少资料呢...问万能的Google,终 ...
- 避免使用CSS表达式
http://www.cnblogs.com/chenxizhang/archive/2013/05/01/3053439.html 这一篇我来和大家讨论个原则:Avoid CSS Expressio ...
- vim常用指令及快捷键(持续更新)
(这些文章都是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) 发现了个非常赞的网站 http://openvim.com/ 以下很多操作都是安装好vund ...
- c3p0数据库连接池
C3P0: 一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. 默认情况下(即没有配置连接池的 ...
- Cocos2d 学习资料推荐
总算找到了一本介绍cocos2d的好书,注意,不是cocos2d-x!这本书叫 <cocos2d 权威指南> 定价99元,淘宝60多元,详细介绍了cocos2d的各个方面!不过你需要有oc ...
- 理解和解决MySQL乱码问题
本文将详细介绍MySQL乱码的成因和具体的解决方案 在阅读本文之前,强烈建议对字符集编码概念还比较模糊的同学 阅读下博主之前对相关概念的一篇科普:十分钟搞清字符集和字符编码 MySQL出现乱码的原因 ...