ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:250.77KB ,
资源ID:5242553      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5242553.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(睡眠及唤醒Word文档下载推荐.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

睡眠及唤醒Word文档下载推荐.docx

1、2s后被睡眠定时器唤醒为PM0 进入PM3 等待按键S1按下,触发外部中断,被唤醒为PM0(2)程序流程图(注:上图中的圆角框表示系统的运行状况)(3)实验源码及剖析(下面的框框是可以点的)头文件及宏定义 /* 实验说明:中断唤醒睡眠实验,分别介绍三种睡眠模式下的唤醒*/#include #define LED_ON 0#define LED_OFF 1#define led1 P1_0 #define led2 P1_1 #define led3 P1_2 #define led4 P1_3 子函数 /*系统时钟初始化-*/void xtal_init(void) SLEEP &= 0x04

2、; /都上电 while(!(SLEEP & 0x40); /晶体振荡器开启且稳定 CLKCON &= 0x47; /选择32MHz 晶体振荡器 SLEEP |= 0x04;/*LED初始化void led_init(void) P1SEL = 0x00; /P1为普通 I/O 口 P1DIR |= 0x0F; /P1.0 P1.1 P1.2 P1.3 输出 led1 = LED_OFF; /关闭所有LED led2 = LED_OFF; led3 = LED_OFF; led4 = LED_OFF;/*外部中断初始化void io_init(void) P0INP &= 0X02; /P0.

3、1有上拉、下拉 EA = 1; /总中断允许 IEN1 |= 0X20; / P0IE = 1,P0中断使能 PICTL |= 0X09; /P0.1允许中断,下降沿触发 P0IFG &= 0x02; /P0.1中断标志清0/*睡眠定时器中断初始化void sleepTimer_init(void) STIF=0; /睡眠定时器中断标志清0 STIE=1; /开睡眠定时器中断 EA=1; /开总中断/*设置睡眠定时器的定时间隔void setSleepTimer(unsigned int sec) unsigned long sleepTimer = 0; sleepTimer |= ST0;

4、 /取得目前的睡眠定时器的计数值 sleepTimer |= (unsigned long)ST1 8; sleepTimer |= (unsigned long)ST2 16); /设置睡眠定时器的比较值 ST1 = (unsigned char)(sleepTimer 8); ST0 = (unsigned char)sleepTimer;/*选择电源模式void PowerMode(unsigned char mode) if(mode4) = 0xfc; /将SLEEP.MODE清0 SLEEP |= mode; /选择电源模式 PCON |= 0x01; /启用此电源模式 /*延时函

5、数void Delay(unsigned int n) unsigned int i,j; for(i=0;in;i+) for(j=0;j0 ) /按键中断 P0IF = 0; /P0中断标志清0 /开中断/*睡眠定时器中断服务程序#pragma vector= ST_VECTOR_interrupt void sleepTimer_IRQ(void) EA=0;关于如何使用睡眠定时器来唤醒系统,可以总结为如下流程:开睡眠定时器中断 设置睡眠定时器的定时间隔 设置电源模式“设置睡眠定时器的定时间隔”这一步一定要在“设置电源模式”之前,因为进入睡眠后系统就不会继续执行程序了)接下来,我们重点关

6、注一下设置睡眠定时器定时间隔的子函数:setSleepTimer首先对睡眠定时器简单的介绍一下:它是运行于32.768kHz的24位定时器,当系统运行在除了PM3之外的所有的电源模式下,睡眠定时器都会不间断运行。睡眠定时器使用的寄存器有:ST0,ST1,ST2。下面是摘自CC2430中文手册对其功能的详细介绍:可以看出,它们的功能包括两方面:读,写。读:用于读取当前定时器的计数值,读的顺序必须遵循:读ST0 读ST1 读ST2写:用于设置定时器的比较值(当定时器的计数值=比较值时,产生中断),写的顺序必须遵循:写ST2 写ST1 写ST0OK,接下来我们结合源码来讲解:(1)首先,定义一个un

7、signed long型变量(32位)sleepTimer,用于接收睡眠定时器的当前计数值:(2)然后加上所需要的定时间隔:此处需要稍微解释一下:为什么1s就代表着32768?因为定时器是工作在32.768kHz之下,所以定时器每加1,需耗时1/32768 s;加32768,就需要1s;(3)最后将sleepTimer的值作为定时器的比较值:这样,就可成功设置定时器的定时周期啦至于源码的其他部分,相信结合着详细的注释,大家可以轻松看懂,在此不作赘述)(4)实验结果运行程序,观察LED1,现象为:LED1闪烁(即亮-灭1次),1s后再次闪烁,2s后再次闪烁,然后保持熄灭状态,然后按下S1,LED

8、1亮。实验现象和预期完全吻合,Over三、结语吁 抽出2天的课余时间,终于搞定了这篇日志。真的发现写博,特别是写一篇“读者友好”的博文,的确是一项体力活:严谨性、美观性、逻辑性.都是要考虑的事儿。每次贴代码都嫌太长,但又不太愿意使用博客园自带的折叠工具。因此在本篇博文中,笔者试探性的加入了一些JQuery元素,实现了代码的平滑折叠,还是有小小的成就感嘀,呵呵(JQuery菜鸟,高手勿笑)。但当局者迷,我并不知这样做是否真正增强了文章的可读性,欢迎读者朋友作出评论 :)这一个月,笔者真正决定在博客园扎下根来,于是花费了大量的课余时间在博文的写作上。初次写博,虽然评论很少,但大部分日志都有500以上的点击率,也算是对我的小小的鼓励!在博客园发表关于单片机的内容,的确需要勇气,不过我会坚持写下去的从开始到现在的九篇博文,重点是CC2430芯片上的基本硬件模块的运用。到此为止,我们基本上把CC2430上的大部分外设都过了一遍,但是还有比如Flash存取、随机数发生器、AES协处理器、射频通信等,还没涉及到。不过Zigbee之旅并未结束,笔者打算在下一个主题(Z-Stack协议的实现)中,再来有选择性的把这些遗漏之处补齐。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2