1580|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

MSP430的各种类型的定时器和时钟 [复制链接]

MSP430提供各种类型的定时器和时钟,可配置为无需CPU干预即可运行。当需要延迟时,可以利用其中一个定时器外设来产生这种延迟,而CPU不会保持活动状态。该方法显着降低了设备的功耗。这些定时器可使MSP430微控制器保持低功耗模式,直到定时器唤醒CPU。

风险,严重程度
在微控制器中,CPU是整体功耗的最大贡献者。当应用程序执行延迟时,如果CPU保持活动模式,则会浪费大量的功率和能量。

为什么会这样
当在项目中的任何代码文件中发现延迟时,将发出此注释。
检查代码中是否包含仅包含以下任一行的循环,而不包含任何其他代码:

 __no_operation();
 _NOP();
任何空循环。例如:

 volatile int i = MAX_VALUE;
 而(i--> 0);
 出现这种情况://上述问题所在
 __delay_cycles(NUMBER_OF_CYCLES);
补救
利用其中一种MSP430低功耗模式,并使用MSP430器件中的一个定时器模块在一段时间后唤醒。
代码示例
 // ********* ******************************
 // MSP430G2xx3演示 -  Timer_A,切换P1.0,CCR0续。模式ISR,DCO SMCLK
 //
 //描述:使用软件和TA_0 ISR切换P1.0。切换每一个
 // 50000个SMCLK周期。 SMCLK为TACLK提供时钟源。
 //在TA_0 ISR期间,切换P1.0并添加50000个时钟周期
 // CCR0每50000个周期触发TA_0 ISR。 CPU通常是关闭的
 //仅在TA_ISR期间使用。
 // ACLK = n / a,MCLK = SMCLK = TACLK =默认DCO
 //
 // MSP430G2xx3
 // ---------------
 // / | \ | XIN |  - 
 // | | |
 //  -  | RST XOUT |  - 
 // | |
 // | P1.0 |  - > LED
 //
 // D. Dang
 #include <msp430g2553.h>
 void main(void)
 {
   WDTCTL = WDTPW + WDTHOLD; //停止WDT
   P1DIR | = 0x01; // P1.0输出
   CCTL0 = CCIE; //启用CCR0中断
   CCR0 = 50000;
   TACTL = TASSEL_2 + MC_2; // SMCLK,contmode
 
   _BIS_SR(LPM0_bits + GIE); //输入LPM0 w / interrupt
 }
 
 //定时器A0中断服务程序
 #pragma vector = TIMER0_A0_VECTOR
 __interrupt void Timer_A(void)
 {
   P1OUT ^ = 0x01; //切换P1.0
   CCR0 + = 50000; //将偏移添加到CCR0
 }

 

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表