历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2020年01月07日 | Msp430定时器的介绍及其基本应用

2020-01-07 来源:eefocus

Msp430单片机一共有5种类型的定时器。


看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit Timer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)。但是这些模块不是所有msp430型号都具有的功能。


1、看门狗定时器(WDT)


学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。


msp430中它是一个16位的定时器,有看门狗和定时器两种模式。


2、基本定时器(Basic Timer1)


基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。它可以只两个8位定时器,也可以是一个16位定时器。


3、8位定时器/计数器(8-bit Timer/Counter)


如其名字所示,它是8位的定时器,主要应用在支持串行通信或数据交换,脉冲计数或累加以及定时器使用。


4、16位定时器A和B


定时器A在所有msp430系列单片机中都有,而定时器B在msp430f13x/14x和msp430f43x/44x等器件中出现,基本的结构和定时器A是相同的,由于本人最先熟悉并应用的是定时器A所以在这里就主要谈一下自己对定时器A的了解和应用。


定时器A是16位定时器,有4种工作模式,时钟源可选,一般都会有3个可配置输入端的比较/捕获寄存器,并且有8种输出模式。通过8种输出模式很容易实现PWM波。


定时器A的硬件电路大致可分为2类功能模块:


一:计数器TAR


计数器TAR是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断TAIFG。


二:比较/捕获寄存器CCRX


如何实现定时功能呢?这就要靠三个比较/捕获寄存器了(以后用CCRx表示)。


当计数器TAR的计数值等于CCRx时(这就是捕获/比较中的比较的意思:比较TAR是否等于CCRx),CCRx单元会产生一个中断。依据中断即可得到相应的定时时间了。


这样我们可以通过定时器A得到三个定时时间了。


一:程序示例


我先给出我的一个应用程序,然后通过程序来书名定时器A的基本用法。程序如下:


/****************************************************

*             定时器初始化

****************************************************/

void init_TimerA ( void )

{

 CCTL0 = CCIE; //1:开启比较器0中断

 CCR0 = 32768; // 2:定时时间的选取


其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s

CCTL1 = CCIE; // 开启比较器1中断

CCR1 = 100; // 3.66mS显示延迟

 TACTL = TASSEL_1 + MC_1; // 3:选择时钟源和计数模式


时钟源为ACLK并且为增计数模式 


LPM3; //进入低功耗3  

}


/****************************************************

*           定时器0中断

****************************************************/

#pragma vector = TIMERA0_VECTOR

__interrupt void Timer_A0(void)

{


//用户代码 TACCR0

}


/****************************************************

*            定时器中断

*****************************************************/

#pragma vector = TIMERA1_VECTOR

__interrupt void Timer_A1 ( void )

{

 switch( TAIV )

 {

   case  2: //用户代码 break; // TACCR1


   case  4://用户代码 break; // TACCR2


   case 10://用户代码 break; //TAIFG

 }  


//根据需要是否要退出低功耗模式

LPM3_EXIT;                     // 退出低功耗

}


二:程序分析


1):看程序中的定时器初始化模块。


1:CCTL0 = CCIE;


CCTLx是相应比较/捕获寄存器的控制寄存器,它可对比较/捕获寄存器进行设置。


这语句的意思是:开启了CCR0的中断使能,当计数器TAR计数到CCR0时产生中断。


2:CCR0 = 32768;


CCRx就是相应比较器的值。


其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s定时。


3:TACTL = TASSEL_1 + MC_1;


TACTL是计数器的控制寄存器。


TASSEL_x是时钟源的选择。


0——TACLK,使用外部引脚信号作为输入


1——ACLK,辅助时钟


2——MCLK,系统主时钟


3——INCLK,外部输入时钟


MC_x是选择TAR的工作模式选择位。对TACTL进行模式设置的同时也开启了定时器,要停止只需把MC_0赋值给TACTL就可以。


0——停止模式,用于定时器的暂停


1——增计数模式,计数器计数到CCR0,再清零计数


2——连续计数模式,计数器增计数到0xffff,再清零计数


3——增/减计数模式,增计数到CCR0,再减计数到0


所以这个计数器工作在UP模式,时钟源为ACLK。


2):看程序中的定时器中断模块。


在UP或者UP/DOWN模式时,通过改变CCR0的值可以改变计数器TAR的最大计数值,也就是当计数器计数到CCR0的值时自动会将计数器清零。因为CCR0比较特殊,所以CCRO0的中断向量与CCR1,CCR2,TA所共有的中断向量不同。


CCR0的中断很容易只需在函数中加上自己的中断相应程序就行。但是CCR1和CCR2是公用一个中断函数的,所这就需要识别到底是哪个中断,这可以通过一个寄存器TAIV来识别,


2——比较/捕获寄存器1中断


4——比较/捕获寄存器2中断


10——定时器溢出


0——没有中断


三:注意事项


需要注意的是在增计数模式时CCR1和CCR2的值应该小于CCR0,否则CCR1和CCR2不会产生中断。


并且每次CCR1和CCR2中断后要把它们重新赋值这样才能保证CCR1和CCR2的中断间隔时间不变。


类似语句如下:


CCR1 += 100;                  

    if ( CCR1 >= 32768 )

      CCR1 -= 32768;


以上就是定时器A的最基本的应用了,以后会结合实际的应用来具体说明的。

推荐阅读

史海拾趣

EOS POWER INDIA Pvt公司的发展小趣事

在追求经济效益的同时,EOS也注重可持续发展和环保责任。公司积极采用环保材料和绿色生产工艺,降低生产过程中的能耗和排放。EOS还投入资金建设了环保设施,确保生产过程中的废弃物得到有效处理。此外,公司还积极参与环保公益活动,推动电子行业的绿色发展。这些举措不仅体现了EOS的社会责任感,也为公司的长期发展奠定了坚实的基础。

Hosiden Corporation公司的发展小趣事

在追求经济效益的同时,Hosiden也始终关注可持续发展和社会责任。公司致力于通过技术创新和绿色生产等方式,降低对环境的影响并促进资源的循环利用。此外,Hosiden还积极参与社会公益事业和慈善活动,为社会的发展和进步贡献了自己的力量。这些举措不仅提升了公司的社会形象和品牌价值,也为其在电子行业的长远发展奠定了坚实基础。

AR RF/Microwave Instrumentation公司的发展小趣事

AR RF/Microwave Instrumentation的创立源于对射频和微波技术的深入研究和理解。公司创始人在行业内具有丰富的经验,他们看到了这一领域的巨大潜力,并决定成立一家公司来专门研发和生产相关的仪器设备。起初,公司规模较小,但凭借高质量的产品和专业的服务,逐渐在行业内赢得了声誉。

Bliley Technologies Inc公司的发展小趣事

二战期间,Bliley迎来了其历史上的一个重要时刻。由于战争对通信设备的巨大需求,Bliley的产品成为军事通信领域的关键组件。政府的大量采购合同使得Bliley的销售额直线上升,员工数量也急剧增加。为了满足战争期间的巨大需求,Bliley不得不扩建工厂,并实行昼夜不停的生产制度。这段时期,Bliley不仅在军事通信领域取得了显著成就,同时也为其在战后的发展奠定了坚实基础。

Easy Braid公司的发展小趣事

Easy Braid公司,从一家名不见经传的小型电子制造商起家,其发展的故事始于一次技术创新。在公司成立初期,面对市场上繁多的线缆管理方案,Easy Braid的创始人意识到传统方法的局限性,于是带领团队研发了一种新型的线缆编织技术——Easy Braid技术。这种技术不仅提高了线缆的耐用性和美观度,还大大简化了安装过程。随着这一技术的推出,Easy Braid开始逐渐在电子行业中崭露头角。

华宇创公司的发展小趣事

面对不断变化的市场环境和客户需求,华宇创始终将创新作为企业发展的核心动力。公司不断投入研发资源,探索新的技术方向和应用场景。同时,华宇创还关注行业发展趋势和未来市场需求,及时调整产品策略和市场布局。展望未来,华宇创将继续秉承创新、品质、合作的理念,致力于成为全球领先的智能电子设备供应商和服务商。

问答坊 | AI 解惑

求:各车厂诊断协议

如果哪位朋友有车厂的诊断协议,价格合适的话我们可以谈一下。QQ&Email:177096907@QQ.com,谢谢!…

查看全部问答>

matlab从头开始学习

打开的matlab的编程界面! 如图所示,对于刚刚开始的就从command windows开始输入比较好~ 对于刚刚开始可以做一些简单的计算说明的啦,找点感觉什么的啦!…

查看全部问答>

【24岁了,做个精致的电子工程师】

【24岁了,做个精致的电子工程师】 作者:菁菁木华 【24岁了,做个精致的电子工程师】 菁菁木华 发表于 2005-10-28 14:43 人才聘任      今天是我24岁的生日,很想写篇文章了纪念一下,稀里糊涂毕业15 ...…

查看全部问答>

16bit比较器

求16bit大小比较器源码,VHDL,用if语句是不是比较慢啊?想用对应位异或,然后找最高位的1和二者异或这种方法。 请问想找16bit中最高位的1,最简单的方法是什么?谢谢…

查看全部问答>

s3c2440定时器的操作

在我的系统中timer4中断服务程序用来调用OSTimeTick() 我在创建的任务中初始化了timer4的 rINTMSK    &= ~(BIT_TIMER4); pISR_TIMER4 = (int)Timer4ISR;                 &nb ...…

查看全部问答>

GPRS拨号上网的ppc之间建立sockets连接的问题

两个一样的ppc(windows mobile 5.0)分别用GPRS方式拨号上网(cmnet),可分别获得移动内网动态IP,形如10.XX.XX.XX。当用其中一个ppc(client)连接adsl拨号上网的电脑(server)时(用sockets侦听对应端口),是可以建立连接的,且server能收到p ...…

查看全部问答>

【MSP430共享】智能远程温湿度监测系统的设计

介绍了一种通用的温湿度测量系统的设计,提出了以高集成度的温度湿度传感器 S H T 7 1 作为数据采集模块 . 以MS P 4 3 0 F 4 4 9为控制核心的多点测量系统的设计方案, 该 系统具有低成本、 低功耗、 高可靠性、 抗干扰能力强等特点, 根据不同需 ...…

查看全部问答>

程序跑偏了。。。

程序运行中,有些函数不运行,直接跳过去,是怎么回事?下面是个最简单的程序了,只读X轴数据,在SPI_GetX();其中SPI_Write2Bytes(0x1000); 这句就不执行 直接跳过去了。。。 #include\"sca3060.h\" #include<math.h>#include<intrins.h># ...…

查看全部问答>

谈谈选择测试仪器的几个重要指标

以数字示波器为例,很多用户可能都知道示波器的一些传统的指标,比如带宽,采样率,存储深度等等,甚至出现在选型的时候根据指标”比数大小”,以为数大的就比数小的好 ---其实不然!要想真正了解数字示波器,就必须深入洞察隐藏在标称的指标背后的产品的真 ...…

查看全部问答>