X
首页
技术
模拟电子
单片机
半导体
电源管理
嵌入式
传感器
最能打国产芯
应用
汽车电子
工业控制
家用电子
手机便携
安防电子
医疗电子
网络通信
测试测量
物联网
最能打国产芯
大学堂
首页
直播
专题
TI 培训
论坛
汽车电子
国产芯片
电机驱动控制
电源技术
单片机
模拟电子
PCB设计
电子竞赛
DIY/开源
嵌入式系统
医疗电子
颁奖专区
【厂商专区】
【电子技术】
【创意与实践】
【行业应用】
【休息一下】
最能打国产芯
活动中心
直播
发现活动
颁奖区
电子头条
参考设计
下载中心
分类资源
文集
排行榜
电路图
Datasheet
最能打国产芯
微控制器 MCU
[原创] [TI首届低功耗设计大赛]+低功耗延时
IC爬虫
2014-11-24 17:55
楼主
延时是很多时候无法回避的,在对功耗要求严苛的应用情景下非用延时不可时,降低延时所MCU自身所使用的功耗也是很有必要的。得力于430在进入低功耗模式
时重新唤醒的时间小于1us,所以可以使用硬件延时的方法节省MCU使用软件延时所浪费的运行功耗。
void TA1_sleep(unsigned int time)
{
TIMER_A_startUpMode(__MSP430_BASEADDRESS_T1A3__, TIMER_A_CLOCKSOURCE_ACLK, TIMER_A_CLOCKSOURCE_DIVIDER_8,
time, TIMER_A_TAIE_INTERRUPT_DISABLE, TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE,
TIMER_A_SKIP_CLEAR);
__bis_SR_register(LPM3_bits + GIE);
__no_operation();
}
上面这段程序使用的是430的外设库函数写的,使用TIMER_A的增计数模式,选择时钟源为ACLK,将ACLK 8分频作为TIMER_A的是时钟,所以TIMER_A每计数一次的时间为1/(ACLK/8)。函数的输入参数time作为重载的定时器的计数值(也就是CCR0的值),开启CCR0的计数溢出中断。配置好这些后进入低功耗模式LPM3中,让MCU休眠。430MCU的进入低功耗模式后外设也是可以继续工作的,在进入LMP3模式下关闭的是SMCLK和ACLK的时钟,ACLK是继续工作的,所以定时器仍旧可以在这个模式下计数。
#if defined (__TI_COMPILER_VERSION__) || defined (__IAR_SYSTEMS_ICC__)
#pragma vector=TIMER1_A0_VECTOR
__interrupt void TA1_ISR(void)
#elif defined(__GNUC__)
void TA1_ISR(void) __attribute__((interrupt(TIMER1_A0_VECTOR)));
void TA1_ISR(void)
#else
#error Compiler not supported!
#endif
{
TIMER_A_disableCaptureCompareInterrupt(__MSP430_BASEADDRESS_T1A3__, TIMER_A_CAPTURECOMPARE_REGISTER_0);
TIMER_A_stop(__MSP430_BASEADDRESS_T1A3__);
__bic_SR_register_on_exit(LPM3_bits);
}
调用TA1_sleep函数后,当定时器寄满的次数达到了time后触发中断,执行上面这段程序。这段程序的功能为,首先关闭TMER_A的中断、清理定时器的寄存器,停止TIMER_A计数,然后退出低功耗模式LPM3,延时结束,重新回到原来的程序中执行。
上面这种延时方式是的在延时的时候MCU是休眠的,大大降低了MCU的功耗。但是这种延时的方式也有局限,这将降低MCU的实时性,比如有外设使用了SMCKL或者MCLK的话,使用这个也是将会关闭那个外设的功能。
本帖最后由 IC爬虫 于 2014-11-25 17:11 编辑
点赞
回复评论 (3)
沙发
wgsxsm
非阻塞式的延时还是比较值得推荐的
点赞
2014-11-24 18:59
板凳
IC爬虫
引用:
wgsxsm 发表于 2014-11-24 18:59
非阻塞式的延时还是比较值得推荐的
实际测试了一下,这个延时函数也很准
点赞
2014-11-24 19:57
4楼
凤凰息梧桐
得力于430在进入低功耗模式时重新唤醒的时间小于1us,所以可以使用硬件延时的方法节省MCU使用软件延时所浪费的运行功耗。
这个对低功耗真的很重要
点赞
2014-11-27 11:24
最新活动
报名直播赢【双肩包、京东卡、水杯】| 高可靠性IGBT的新选择——安世半导体650V IGBT
30套RV1106 Linux开发板(带摄像头),邀您动手挑战边缘AI~
安世半导体理想二极管与负载开关,保障物联网应用的稳健高效运行
免费申请 | 上百份MPS MIE模块,免费试用还有礼!
PI 电源小课堂|无 DC-DC 变换实现多路高精度输出反激电源
2024 瑞萨电子MCU/MPU工业技术研讨会——深圳、上海站, 火热报名中
随便看看
ARM学习资料集和
初学DSP 课件
如何去掉WinCE系统中打开对话框程序时候的由小变大的动画效果
51非常实用资料
关于IAR使用的疑惑
protues在win7(32位)家庭版怎么安装?安装出现如图情况我该怎么办?求高手指点!
怎样得到系统时间?
PCB小经验集
去耦电容和旁路电容的区别
有木有<<arm 嵌入式系统基础教程>> 这本书啊?
12864
BitBlt的效率问题
熬夜应该吃些什么食物
向大家请教个 时序图问题(增加分享一份资料)
错误调用分析---Verilog案例
MSP430FR57xx Family User's Guide
如何将速度为12MBaud的uart数据传给电脑?
DC-DC 5V转5V,输出达不到5V,请高手帮忙看看,谢谢,急!!!
《51单片机自学笔记》pdf
为什么氮化镓【GaN】器件【G级是负压供电】
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
京公网安备 11010802033920号
回复
写回复
收藏
回复