上一讲,我们通过一个最简单的LED闪烁小实验,熟悉了IAR开发CC2430程序的基本过程。刀好歹磨过了(虽然我这块磨刀石不咋地),现在就开始屠虫了:)。接下来,我们一起来学习几个CC2430的基础实验。每个小实验,分“实验简介”、“程序流程图”,“实验源码及剖析”三个部分阐述。
本篇讲解外部中断。
中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。
中断分外部中断和内部中断,CC2430共包含18个中断源(具体中断描述及中断向量的定义,可参考《CC2430中文手册》)。
现在我们来看一下本开发板的电路图:
开发板上已把S1按键与P0.1相连,本实验想要达到的效果就是,通过按键S1触发P0.1的中断,进而在中断服务子程序中控制LED1的亮/灭。
实验流程图如下:
首先初始化统时钟:选用32MHz晶体振荡器。
然后初始化LED:设置P1为通用I/O口,设置 P1.0 ~ P1.3 方向为输出,然后关闭4个LED灯。
再来配置外部中断的相关SFR寄存器,开启各级中断使能,涉及3个SFR:EA、IEN1、PICTL(各SFR详细介绍请查阅《CC2430中文手册》):
EA —— 总中断使能;
IEN1.5 —— P0中断使能;
PICTL.3 —— P0.1口中断使能;
PICTL.0 —— 设置P0.1口输入下降沿引起中断触发。
然后在主函数中使用 while(1) 等待中断即可。
本篇介绍了基于CC2430的简单的外部中断的实现方法,有了中断的基础之后,接下来我们介绍另外一个非常重要的模块——定时器。CC2430共有4个定时器,可分三类:定时器1、定时器2、定时器3/4(3与4的用法基本一样)。
欢迎光临 智能创客,中国最大的极客空间,智能平台,免费教学,视频教程,手把手教你创造儿时梦想! (http://luntan.znck007.com/) | Powered by Discuz! X3.2 |